4 Replies Latest reply on Jan 9, 2009 10:24 AM by asoldano

    Problems accessing SSL webservice

      Greetings,

      I have a working jax-ws webservice deployed, wich I access it through a java standalone client. Now I need to enable SSL on it. I've configured jboss-web.deployer/server.xml to create the SSL connection, and now I have my webservice successfully deployed in the following URL:

      https://localhost:8443/abc/deteccaopcws?wsdl


      with:

      ...
      <service name="DeteccaoPCWSService">
      <port binding="tns:DeteccaoPCWSBinding" name="DeteccaoPCWSPort">
      <soap:address location="https://localhost:8443/abc/deteccaopcws"/>
      </port>
      </service>
      ...


      and in the webservice class:

      ...
      @WebService(targetNamespace = "xyz.abc.deteccaoPC")
      @WebContext(contextRoot = "/abc", urlPattern = "/deteccaopcws", transportGuarantee="CONFIDENTIAL")
      @Stateless
      @HandlerChain(file = "deteccaopc-handler.xml")
      public class DeteccaoPCWS
      ...


      The problem is, since I've turned on SSL, my client doesn't work anymore...
      I always get a "Target endpoint no set" exception:

      Exception in thread "main" javax.xml.ws.WebServiceException: org.jboss.ws.WSException: Target endpoint address not set
       at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:410)
       at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:316)
       at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:172)
       at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:152)
       at $Proxy16.processarDeteccao(Unknown Source)
       at deteccaopc.abc.xyz.client.SingleClient.main(SingleClient.java:70)
      Caused by: org.jboss.ws.WSException: Target endpoint address not set
       at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:334)
       at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:304)
       ... 4 more


      Here is my client service:

      @WebServiceClient(name = "DeteccaoPCWSService",
      targetNamespace = "xyz.abc.deteccaoPC", wsdlLocation = "https://localhost:8443/abc/deteccaopcws?wsdl")
      public class DeteccaoPCWSService
       extends Service
      {
      
       private final static URL DETECCAOPCWSSERVICE_WSDL_LOCATION;
       private final static Logger logger = Logger.getLogger(deteccaopc.abc.xyz.DeteccaoPCWSService.class.getName());
      
       static {
       URL url = null;
       try {
       URL baseUrl;
       baseUrl = deteccaopc.abc.xyz.DeteccaoPCWSService.class.getResource(".");
       url = new URL(baseUrl, "https://localhost:8443/abc/deteccaopcws?wsdl");
       } catch (MalformedURLException e) {
       logger.warning("Failed to create URL for the wsdl Location: 'https://localhost:8443/abc/deteccaopcws?wsdl', retrying as a local file");
       logger.warning(e.getMessage());
       }
       DETECCAOPCWSSERVICE_WSDL_LOCATION = url;
       }
       public DeteccaoPCWSService(URL wsdlLocation, QName serviceName) {
       super(wsdlLocation, serviceName);
       }
       public DeteccaoPCWSService() {
       super(DETECCAOPCWSSERVICE_WSDL_LOCATION, new QName("xyz.abc.deteccaoPC", "DeteccaoPCWSService"));
       }
       @WebEndpoint(name = "DeteccaoPCWSPort")
       public DeteccaoPCWS getDeteccaoPCWSPort() {
       return super.getPort(new QName("xyz.abc.deteccaoPC", "DeteccaoPCWSPort"), DeteccaoPCWS.class);
       }
      }


      And in the client, I'm setting theseVM properties :

      -Djavax.net.ssl.trustStore=/home/vitor/Desktop/wsse.truststore
      -Djavax.net.ssl.trustStorePassword=jbossws


      So, the hole code I've show you was working without SSL, in the URL http://localhost:9090/abc/deteccaopcws?wsdl

      Even having that exception (Target endpoint no set) I know the webservice is deployed because I can successfully access it in my browser...

      One thing I suspect is: Since the certificate is a self-signed certficate, when I acess it in the browser it alerts me about it, asking for the confirmation. I guess that's what is causing the error.

      I appreciate any help, thanks.

      Vitor Isaia