1

Ektorpを使用してホストされているCloudantデータベースに接続する方法をクリックしていません。私は新しいm2eclipseMaven統合を介してEclipseでEktorp1.1を使用しています(これはかなり甘いです)。javadocs以外の優れたCouchDB/Cloudant/Ektorpドキュメントを見つけるのに苦労しています。

メインページからサンプルのEktorpAPIの例を機能させようとしています。

HttpClient httpClient = new StdHttpClient.Builder()
                                    .host("localhost")
                                    .port(5984)
                                    .build();

CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
CouchDbConnector db = new StdCouchDbConnector("mydatabase", dbInstance);

db.createDatabaseIfNotExists();

httpClientの構築に何を使用するかは関係ありません。常に、以下のUnknownHostExceptionエラーが発生します。ホスト用に次のURLを試しました:https / http://cloudant.com/db/_sessionおよびhttps / http:// [username] .cloudant.com

ポート番号はどうですか?ユーザー名とパスワードをStdHttpClient.Builder()に含める必要がありますか?

これが完全なエラーです-createDatabaseIfNotExists()呼び出しで失敗しますが、CouchDbConnector変数が正しいとは確信していません。

Exception in thread "main" org.ektorp.DbAccessException: java.net.UnknownHostException: https://cloudant.com/db/_session
    at org.ektorp.util.Exceptions.propagate(Exceptions.java:19)
    at org.ektorp.http.StdHttpClient.executeRequest(StdHttpClient.java:104)
    at org.ektorp.http.StdHttpClient.get(StdHttpClient.java:42)
    at org.ektorp.http.RestTemplate.get(RestTemplate.java:21)
    at org.ektorp.impl.StdCouchDbInstance.getAllDatabases(StdCouchDbInstance.java:61)
    at org.ektorp.impl.StdCouchDbConnector.createDatabaseIfNotExists(StdCouchDbConnector.java:256)
    at com.codegouge.examples.App.main(App.java:30)
Caused by: java.net.UnknownHostException: https://cloudant.com/db/_session
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
    at java.net.InetAddress.getAllByName(InetAddress.java:1084)
    at java.net.InetAddress.getAllByName(InetAddress.java:1020)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:126)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    at org.ektorp.http.StdHttpClient.executeRequest(StdHttpClient.java:96)
4

3 に答える 3

3

So I was doing a couple things wrong. Using SSL requires additional parameters. Also, Ektorp 1.1.1 includes SSL-related bug fixes to 1.1.0. So this is my final HttpClient constructor:

HttpClient httpClient = new StdHttpClient.Builder()
        .host("[username].cloudant.com")
        .port(443)
        .username("[username]")
        .password("[password]")
        .enableSSL(true)
        .relaxedSSLSettings(true)
        .build();

Also, be sure to update ektorp's dependency in pom.xml to look for version "1.1.1". I have a blog post covering this exercise here if interested.

于 2011-04-23T21:02:13.797 に答える
1

You also can use the URL to connect with Ektorp:

JSONObject serviceAttr = val.getJSONObject(0);
                        JSONObject credentials = serviceAttr.getJSONObject("credentials");
                        httpClient = new StdHttpClient.Builder()
                        .url(credentials.getString("url"))
                        .build();

That's is easy way to connect. I found a tutorial to connect using Ektorp 1.4.2: http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html

于 2014-09-04T18:46:04.960 に答える
0

私はEktorpにあまり詳しくありませんが、ユーザー名/パスワードをそこに入れる必要があります。次のコードを使用してHttpClientを作成することをお勧めします。

HttpClient httpClient = new StdHttpClient.Builder()
                                    .host("[username].cloudant.com")
                                    .port(443)
                                    .username("[username]")
                                    .password("[password]")
                                    .build();

ポートを443(CloudantがリッスンするHTTPSのデフォルト)に変更し、ユーザー名とパスワードを追加しました。HTTPSを使用することをEktorpに知らせる方法はわかりませんが、運が良ければ内部で処理されます。

于 2011-04-23T14:46:54.697 に答える