Невозможно создать SSL Socket Factory для клиента - PullRequest
0 голосов
/ 22 июня 2009

Я использую Java 1.5.0_16 (приложение JBoss-4.2.3.GA). Мое приложение реализует клиент WS, который должен интегрироваться с внешней веб-службой. Это сообщение должно обрабатываться через https. Я получаю следующую ошибку, когда пытаюсь вызвать удаленный Api через веб-сервисы. Может ли anybosy помочь мне выяснить, в чем причина

14:25:17,609 WARN  [HTTPClientInvoker] Unable to create SSL Socket Factory for client invoker: Error initializing socket factory SSL context: Can not find truststore url.
14:25:18,203 INFO  [STDOUT] ERROR:
14:25:18,203 ERROR [STDERR] javax.xml.ws.WebServiceException: java.io.IOException: Could not transmit message
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:404)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:314)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:172)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:152)
14:25:18,203 ERROR [STDERR]     at $Proxy95.getConnectionDetails(Unknown Source)
14:25:18,203 ERROR [STDERR]     at testjava.Test.testWebservice(Test.java:113)
14:25:18,203 ERROR [STDERR]     at com.digital88.billing.dao.WholesalerDAOImpl.findByUserNameAndPassword(WholesalerDAOImpl.java:61)
14:25:18,203 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:25:18,203 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
14:25:18,203 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
14:25:18,203 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
14:25:18,203 ERROR [STDERR]     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
14:25:18,203 ERROR [STDERR]     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
14:25:18,203 ERROR [STDERR]     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
14:25:18,203 ERROR [STDERR]     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
14:25:18,203 ERROR [STDERR]     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
14:25:18,203 ERROR [STDERR]     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
14:25:18,203 ERROR [STDERR]     at $Proxy79.findByUserNameAndPassword(Unknown Source)
14:25:18,203 ERROR [STDERR]     at com.digital88.billing.services.WholesalerServiceImpl.authenticate(WholesalerServiceImpl.java:67)
14:25:18,203 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:25:18,203 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
14:25:18,203 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
14:25:18,203 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:585)
14:25:18,203 ERROR [STDERR]     at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:406)
14:25:18,203 ERROR [STDERR]     at net.sf.gilead.blazeds.adapter.PersistentAdapter.invoke(PersistentAdapter.java:123)
14:25:18,203 ERROR [STDERR]     at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
14:25:18,203 ERROR [STDERR]     at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1417)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:878)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:49)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
14:25:18,203 ERROR [STDERR]     at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:274)
14:25:18,203 ERROR [STDERR]     at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:377)
14:25:18,203 ERROR [STDERR]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
14:25:18,203 ERROR [STDERR]     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
14:25:18,203 ERROR [STDERR]     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
14:25:18,203 ERROR [STDERR]     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
14:25:18,203 ERROR [STDERR]     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
14:25:18,203 ERROR [STDERR]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
14:25:18,203 ERROR [STDERR]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
14:25:18,203 ERROR [STDERR]     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
14:25:18,203 ERROR [STDERR]     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
14:25:18,203 ERROR [STDERR]     at java.lang.Thread.run(Thread.java:595)
14:25:18,203 ERROR [STDERR] Caused by: java.io.IOException: Could not transmit message
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:255)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:73)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:339)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302)
14:25:18,203 ERROR [STDERR]     ... 52 more
14:25:18,203 ERROR [STDERR] Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker. cannot retry due to redirection, in streaming mode. Response
: Found/302.
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:348)
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:137)
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.Client.invoke(Client.java:1634)
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.Client.invoke(Client.java:548)
14:25:18,203 ERROR [STDERR]     at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:233)
14:25:18,203 ERROR [STDERR]     ... 55 more
14:25:18,203 ERROR [STDERR] Caused by: java.net.HttpRetryException: cannot retry due to redirection, in streaming mode
14:25:18,203 ERROR [STDERR]     at sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:1695)
14:25:18,203 ERROR [STDERR]     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1106)
14:25:18,203 ERROR [STDERR]     at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367)
14:25:18,203 ERROR [STDERR]     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
14:25:18,203 ERROR [STDERR]     at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:282)
14:25:18,203 ERROR [STDERR]     ... 60 more
14:25:18,203 INFO  [STDOUT] connectionDetails..

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Я понимаю, что это довольно старый вопрос. Я думал, что все равно попытаюсь ответить на него.

Обычно при подключении с помощью SSL вам необходимо установить свойство javax.net.ssl.trustStore. Хранилище trustStore должно быть извлечено из сертификата, используемого на сервере.

Вы можете явно разрешить перенаправление

HttpURLConnection.setFollowRedirects(true);

Вы также можете отключить проверку имени хоста. (Это может быть очень полезно в тестовой среде, где cn сертификата сервера не соответствует имени хоста сервера.)

HostnameVerifier hostnameVerifier = new HostnameVerifier() {
    public boolean verify(String urlHostName, SSLSession session) {
        return true;
    }
};
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 22 июня 2009

У меня есть два возможных решения этого вопроса:

  • Ваша цепочка трассировки стека содержит вложенное исключение с сообщением

org.jboss.remoting.CannotConnectException: Невозможно подключить http клиент invoker. не может повторить попытку из-за перенаправления, в потоковый режим. Ответ: Найдено / 302

Так вы абсолютно уверены, что указываете на правильный URL? Похоже, код JBoss не обрабатывает перенаправление 302.

  • У меня смутная память, что для использования клиентского SSL в JBoss сначала необходимо настроить серверную часть

Другими словами, веб-сервер вашего JBOss должен иметь полностью настроенный коннектор SSL, чтобы получать асинхронные обратные вызовы от клиентского вызова. Это звучит довольно глупо, но это стоит исследовать, так как раньше я сталкивался с чем-то похожим.

Так что покопайтесь в файле jboss-web server.xml и посмотрите, есть ли и настроен ли SSL-коннектор. Этот бит конфигурации содержит URL хранилища ключей, и если он не настроен, это может объяснить исключение «не удается найти хранилище ключей».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...