2010-09-08 18 views
0

hé, je rencontre un problème relatif. Récemment, l'interface SOAP externe qui générait le client pour changé en https un. et j'avais une ancienne base de code à portée de main qui générait les fichiers java via cxf et non sécurisé, http: // basé sur wsdl. J'ai acheté l'uri et du côté maven tout fonctionne bien, même le test. mais quand j'utilise ce pot dans le projet principal de la mine, je reçois ceci:Configuration de JAX-WS via SSL via CXF

 
Caused by: java.lang.NoSuchMethodError: javax.net.ssl.HttpsURLConnection.getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory; 
     at sun.net.www.protocol.https.DelegateHttpsURLConnection.getSSLSocketFactory(DelegateHttpsURLConnection.java:50) 
     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172) 
     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801) 
     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158) 
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049) 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) 
     at java.net.URL.openStream(URL.java:1010) 
     at org.apache.cxf.resource.URIResolver.tryFileSystem(URIResolver.java:169) 
     at org.apache.cxf.resource.URIResolver.resolve(URIResolver.java:119) 
     at org.apache.cxf.resource.ExtendedURIResolver.resolve(ExtendedURIResolver.java:41) 
     at org.apache.cxf.transport.TransportURIResolver.resolve(TransportURIResolver.java:134) 
     at org.apache.cxf.catalog.CatalogWSDLLocator.getBaseInputSource(CatalogWSDLLocator.java:72) 
     at org.apache.cxf.wsdl11.AbstractWrapperWSDLLocator.getBaseInputSource(AbstractWrapperWSDLLocator.java:57) 
     at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:214) 
     at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:179) 
     at org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:91) 
     at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:207) 
     at org.apache.cxf.jaxws.ServiceImpl.(ServiceImpl.java:150) 
     at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63) 
     at javax.xml.ws.Service.(Service.java:56) 
     at generated.webservices.com.gbm.sso.ssoclient.AuthenticationServiceInternal.(AuthenticationServiceInternal.java:49) 
     at com.gbm.caprice.sso.client.CachingSSOClient.init(CachingSSOClient.java:42) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1536) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) 
     ... 45 more 

Pouvez-vous s'il vous plaît aider?

Répondre

0

Puisque vous obtenez un NoSuchMethodError (qui est pris/jeté par le compilateur), Ma suggestion est que vous utilisez une version de classe Java (dans ce cas, javax.net.ssl.HttpsURLConnection) qui n'a pas les éléments suivants signature de la méthode:

javax.net.ssl.HttpsURLConnection.getSSLSocketFactory() 

Cette classe se trouve dans le jre/lib jsse.jar (comme de temps de l'écriture, 1.6.0_21 JDK). Assurez-vous que vos bibliothèques Java et vos bibliothèques Apache CXF sont déclarées dans le CLASSPATH java.

C'est ce que je peux vous aider en fonction de votre exception caused.

+0

Très bien dit. C'est ce que j'espérais. mais la chose est Apache CXF est dans classpath amd jssee.jar aussi. Mais encore, il donne cette erreur. Donc, j'imagine que cela a quelque chose à voir avec le remplacement d'Apache CXf (signifie fournir une implémentation différente de HttpsURLConnection) et la partie la plus inquiétante est que si elle va à HttpsURLConnection dans jsse.jar (avec jdk 1.6.0_16) elle a cette méthode. Étrange! –

+0

Cela signifie-t-il du btw statique? –

+0

Non, la méthode n'est pas statique et Apache CXF n'a jamais implémenté sa propre HttpsURLConnection. Si les deux bibliothèques JAVA et CXF sont dans le classpath, je ne sais pas pourquoi ils ne se voient pas. –