You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Troubleshooting Web Services issues

WSDL generation problems during deployment

When deploying JAX-WS Web Services without associated WSDL, the application server will automatically generate the WSDL for the service. With Axis2 as the JAX-WS provider, the application server uses Sun's wsgen tool to generate the WSDL. Sometimes wsgen can fail to generate the WSDL (for example, because of invalid annotations). In most of such cases, the output of the wsgen tool will be logged to the geronimo.log file. However, in some cases the output might not get logged and it might be necessary to enable extra logging to see the full output of the wsgen tool. To enable full logging of the wsgen tool add the following line to server-log4j.properties file:

log4j.logger.org.apache.geronimo.jaxws.builder=DEBUG 

The output of wsgen will appear in the geronimo.log file.

AccessControlException when deploying Web Services using CXF

When deploying JAX-WS Web Services using CXF you might see the following exception:

Caused by: java.security.AccessControlException: access denied (javax.xml.ws.WebServicePermission publishEndpoint)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
    at java.security.AccessController.checkPermission(AccessController.java:427)
    at org.apache.cxf.jaxws.EndpointImpl.checkPublishPermission(EndpointImpl.java:389)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:248)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
    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:585)
    ...

As per JSR-109 specification application servers are supposed to block publishing new Web Service endpoints via the Endpoint API. However, this can be disabled by setting the org.apache.cxf.jaxws.checkPublishEndpointPermission system property to false. For example, start the server after setting the following property:

export JAVA_OPTS=-Dorg.apache.cxf.jaxws.checkPublishEndpointPermission=false

Accessing Web Service by certificate using Web Service client

For the Web Service client, while using client-cert, you might need to ask the server to add your certificate to the trusted key store in Geronimo server. In the meanwhile, you need to get the server's certificate, and then add it into your local key store(Geronimp Administration Console can be used to export the server's certificate).

You also need to set the following properties before starting the server.

export GERONIMO_OPTS=-Djavax.net.ssl.trustStore=YOUR_CLIENT_TRUSTED_KEY_STORE 
-Djavax.net.ssl.trustStorePassword=YOUR_CLIENT_TRUSTED_KEY_STORE_PASSWORD 
-Djavax.net.ssl.keyStore=YOUR_CLIENT_KEY_STORE 
-Djavax.net.ssl.keyStorePassword=YOUR_CLIENT_KEY_STORE_PASSWORD
  • No labels