Hi all,
I've been using axis 1.2 with JBoss for a while now but have seemed to
come up against a brick wall. After using wsdl2java on a custom built
wsdl I have tried to deploy the webservice using the AdminClient.
The AdminClient fails with an java.lang.reflect.InvocationTargetException
By just copying the relevant part of the deploy.wsdd into the axis
server_config.wsdd file and restarting my application server (JBoss
4.0.2). I get the following error:
15:42:48,823 INFO [TomcatDeployer] deploy, ctxPath=/axis,
warUrl=file:/C:/jboss/jboss-4.0.2RC1/server/default/deploy/axis.war/
15:42:52,659 ERROR [[/axis]] StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/apache/axis/encoding/Deserializer
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:176)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
at
org.apache.axis.deployment.wsdd.WSDDTypeMapping.getLanguageSpecificType(WSDDTypeMapping.java:183)
at
org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:534)
at
org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:245)
at
org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:225)
at
org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:191)
at
org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
Etc…
While this looks like a simple classpath issue I have tried everything
I can think of (and every google and mailing list search I can think
of) I've added the axis jars to the classpath of the jboss install
(using the jboss ide for eclipse) and to the tomcat plugin lib
directory. The happy axis pages works fine and so do simple web
services that require no serialization.
If anyone could help with this I'd be very grateful. I've pasted the
relevant part of the wsdd and the wsdl below.
Thanks,
Barry
<!-- Services from fulfilOrderService WSDL service -->
<service name="fulfilOrderPort" provider="java:RPC" style="document"
use="literal">
<parameter name="wsdlTargetNamespace"
value="http://new.webservice.namespace"/>
<parameter name="wsdlServiceElement" value="fulfilOrderService"/>
<parameter name="wsdlServicePort" value="fulfilOrderPort"/>
<parameter name="className"
value="namespace.webservice._new.FulfilOrderBindingImpl"/>
<parameter name="wsdlPortType" value="fulfilOrderPort"/>
<parameter name="typeMappingVersion" value="1.2"/>
<operation name="fulfilOrder" qname="fulfilOrder"
returnQName="retNS:FulfilmentRequestSummary"
xmlns:retNS="http://new.webservice.namespace"
returnType="rtns:FulfilmentRequestType"
xmlns:rtns="http://new.webservice.namespace" >
<parameter qname="pns:SalesOrder"
xmlns:pns="http://new.webservice.namespace" type="tns:SalesOrderType"
xmlns:tns="http://new.webservice.namespace"/>
<fault name="fulfilOrderFault" qname="fns:SOAFault"
xmlns:fns="http://new.webservice.namespace"
class="namespace.webservice._new.SOAFaultType" type="tns:SOAFaultType"
xmlns:tns="http://new.webservice.namespace"/>
</operation>
<parameter name="allowedMethods" value="fulfilOrder"/>
<parameter name="scope" value="Application"/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:SalesOrderType"
type="java:namespace.webservice._new.SalesOrderType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:CustomerType"
type="java:namespace.webservice._new.CustomerType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:FulfilmentRequestType"
type="java:namespace.webservice._new.FulfilmentRequestType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:AddressType"
type="java:namespace.webservice._new.AddressType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:SOAFaultType"
type="java:namespace.webservice._new.SOAFaultType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:LineItemGroupType"
type="java:namespace.webservice._new.LineItemGroupType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://new.webservice.namespace"
qname="ns:LineItemType"
type="java:namespace.webservice._new.LineItemType"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
</service>
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:y="http://new.webservice.namespace"
targetNamespace="http://new.webservice.namespace">
<types>
<xs:schema targetNamespace="http://new.webservice.namespace">
<xs:element name="SalesOrder" type="y:SalesOrderType"/>
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element name="addressLine1"
type="xs:string"/>
<xs:element name="addressLine2"
type="xs:string"/>
<xs:element name="addressLine3"
type="xs:string"/>
<xs:element name="addressLine4"
type="xs:string"/>
<xs:element name="postcode"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CustomerType">
<xs:sequence>
<xs:element name="customerID"
type="xs:string"/>
<xs:element name="title"
type="xs:string"/>
<xs:element name="initial"
type="xs:string"/>
<xs:element name="familyName"
type="xs:string"/>
<xs:element name="emailAddress"
type="xs:string"/>
<xs:element name="notificationChannel"
type="xs:string"/>
<xs:element name="notificationFormat"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LineItemType">
<xs:sequence>
<xs:element name="orderLineNo"
type="xs:integer"/>
<xs:element name="productID"
type="xs:string"/>
<xs:element name="quantity"
type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LineItemGroupType">
<xs:sequence>
<xs:element name="lineItem"
type="y:LineItemType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SalesOrderType">
<xs:sequence>
<xs:element name="orderID"
type="xs:string"/>
<xs:element name="dateCreated"
type="xs:date"/>
<xs:element name="status"
type="xs:string"/>
<xs:element name="customer"
type="y:CustomerType"/>
<xs:element name="lineItems"
type="y:LineItemGroupType"/>
<xs:element name="shipToAddress"
type="y:AddressType"/>
<xs:element name="billToAddress"
type="y:AddressType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="FulfilmentRequestSummary"
type="y:FulfilmentRequestType"/>
<xs:complexType name="FulfilmentRequestType">
<xs:sequence>
<xs:element name="fulfilmentRequestID"
type="xs:string"/>
<xs:element name="dateCreated"
type="xs:date"/>
<xs:element name="status"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="SOAFault" type="y:SOAFaultType"/>
<xs:complexType name="SOAFaultType">
<xs:sequence>
<xs:element name="errorCode"
type="xs:string"/>
<xs:element name="errorDescription"
type="xs:string"/>
<xs:element name="errorDate"
type="xs:date"/>
<xs:element name="errorTime"
type="xs:time"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="fulfilOrderRequest">
<part name="request" element="y:SalesOrder"/>
</message>
<message name="fulfilOrderResponse">
<part name="response" element="y:FulfilmentRequestSummary"/>
</message>
<message name="fulfilOrderFault">
<part name="fault" element="y:SOAFault"/>
</message>
<portType name="fulfilOrderPort">
<operation name="fulfilOrder">
<input message="y:fulfilOrderRequest"/>
<output message="y:fulfilOrderResponse"/>
<fault name="fulfilOrderFault"
message="y:fulfilOrderFault"/>
</operation>
</portType>
<binding name="fulfilOrderBinding" type="y:fulfilOrderPort">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="fulfilOrder">
<soap:operation/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="fulfilOrderFault">
<soap:fault name="fulfilOrderFault"
use="literal"/>
</fault>
</operation>
</binding>
<service name="fulfilOrderService">
<port name="fulfilOrderPort" binding="y:fulfilOrderBinding">
<soap:address
location="http://localhost:8080/warehouse1/fulfillorder"/>
</port>
</service>
</definitions>