2017-03-20 11 views
0

WAS Liberty Profileの最新バージョンは、com.ibm.watson.developer_cloud:java-sdkを破損しているようです。 私のアプリのイメージを再構築して、最終バージョン17.0.0.1を取得しました。また、watsonのjava-sdkは上記の例外を除いて動作を停止しました。私のDockerfileで16.0.0.4の自由を使ってバージョンを再構築できるようにするために、どのタグを使うのか? ... 17.0.0.1でどうすればいいですか?WAS Liberty 17.0.0.1がWatson Java SDKで動作しない

Caused by: java.net.UnknownServiceException: Unable to find acceptable protocols. isFallback=false, modes=[ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA], tlsVersions=[TLS_1_2, TLS_1_1, TLS_1_0], supportsTlsExtensions=true), ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA], tlsVersions=[TLS_1_0], supportsTlsExtensions=true), ConnectionSpec()], supported protocols=[TLSv1] 
    at okhttp3.internal.ConnectionSpecSelector.configureSecureSocket(ConnectionSpecSelector.java:72) 
    at okhttp3.internal.io.RealConnection.connectTls(RealConnection.java:232) 
    at okhttp3.internal.io.RealConnection.establishProtocol(RealConnection.java:196) 
    at okhttp3.internal.io.RealConnection.buildConnection(RealConnection.java:171) 
    at okhttp3.internal.io.RealConnection.connect(RealConnection.java:111) 
    at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:187) 
    at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:123) 
    at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:93) 
    at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:296) 
    at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 
    at okhttp3.RealCall.getResponse(RealCall.java:243) 
    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201) 
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163) 
    at okhttp3.RealCall.execute(RealCall.java:57) 
    at com.ibm.watson.developer_cloud.service.WatsonService$1.execute(WatsonService.java:179) 
    ... 53 more 

編集: https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.security.component.70.doc/security-component/jsse2Docs/matchsslcontext_tls.html そして、私はJDKのプロパティが正しく設定されていることを確認するために私のドッキングウィンドウのインスタンスにPSをチェックします:ここで説明したように、私は、システムのプロパティを追加しようとしている

[email protected]:/# ps xuww      
USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 4.9 9.4 8512396 3131596 ?  Ssl 17:35 10:32 /opt/ibm/java/jre/bin/java -javaagent:/opt/ibm/wlp/bin/tools/ws-javaagent.jar -Djava.awt.headless=true -Xms950m -Xmx3500m -Dcom.ibm.jsse2.overrideDefaultTLS=true -jar /opt/ibm/wlp/bin/tools/ws-server.jar defaultServer 

しかし、問題はそれで解決されません。 JDKが-Dで実行するようにシステムプロパティを取得するためにLibertyプロファイルを設定していませんか? (私はjvm.propertiesファイルを使用しています)

+0

に関連する、のOutOfMemoryエラーを克服するためにmemory_sizesあなたはで見ることができる開発環境を持っていますか両方のバージョンのハンドシェイクのプロパティ? – covener

+0

あなたの返事をありがとう。私は数日前に完全なドッカーホストの破損の後にドッカーイメージを再構築しなければならなくなりました。私はもう16.0.0.4バージョンを持っていません。そのバージョンのドッカープルを行うことはできないと思われるので、私はもう16.0.0.4でテストすることはできません。ドッカーハブから17.0.0.1を取り出した新しいドッカービルドが動作する前に動作していたことが分かりました。さらに、両方のバージョンのハンドシェイクではどういう意味ですか? okhttp3のログを有効にするにはどうすればよいですか?ありがとう。 – icordoba

+0

(もちろん、16.0.0を引き出す方法を考えることができます。4画像、それは私が17.0.0.1で問題を解決するまで私の会話チャットボットをもたらすでしょう) – icordoba

答えて

0

私のチームもこの問題に遭遇しました。私は100%確信していませんが、Liberty 17.0.0.1がTLS 1.0をサポートしなくなったと考えているJava 8を使用しているという結論に達しました。 Bluemixサービスのいくつかは、TLS 1.1およびいくつかの避難所まで移動しているようだ

「= [TLSv1の]サポートしているプロトコルを」:あなたは、あなただけに接続しようとしているサービスは、TLS 1.0をサポートしていることがわかります't。 TLS 1.0は明らかにあまり安全ではないので、私は肯定的ではありませんが、Java 8はもはやTLS 1.0をサポートしていないと考えています。つまり、BluemixサービスをTLS 1.1にアップグレードする必要があるか、JVMの以前のバージョンでLibertyを実行する必要があります。

+0

OK。私がLiberty 16.0.0.4を生成するために新しいDockerfileを作成しても問題は解決されないので、Libertyバージョンは問題ではないようです。問題は罪のイメージが使用されていると思われる:ibmjava:8-jre。多分IBMはそれを更新し、TLS 1.0をサポートしていません...しかし、ワトソンの会話はTLSを必要とするので、Watson会話APIライブラリクライアントと互換性のあるIBM JREの以前のバージョンに戻る方法を理解する必要があります...私は、ここに結果を投稿してください。 – icordoba

1

これは、IBM JDKの変更により既知の問題です。

私たちはそれに取り組んでいます(this参照)。

回避策は、リバティーまたは別のJDK用に古いビルドパックを使用することです。 cf push -b liberty-for-java_v3_7-20170118-2046を使用して、SDKで動作するリバティバージョンを使用します。

はまた、実行することにより、OpenJDKのに変更することができます。

cf set-env myapp JVM 'openjdk' 

詳しい情報here

+0

Libertyプロファイルの特定のケースでこれを行う方法を知っていますか?私はjvm.propertiesに-Dを使って追加しようとしましたが、うまくいきません。ありがとう。 – icordoba

+0

https://console.ng.bluemix.net/docs/runtimes/liberty/customizingJRE.html#customizing_jreを見てください。あなたは 'IBM_JAVA_OPTIONS'または' JAVA_OPTS'が必要だと思います。 'manifest.yml'でそれらを更新しようとすると、別のバージョンのIBM JDKを指定することもできます –

+0

私はBluemixで直接使用するのではなく、Dockerイメージで使用しています。私はこれを見ます。 – icordoba

-1

私はENV変数JBP_CONFIG_OPENJDKを設定し、リバティインスタンス上でのOpenJDK 1.8を設定し、この問題を解決しました。私の場合は は、また、設定することが重要だった完全なリファレンスについてはOpenJDKの

$ cf set-env myapp JBP_CONFIG_OPENJDK: '[version: 1.8.+, memory_sizes: { metaspace: 256m }]'

の使用https://console.ng.bluemix.net/docs/runtimes/liberty/customizingJRE.html

関連する問題