You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Jo...@genpt.com on 2004/04/15 00:43:57 UTC
More than one operation causes java.lang.reflect.InvocationTargetException
I am running axis 1.2 alpha and am trying to convert a web service from
rpc/encoded that worked fine in axis 1.1 to doc/literal. It didn't work
in Axis 1.1 and since I saw 1.2 had additional support for doc/literal, I
decided to try it...but without luck. I have simplified my WSDL down to
the file at the bottom. In it, there are two operations. If I generate
from it with the two operations, and I try to see the Axis generated WSDL
at URL?wsdl, I get the following exception:
AXIS error
Sorry, something seems to have gone wrong... here are the details:
Exception - java.lang.reflect.InvocationTargetException
But, if I remove one of the operations, and do the same, all seems well
and I can see the Axis generated WSDL. I still haven't actually called
the web service to verify that it works from a client, but at least the
server seems to function. I have simplified the WSDL significantly from
what I started with. Also, I have HAND modified the WSDL from rpc/encoded
to doc/literal, and since my goal was to be a consumer of web services, I
am not very WSDL savvy, and may have some things incorrect with it.
Anyone know what is wrong? Any help would be appreciated.
Thanks.
===================== WSDL Begins Here
======================================================
<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="WEJOEI"
targetNamespace="urn:WEJOEI:genpt.com"
xmlns:gpc_wejoei="urn:WEJOEI:genpt.com"
xmlns:gpc_wejoei_t="urn:types:WEJOEI:genpt.com"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="urn:types:WEJOEI:genpt.com">
<xsd:simpleType name="typeCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="divNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dcNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="custNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="password_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="tams_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="tamsRevision_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="inqOrdCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
<xsd:enumeration value="I"/>
<xsd:enumeration value="O"/>
<xsd:enumeration value=" ">
<xsd:annotation>
<xsd:documentation>A single space
character.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="quantity_t">
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="9999"/>
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="partId_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="22"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="lineId_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="optionCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
<xsd:enumeration value="M">
<xsd:annotation>
<xsd:documentation>Manufacturer
Search</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="A">
<xsd:annotation>
<xsd:documentation>Quick Add
Request</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value=" ">
<xsd:annotation>
<xsd:documentation>A single space
character.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dcAbbreviation_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="shippingCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="callbackFlag_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="purchaseOrder_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="25"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="orderRemarks_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="35"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="statusCode_t">
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="9999"/>
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="messageNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="messageText_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="messageData_t">
<xsd:sequence>
<xsd:element name="dcAbbreviation"
type="gpc_wejoei_t:dcAbbreviation_t"></xsd:element>
<xsd:element name="messageNumber"
type="gpc_wejoei_t:messageNumber_t"></xsd:element>
<xsd:element name="messageText"
type="gpc_wejoei_t:messageText_t"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="returnData_t">
<xsd:sequence>
<xsd:element name="statusCode"
type="gpc_wejoei_t:statusCode_t"></xsd:element>
<xsd:element maxOccurs="unbounded"
name="messageDataCollection" type="gpc_wejoei_t:messageData_t"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="PartInquirySoapOut">
<wsdl:part name="returnData"
type="gpc_wejoei_t:returnData_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquiryMfgSoapOut">
<wsdl:part name="returnData"
type="gpc_wejoei_t:returnData_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquirySoapIn">
<wsdl:part name="divNumber"
type="gpc_wejoei_t:divNumber_t"></wsdl:part>
<wsdl:part name="dcNumber"
type="gpc_wejoei_t:dcNumber_t"></wsdl:part>
<wsdl:part name="custNumber"
type="gpc_wejoei_t:custNumber_t"></wsdl:part>
<wsdl:part name="quantity"
type="gpc_wejoei_t:quantity_t"></wsdl:part>
<wsdl:part name="partId" type="gpc_wejoei_t:partId_t"></wsdl:part>
<wsdl:part name="lineId" type="gpc_wejoei_t:lineId_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquiryMfgSoapIn">
<wsdl:part name="divNumber"
type="gpc_wejoei_t:divNumber_t"></wsdl:part>
<wsdl:part name="dcNumber"
type="gpc_wejoei_t:dcNumber_t"></wsdl:part>
<wsdl:part name="custNumber"
type="gpc_wejoei_t:custNumber_t"></wsdl:part>
<wsdl:part name="partId" type="gpc_wejoei_t:partId_t"></wsdl:part>
<wsdl:part name="lineId" type="gpc_wejoei_t:lineId_t"></wsdl:part>
</wsdl:message>
<wsdl:portType name="WEJOEI">
<wsdl:operation name="PartInquiry">
<wsdl:input message="gpc_wejoei:PartInquirySoapIn"
name="PartInquiryInput"/>
<wsdl:output message="gpc_wejoei:PartInquirySoapOut"
name="PartInquiryOutput"/>
</wsdl:operation>
<wsdl:operation name="PartInquiryMfg">
<wsdl:input message="gpc_wejoei:PartInquiryMfgSoapIn"
name="PartInquiryMfgInput"/>
<wsdl:output message="gpc_wejoei:PartInquiryMfgSoapOut"
name="PartInquiryMfgOutput"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WEJOEISOAP" type="gpc_wejoei:WEJOEI">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="PartInquiry">
<soap:operation soapAction="urn:genpt.com:WEJOEI/PartInquiry"
style="document"/>
<wsdl:input name="PartInquiryInput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:input>
<wsdl:output name="PartInquiryOutput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PartInquiryMfg">
<soap:operation
soapAction="urn:genpt.com:WEJOEI/PartInquiryMfg" style="document"/>
<wsdl:input name="PartInquiryMfgInput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:input>
<wsdl:output name="PartInquiryMfgOutput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WEJOEI">
<wsdl:port binding="gpc_wejoei:WEJOEISOAP" name="WEJOEI">
<soap:address
location="http://wejoei.genpt.com:8080/axis/services/WEJOEI"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
===================== WSDL Begins Here
======================================================
RE: More than one operation causes java.lang.reflect.InvocationTargetException
Posted by Anne Thomas Manes <an...@manes.net>.
When using Document/Literal, your <message> definition should contain only
one <part>, not one <part> per parameter. That <part> must reference an
<element> definition (not a type). That element definition (defined in the
<types> section) is a wrapper element for your parameters. It defines the
literal structure of the contents of the SOAP Body. (If you want to use the
Wrapped style, then the name of the input element should be the same as your
method name, and its type should be defined using the <sequence> particle.,
containing all the parameter elements.)
e.g.,
Your third <message> definition looks like this:
<wsdl:message name="PartInquirySoapIn">
<wsdl:part name="divNumber" type="gpc_wejoei_t:divNumber_t">
</wsdl:part>
<wsdl:part name="dcNumber" type="gpc_wejoei_t:dcNumber_t">
</wsdl:part>
<wsdl:part name="custNumber" type="gpc_wejoei_t:custNumber_t">
</wsdl:part>
<wsdl:part name="quantity" type="gpc_wejoei_t:quantity_t">
</wsdl:part>
<wsdl:part name="partId" type="gpc_wejoei_t:partId_t">
</wsdl:part>
<wsdl:part name="lineId" type="gpc_wejoei_t:lineId_t">
</wsdl:part>
</wsdl:message>
But it should look like this:
<wsdl:message name="PartInquirySoapIn">
<wsdl:part name="PartInquiryIn" type="gpc_wejoei_t:PartInquiry" />
</wsdl:message>
Where "gpc_wejoei_t:PartInquiry" references an element definition in your
schema, such as this:
<element name="PartInquiry" type="gpc_wejoei_t:partInquiry_t"/>
<complexType name=partInquiry_t>
<sequence>
<element name="divNumber" type="gpc_wejoei_t:divNumber_t"/>
<element name="dcNumber" type="gpc_wejoei_t:dcNumber_t"/>
<element name="custNumber" type="gpc_wejoei_t:custNumber_t"/>
<element name="quantity" type="gpc_wejoei_t:quantity_t"/>
<element name="partId" type="gpc_wejoei_t:partId_t"/>
<element name="lineId" type="gpc_wejoei_t:lineId_t"/>
</sequence>
</complexType>
Anne
-----Original Message-----
From: Joe_Rattz@genpt.com [mailto:Joe_Rattz@genpt.com]
Sent: Wednesday, April 14, 2004 6:44 PM
To: axis-user@ws.apache.org
Subject: More than one operation causes
java.lang.reflect.InvocationTargetException
I am running axis 1.2 alpha and am trying to convert a web service from
rpc/encoded that worked fine in axis 1.1 to doc/literal. It didn't work
in Axis 1.1 and since I saw 1.2 had additional support for doc/literal, I
decided to try it...but without luck. I have simplified my WSDL down to
the file at the bottom. In it, there are two operations. If I generate
from it with the two operations, and I try to see the Axis generated WSDL
at URL?wsdl, I get the following exception:
AXIS error
Sorry, something seems to have gone wrong... here are the details:
Exception - java.lang.reflect.InvocationTargetException
But, if I remove one of the operations, and do the same, all seems well
and I can see the Axis generated WSDL. I still haven't actually called
the web service to verify that it works from a client, but at least the
server seems to function. I have simplified the WSDL significantly from
what I started with. Also, I have HAND modified the WSDL from rpc/encoded
to doc/literal, and since my goal was to be a consumer of web services, I
am not very WSDL savvy, and may have some things incorrect with it.
Anyone know what is wrong? Any help would be appreciated.
Thanks.
===================== WSDL Begins Here
======================================================
<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="WEJOEI"
targetNamespace="urn:WEJOEI:genpt.com"
xmlns:gpc_wejoei="urn:WEJOEI:genpt.com"
xmlns:gpc_wejoei_t="urn:types:WEJOEI:genpt.com"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="urn:types:WEJOEI:genpt.com">
<xsd:simpleType name="typeCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="divNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dcNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="custNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="password_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="tams_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="tamsRevision_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="inqOrdCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
<xsd:enumeration value="I"/>
<xsd:enumeration value="O"/>
<xsd:enumeration value=" ">
<xsd:annotation>
<xsd:documentation>A single space
character.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="quantity_t">
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="9999"/>
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="partId_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="22"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="lineId_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="optionCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
<xsd:enumeration value="M">
<xsd:annotation>
<xsd:documentation>Manufacturer
Search</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="A">
<xsd:annotation>
<xsd:documentation>Quick Add
Request</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value=" ">
<xsd:annotation>
<xsd:documentation>A single space
character.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="dcAbbreviation_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="shippingCode_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="callbackFlag_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="purchaseOrder_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="25"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="orderRemarks_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="35"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="statusCode_t">
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="9999"/>
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="messageNumber_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="messageText_t">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="200"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="messageData_t">
<xsd:sequence>
<xsd:element name="dcAbbreviation"
type="gpc_wejoei_t:dcAbbreviation_t"></xsd:element>
<xsd:element name="messageNumber"
type="gpc_wejoei_t:messageNumber_t"></xsd:element>
<xsd:element name="messageText"
type="gpc_wejoei_t:messageText_t"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="returnData_t">
<xsd:sequence>
<xsd:element name="statusCode"
type="gpc_wejoei_t:statusCode_t"></xsd:element>
<xsd:element maxOccurs="unbounded"
name="messageDataCollection" type="gpc_wejoei_t:messageData_t"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="PartInquirySoapOut">
<wsdl:part name="returnData"
type="gpc_wejoei_t:returnData_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquiryMfgSoapOut">
<wsdl:part name="returnData"
type="gpc_wejoei_t:returnData_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquirySoapIn">
<wsdl:part name="divNumber"
type="gpc_wejoei_t:divNumber_t"></wsdl:part>
<wsdl:part name="dcNumber"
type="gpc_wejoei_t:dcNumber_t"></wsdl:part>
<wsdl:part name="custNumber"
type="gpc_wejoei_t:custNumber_t"></wsdl:part>
<wsdl:part name="quantity"
type="gpc_wejoei_t:quantity_t"></wsdl:part>
<wsdl:part name="partId" type="gpc_wejoei_t:partId_t"></wsdl:part>
<wsdl:part name="lineId" type="gpc_wejoei_t:lineId_t"></wsdl:part>
</wsdl:message>
<wsdl:message name="PartInquiryMfgSoapIn">
<wsdl:part name="divNumber"
type="gpc_wejoei_t:divNumber_t"></wsdl:part>
<wsdl:part name="dcNumber"
type="gpc_wejoei_t:dcNumber_t"></wsdl:part>
<wsdl:part name="custNumber"
type="gpc_wejoei_t:custNumber_t"></wsdl:part>
<wsdl:part name="partId" type="gpc_wejoei_t:partId_t"></wsdl:part>
<wsdl:part name="lineId" type="gpc_wejoei_t:lineId_t"></wsdl:part>
</wsdl:message>
<wsdl:portType name="WEJOEI">
<wsdl:operation name="PartInquiry">
<wsdl:input message="gpc_wejoei:PartInquirySoapIn"
name="PartInquiryInput"/>
<wsdl:output message="gpc_wejoei:PartInquirySoapOut"
name="PartInquiryOutput"/>
</wsdl:operation>
<wsdl:operation name="PartInquiryMfg">
<wsdl:input message="gpc_wejoei:PartInquiryMfgSoapIn"
name="PartInquiryMfgInput"/>
<wsdl:output message="gpc_wejoei:PartInquiryMfgSoapOut"
name="PartInquiryMfgOutput"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WEJOEISOAP" type="gpc_wejoei:WEJOEI">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="PartInquiry">
<soap:operation soapAction="urn:genpt.com:WEJOEI/PartInquiry"
style="document"/>
<wsdl:input name="PartInquiryInput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:input>
<wsdl:output name="PartInquiryOutput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="PartInquiryMfg">
<soap:operation
soapAction="urn:genpt.com:WEJOEI/PartInquiryMfg" style="document"/>
<wsdl:input name="PartInquiryMfgInput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:input>
<wsdl:output name="PartInquiryMfgOutput">
<soap:body encodingStyle=""
namespace="urn:genpt.com:WEJOEI" use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WEJOEI">
<wsdl:port binding="gpc_wejoei:WEJOEISOAP" name="WEJOEI">
<soap:address
location="http://wejoei.genpt.com:8080/axis/services/WEJOEI"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
===================== WSDL Begins Here
======================================================