WAS Liberty 17.0.0.1不适用于Watson Java SDK

时间:2017-03-20 12:13:12

标签: websphere-liberty watson

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?

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 我在我的docker实例中检查ps,看看JDK是否正确配置了属性:

root@apiqa:/# 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

但问题并没有解决。我没有配置Liberty配置文件来获取系统属性,因此JDK使用-D执行吗? (我使用jvm.properties文件)

3 个答案:

答案 0 :(得分:1)

由于IBM JDK的更改,这是一个已知问题。

我们正在努力(见this)。

解决方法是使用旧的buildpack进行自由或使用不同的JDK。 使用cf push -b liberty-for-java_v3_7-20170118-2046使用适用于SDK的自由版本。

您还可以通过运行:

更改为OpenJDK
cf set-env myapp JVM 'openjdk'

更多信息here

答案 1 :(得分:0)

我的团队也遇到了这个问题。我不是100%肯定,但我们得出的结论是Liberty 17.0.0.1正在使用Java 8,我们认为它不再支持TLS 1.0。您可以看到您尝试连接的服务仅支持TLS 1.0:

“支持的协议= [TLSv1]”

似乎有些Bluemix服务已升级到TLS 1.1,有些则没有。 TLS 1.0显然不是很安全,所以我不肯定,但我相信Java 8不再支持TLS 1.0。这意味着Bluemix服务需要升级到TLS 1.1,否则您需要在以前版本的JVM上运行Liberty。

答案 2 :(得分:-1)

我解决了在Liberty实例上设置OpenJDK 1.8的问题,只需设置env变量JBP_CONFIG_OPENJDK。 在我的情况下,设置memory_sizes以克服与OpenJDK的使用相关的OutOfMemory错误很重要

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

完整参考https://console.ng.bluemix.net/docs/runtimes/liberty/customizingJRE.html