web-services - 从受 SSL 保护的 WSDL 打开流时出现 ArrayIndexOutOfBoundsException

标签 web-services tomcat ssl indexoutofboundsexception

每次 SSL 保护的 Web 服务调用时,我都会收到一个令人困惑的 ArrayIndexOutOfBoundsException,我不知道是什么原因。异常在一夜之间没有对代码进行任何相关更改,我感到困惑。

任何人都可以提示我如何修复这个糟糕的错误吗?

环境:

  • Tomcat7
  • IBM JDK 6

堆栈跟踪:

com.sun.xml.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException
    at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:132)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:256)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:184)
    at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:137)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
    at com.sun.xml.ws.client.Stub.process(Stub.java:323)
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
    at $Proxy294.liefereKonfiguration(Unknown Source)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.LiefereKonfigurationServiceClientImpl.updateKonfReader(LiefereKonfigurationServiceClientImpl.java:279)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.LiefereKonfigurationServiceClientImpl.initiateUpdate(LiefereKonfigurationServiceClientImpl.java:205)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy293.initiateUpdate(Unknown Source)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.VKPSClientInitializer.initVKPSClient(VKPSClientInitializer.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314)
    at java.util.concurrent.FutureTask.run(FutureTask.java:149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
    at java.lang.Thread.run(Thread.java:736)
Caused by: javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException
    at com.ibm.jsse2.n.a(n.java:27)
    at com.ibm.jsse2.tc.a(tc.java:328)
    at com.ibm.jsse2.tc.a(tc.java:386)
    at com.ibm.jsse2.tc.a(tc.java:278)
    at com.ibm.jsse2.tc.a(tc.java:298)
    at com.ibm.jsse2.tc.startHandshake(tc.java:337)
    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:23)
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:57)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1024)
    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:56)
    at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:120)
    ... 54 more
Caused by: java.lang.ArrayIndexOutOfBoundsException
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsMasterSecretGenerator.engineGenerateKey(Unknown Source)
    at javax.crypto.KeyGenerator.generateKey(Unknown Source)
    at com.ibm.jsse2.gb.b(gb.java:268)
    at com.ibm.jsse2.gb.a(gb.java:131)
    at com.ibm.jsse2.hb.a(hb.java:216)
    at com.ibm.jsse2.hb.a(hb.java:71)
    at com.ibm.jsse2.gb.n(gb.java:142)
    at com.ibm.jsse2.gb.a(gb.java:95)
    at com.ibm.jsse2.tc.a(tc.java:244)
    at com.ibm.jsse2.tc.g(tc.java:206)
    at com.ibm.jsse2.tc.a(tc.java:165)
    ... 60 more

最佳答案

看来您正在使用 IBMJSSE2 Provider用于 SSL 通信。

有一个非常相似的问题已经解决了: http://www-01.ibm.com/support/docview.wss?crawler=1&uid=swg1IV73472

APAR Name: IV73472: LARGE PRE-MASTER SECRET GENERATED FROM 2048 BIT DH KEY NOT DIGESTED IN TLSV1 AND TLSV1.1

Problem summary: When TLSv1 or TLSv1.1 was used, the large pre-master secret generated from 2048 bit DH key was not properly hashed to derive the master secret.

Local fix: Disable cipher suites which uses DH/DHE key exchange.

Problem conclusion: A fix is made to IBMJSSE2 and IBMJCE provider to handle large pre-master secret in TLSv1 and TLSv1.1 The associated Hursley RTC Problem Report is 93670 and 94644 The associated Austin CMVC defect is 116692 and 116765 JVMs affected: Java 6.0, Java 626, Java 7.0, Java 727 and Java 8 The fix was delivered for Java 6.0 SR16FP7, Java 626 SR8FP7, Java 7.0 SR9FP10, Java 727 SR3FP10 and Java 8 SR1FP10 The affected jar are "ibmjsseprovider2.jar" and "ibmjceprovider.jar". The build level of ibmjceprovider.jar for the affected releases is "20150604". The build level of ibmjsseprovider2.jar for the affected releases is "20150604"

尝试升级 ibmjsseprovider2.jar 库。

关于web-services - 从受 SSL 保护的 WSDL 打开流时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138800/

相关文章:

c++ - Qt、POP3 和 SSL?

java - 相当于 wsimport 的 org.apache.axis.components.net.SunFakeTrustSocketFactory

web-services - 部署 yii2-starter-kit Yii2 安装时出错

c# - 更新 C# 应用程序替换 .exe 文件

java - 使用 DropWizard 提供数据库配置详细信息而不使用 config.yml?

java - tomcat请求超时

ios - Swift 3 如何使用 SSL Pinning 和 AlamoFire 验证服务器证书?

MySQL - 需要 SSL 但服务器不支持它

java - tomcat中的用户验证不起作用

java - tomcat中的资源管理