NullPointerException with JWSDP's wsdeploy



Hi all,

I've been trying to write a simple web service using JAX-RPC, however I'm
having trouble getting wsdeploy to create a cooked WAR file from a raw WAR
file.

The error I'm getting is:

Error: java.lang.NullPointerException
java.lang.NullPointerException
        at
com.sun.xml.rpc.tools.wsdeploy.DeployTool.defineServletsAndListeners
(DeployTool.java:447)
        at
com.sun.xml.rpc.tools.wsdeploy.DeployTool.run(DeployTool.java:258)
        at com.sun.xml.rpc.util.ToolBase.run(ToolBase.java:43)
        at com.sun.xml.rpc.tools.wsdeploy.Main.main(Main.java:22)
        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)
        at org.apache.commons.launcher.ChildMain.run(ChildMain.java:269)

Below is a description on how I arrive at this error.

::: Environment

SuSE 9.1, Kernel 2.4.21-273-default
jdk-1.5.0_04
jre-1.5.0_04
jwsdp-1.6

::: Interface

package CarPartReq;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface CarPartRequestIF extends Remote
{
    public String getCarPartRequest(String s) throws RemoteException;
}

::: Implementation

package CarPartReq;

import java.rmi.Remote;
import java.rmi.RemoteException;

public class CarPartRequestImpl implements CarPartRequestIF, Remote
{
    public String getCarPartRequest(String s)
    {
        if (s.equals("Engine 1"))
        {
            return new String("Engine 1 is currently out of stock.");
        }
        else
        {
            return new String("Your requested engine is in stock.");
        }
    }
}

::: WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";>
<web-app>
    <display-name>CarPartRequest</display-name>
    <description>Car Parts Order System</description>
</web-app>

::: JAXRPC-RI.XML

<?xml version="1.0" encoding="UTF-8"?>

<webServices
    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd";
    version="1.0"
    targetNamespaceBase="urn:carpartreq/wsdl"
    typeNamespaceBase="urn:carpartreq/types"
    urlPatternBase="/ws">

    <endpoint
        name="CarPartRequest"
        displayName="CarPartRequest Service"
        description="A simple web service"
        wsdl="/WEB-INF/CarPartRequest.wsdl"
        model="/WEB-INF/model.gz"
        interface="CarPartReq.CarPartRequestIF"
        implementation="CarPartReq.CarPartRequestImpl"/>

    <endpointMapping
        endpointName="CarPartRequest"
        urlPattern="/CarPartRequest"/>

</webServices>

::: Compiling

I use an Ant script to compile the classes. This gives me:

../index.html
../WEB-INF/jaxrpc-ri.xml
../WEB-INF/web.xml
../WEB-INF/classes/CarPartReq/
        CarPartRequestImpl.class
        CarPartRequestIF.class

I then use wscompile (-define and -gen:client), which gives me:

../WEB-INF/model.gz
../WEB-INF/CarPartRequest.wsdl
../WEB-INF/classes/CarPartReq/
        CarPartRequest_Impl.class
        CarPartRequestIF_getCarPartRequest_ResponseStruct.class
        CarPartRequest_SerializerRegistry.class
        CarPartRequest.class
        CarPartRequestIF_getCarPartRequest_ResponseStruct_SOAPSerializer.class
        CarPartRequestIF_getCarPartRequest_RequestStruct_SOAPBuilder.class
        CarPartRequestIF_getCarPartRequest_RequestStruct.class
        CarPartRequestIF_Stub.class
        CarPartRequestIF_getCarPartRequest_ResponseStruct_SOAPBuilder.class
        CarPartRequestIF_getCarPartRequest_RequestStruct_SOAPSerializer.class

I create an uncooked WAR file by using:

jar cvf CarPartRequest-raw.war ${build_folder}

Then, I use wsdeploy to create a cooked WAR file:

wsdeploy -o CarPartRequest.war CarPartRequest-raw.war

And THAT is when I get the exception I mentioned above.

Has anyone else encountered this problem before? What could be causing it?
Am I overlooking anything horribly obvious?

Regards,
Ben

--
Ben Horsfield
www.ohthewit.com
.