[jboss-user] [JBoss Web Services] - Re: NullPointerException in JBossXSEntityResolver.getXMLInputSource still happening in 5.1.0

Mikheil Kapanadze do-not-reply at jboss.com
Tue May 31 16:53:37 EDT 2011


Mikheil Kapanadze [http://community.jboss.org/people/mkapanadze] created the discussion

"Re: NullPointerException in JBossXSEntityResolver.getXMLInputSource still happening in 5.1.0"

To view the discussion, visit: http://community.jboss.org/message/608002#608002

--------------------------------------------------------------
I had this error today, but on older JBoss (4.2.3). WSDL was a bit complex but not wrong (it was auto-generated from EJB, deployed on JBoss 5.1.0 - both wsimport and wsconsume were OK with it.

I'll describe how I have fixed it for myself. Maybe it will be helpful for anyone.

I had to create web service client and add to some application, deployed on 4.2.3. I've generated classes using wsimport and created the client. After that, I got the above mentioned error.

As everyone knows, when you generate JAX-WS classes, wsimport uses absolute path of the filename in the ***Service.java. It looks like this:

@WebServiceClient(name = "MyService", targetNamespace = " http://www.example.com/NS/my-NS http://www.example.com/NS/my-NS", wsdlLocation = "file:/D:/path/to/wsdl/Service.wsdl")

and the same path exists after few lines, in static initialization block.

When you deploy the application on the server, in most cases the pathname will be incorrect. To avoid this, I often place my .wsdl files in the package and create service class using MyService(URL wsdlLocation, QName serviceName) constructor but today it caused NPE for me. 

I have tried to make above mentioned static initialization block and @WebServiceClient annotation little bit usable. Here are steps:
1. Choose name of your package where wsimport will place generated classes. Say, com.mikheil.demo.ws.client
2. Put your WSDL in classpath, inside the SAME package. Let's suppose it's name is MyService.wsdl
3. When executing wsimport, pass *-wsdllocation MyService.wsdl* to it

I use Maven and plugin parameter there is wsdlLocation

So, here is how my service looks like:


@WebServiceClient(name = "MyService", targetNamespace = " http://www.example.com/NS/my-NS http://www.example.com/NS/my-NS", wsdlLocation = "MyService.wsdl")
public class MyService
    extends Service
{

    private final static URL MYSERVICE_WSDL_LOCATION;
    private final static Logger logger = Logger.getLogger(com.mikheil.demo.ws.client.MyService.class.getName());

    static {
        URL url = null;
        try {
            URL baseUrl;
            baseUrl = com.mikheil.demo.ws.client.MyService.class.getResource(".");
            url = new URL(baseUrl, "MyService.wsdl");
        } catch (MalformedURLException e) {
            logger.warning("Failed to create URL for the wsdl Location: 'MyService.wsdl', retrying as a local file");
            logger.warning(e.getMessage());
        }
        URL MYSERVICE_WSDL_LOCATION; = url;
    }

// Some constructors, etc


}

Obviously, now it's possible to create web service client using default constructor. 

...And, NullPointerException disappeared too!
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/608002#608002]

Start a new discussion in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110531/d9a1a014/attachment.html 


More information about the jboss-user mailing list