当前位置: 首页 > 面试题库 >

使用SSL访问Web服务时出错

施德元
2023-03-14
问题内容

我有一个应该将文件发送到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实现类。



 类似资料:
  • 问题内容: 我们有一个Java Web应用程序,我们需要访问一个Web服务,它是一个https Web服务。所以我将ssl证书添加到Websphere; SSL证书和密钥管理>密钥库和证书> NodeDefaultKeyStore>签署者证书 SSL证书和密钥管理>密钥库和证书> NodeDefaultTrustStore>签署者证书 当应用程序尝试访问Web服务时,将引发如下异常: 我屏蔽了专用

  • 我正在尝试访问返回json的特定URL(https://api.cartolafc.globo.com/mercado/destaques). 在我的Xamarin C#类中,我这样编码: 我总是收到以下异常: System. Net. Web异常:获取响应流(ReadDone2)时出错:ReceiveFailure--- 当我使用其他URL时,如:https://coffeemaker.hero

  • 我在Eclipse IDE的应用程序中使用Play framework 1.2.5。我需要访问一个使用IBM JAX-RPC构建的web服务。我已经获得了我需要在应用程序中访问的web服务的wsdl文件。 对于普通JavaEE应用程序,我过去常常将WSDL粘贴到我的工作区中,通过右键单击WSDL file=生成文件 我不确定如何使用Play框架访问WSDL。 我想知道: 1)将WSDL文件粘贴到我

  • 调用web服务操作时返回的错误是:org.apache.axis2.axisfault:Transport.error:302 error:Redirect at org.apache.axis2.Transport.http.httpsender.handleresponse(httpsender.java:310)at org.apache.axis2.Transport.http.https

  • 当我尝试访问我的JAX RS CXF web服务时,我没有遇到这样的方法错误。以下是我在构建路径中添加的JAR: J2EE版本为2.3,应用服务器为weblogic 12 我知道这是个罐子问题。但我无法解决它。这是抛出的错误:

  • [2019-01-31T13:55:17.138-0500][Payara 4.1][INFO][][TID:_Threadid=37_ThreadName=HTTP-Thread-Pool::HTTP-Listener-2(5)][TimeMillis:1548960917138][LevelValue:800][[HTTP-Thread-Pool::HTTP-Listener-2(5),致命: