使用SSL访问Web服务时出错

我有一个应该将文件发送到Web服务的程序,该程序需要SSL连接。我运行程序如下:

SET JAVA_HOME=C:\Program Files\Java\jre1.6.0_07

SET com.ibm.SSL.ConfigURL=ssl.client.props

"%JAVA_HOME%\bin\java" -cp ".;Test.jar" ca.mypackage.Main

这很好,但是当我将第一行更改为

SET JAVA_HOME=C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre

我收到以下错误:

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119)

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:140)

at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:86)

at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:593)

at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:552)

at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:537)

at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:434)

at com.sun.xml.internal.ws.client.Stub.process(Stub.java:247)

at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:132)

at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:242)

at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:222)

at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:115)

at $Proxy26.fileSubmit(Unknown Source)

at com.testing.TestingSoapProxy.fileSubmit(TestingSoapProxy.java:81)

at ca.mypackage.Main.main(Main.java:63)

Caused by: java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

at javax.net.ssl.DefaultSSLSocketFactory.a(SSLSocketFactory.java:7)

at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:1)

at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:110)

at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:14)

at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:902)

at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:86)

at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:107)

... 14 more

Caused by: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

at javax.net.ssl.SSLJsseUtil.b(SSLJsseUtil.java:20)

at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:36)

at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:16)

at javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:36)

at com.ibm.net.ssl.www2.protocol.https.b.<init>(b.java:1)

at com.ibm.net.ssl.www2.protocol.https.Handler.openConnection(Handler.java:11)

at java.net.URL.openConnection(URL.java:995)

at com.sun.xml.internal.ws.api.EndpointAddress.openConnection(EndpointAddress.java:206)

at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.createHttpConnection(HttpClientTransport.java:277)

at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:103)

... 14 more

因此,似乎该问题与我正在使用的JRE有关,但似乎没有意义的是非IBM JRE可以正常工作,而IBM JRE则不能。有什么想法或建议吗?

回答:

如果您的非IBM jre是sun,那么它已经附带了SSL类实现。

看来IBM jre根本不包含SSL实现类。

以上是 使用SSL访问Web服务时出错 的全部内容, 来源链接: utcz.com/qa/400568.html

回到顶部