-
1. Re: StackOverflowError when accessing WS
thomas.diesler Jul 12, 2005 3:34 AM (in response to pshrimpton)This has been assigned to
http://jira.jboss.org/jira/browse/JBWS-318
Could you provide a sample deployment that shows the issue? -
2. Re: StackOverflowError when accessing WS
adammeghji Jul 13, 2005 3:39 PM (in response to pshrimpton)I'm having the same issue here, as is someone else I know. I started by following the WSDOC Server
implementation, and everything worked fine before I began passing around custom Objects (CarrierEntityValue
in this case, see below for code).
Here is the sample deployment that shows the issue. Hopefully this will help figure out what's going wrong.
Here is the error:14:58:16,759 ERROR [[CarrierProcess]] Servlet.service() for servlet CarrierProcess threw exception java.lang.StackOverflowError at java.lang.Exception.<init>(Exception.java:41) at java.lang.NoSuchMethodException.<init>(NoSuchMethodException.java:32) at java.lang.Class.getMethod(Class.java:978) at org.jboss.axis.utils.JavaUtils.isEnumClass(JavaUtils.java:1465) at org.jboss.axis.utils.JavaUtils.isBeanCompatible(JavaUtils.java:940) at org.jboss.axis.utils.JavaUtils.isConvertable(JavaUtils.java:811) at org.jboss.axis.utils.JavaUtils.isConvertable(JavaUtils.java:675) at org.jboss.axis.utils.JavaUtils.getConstructorForClass(JavaUtils.java:911) at org.jboss.axis.utils.JavaUtils.isConvertable(JavaUtils.java:811) at org.jboss.axis.utils.JavaUtils.isConvertable(JavaUtils.java:675) (underlined code repeats for a few pages)
CarrierProcessWrapped.java (endpoint interface):public interface CarrierProcessWrapped extends Remote { CarrierProcess_getCarrierName_ResponseStruct getCarrierName(CarrierProcess_getCarrierName_RequestStruct req) throws RemoteException; CarrierProcess_getCarrierValue_ResponseStruct getCarrierValue(CarrierProcess_getCarrierValue_RequestStruct req) throws RemoteException; CarrierProcess_setCarrierValue_ResponseStruct setCarrierValue(CarrierProcess_setCarrierValue_RequestStruct req) throws RemoteException; }
webservices.xml:<webservice-description> <webservice-description-name>CarrierProcess</webservice-description-name> <wsdl-file>WEB-INF/wsdl/CarrierProcessService.wsdl</wsdl-file> <jaxrpc-mapping-file>WEB-INF/mapping.xml</jaxrpc-mapping-file> <port-component> <port-component-name>PortComponent</port-component-name> <wsdl-port>CarrierProcessWrappedPort</wsdl-port> <service-endpoint-interface>arm.carrierws.CarrierProcessWrapped</service-endpoint-interface> <service-impl-bean> <servlet-link>CarrierProcess</servlet-link> </service-impl-bean> </port-component> </webservice-description>
web.xml:<servlet> <servlet-name>CarrierProcess</servlet-name> <servlet-class>arm.carrierws.CarrierProcessWrappedImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>CarrierProcess</servlet-name> <url-pattern>/CarrierProcess</url-pattern> </servlet-mapping>
mapping.xml:<?xml version="1.0" encoding="UTF-8"?> <java-wsdl-mapping version="1.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd"> <package-mapping> <package-type>arm.carrierws</package-type> <namespaceURI> http://arm.carrierws/fourthAppWeb/types </namespaceURI> </package-mapping> <package-mapping> <package-type>arm.carrierws</package-type> <namespaceURI>http://arm.carrierws/fourthAppWeb</namespaceURI> </package-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_getCarrierValue_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:getCarrierValueResponse </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_setCarrierValue_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_setCarrierValue_RequestStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name> carrierEntityValue_1 </java-variable-name> <xml-element-name>carrierEntityValue_1</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_getCarrierValue_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:getCarrierValue </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name> CarrierProcess_getCarrierValue_RequestStruct_1 </java-variable-name> <xml-element-name> CarrierProcess_getCarrierValue_RequestStruct_1 </xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_setCarrierValue_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:setCarrierValue </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name> CarrierProcess_setCarrierValue_RequestStruct_1 </java-variable-name> <xml-element-name> CarrierProcess_setCarrierValue_RequestStruct_1 </xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_getCarrierName_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:getCarrierNameResponse </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_getCarrierName_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:getCarrierName </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name> CarrierProcess_getCarrierName_RequestStruct_1 </java-variable-name> <xml-element-name> CarrierProcess_getCarrierName_RequestStruct_1 </xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_getCarrierName_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_getCarrierName_ResponseStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_setCarrierValue_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_setCarrierValue_ResponseStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_getCarrierValue_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_getCarrierValue_RequestStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>integer_1</java-variable-name> <xml-element-name>integer_1</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcessWrapped_setCarrierValue_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:setCarrierValueResponse </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_getCarrierName_RequestStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_getCarrierName_RequestStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>integer_1</java-variable-name> <xml-element-name>integer_1</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type> arm.carrierws.CarrierProcess_getCarrierValue_ResponseStruct </java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierProcess_getCarrierValue_ResponseStruct </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>result</java-variable-name> <xml-element-name>result</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type>arm.interfaces.CarrierEntityValue</java-type> <root-type-qname xmlns:typeNS="http://arm.carrierws/fourthAppWeb/types"> typeNS:CarrierEntityValue </root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>carrier_id</java-variable-name> <xml-element-name>carrier_id</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>carrier_name</java-variable-name> <xml-element-name>carrier_name</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>primaryKey</java-variable-name> <xml-element-name>primaryKey</xml-element-name> </variable-mapping> </java-xml-type-mapping> <service-interface-mapping> <service-interface> arm.carrierws.CarrierProcessService </service-interface> <wsdl-service-name xmlns:serviceNS="http://arm.carrierws/fourthAppWeb"> serviceNS:CarrierProcessService </wsdl-service-name> <port-mapping> <port-name>CarrierProcessWrappedPort</port-name> <java-port-name>CarrierProcessWrappedPort</java-port-name> </port-mapping> </service-interface-mapping> <service-endpoint-interface-mapping> <service-endpoint-interface> arm.carrierws.CarrierProcessWrapped </service-endpoint-interface> <wsdl-port-type xmlns:portTypeNS="http://arm.carrierws/fourthAppWeb"> portTypeNS:CarrierProcessWrapped </wsdl-port-type> <wsdl-binding xmlns:bindingNS="http://arm.carrierws/fourthAppWeb"> bindingNS:CarrierProcessWrappedBinding </wsdl-binding> <service-endpoint-method-mapping> <java-method-name>getCarrierName</java-method-name> <wsdl-operation>getCarrierName</wsdl-operation> <wrapped-element /> <method-param-parts-mapping> <param-position>0</param-position> <param-type> arm.carrierws.CarrierProcess_getCarrierName_RequestStruct </param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_getCarrierName </wsdl-message> <wsdl-message-part-name> CarrierProcess_getCarrierName_RequestStruct_1 </wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value> arm.carrierws.CarrierProcess_getCarrierName_ResponseStruct </method-return-value> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_getCarrierNameResponse </wsdl-message> <wsdl-message-part-name>result</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> <service-endpoint-method-mapping> <java-method-name>getCarrierValue</java-method-name> <wsdl-operation>getCarrierValue</wsdl-operation> <wrapped-element /> <method-param-parts-mapping> <param-position>0</param-position> <param-type> arm.carrierws.CarrierProcess_getCarrierValue_RequestStruct </param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_getCarrierValue </wsdl-message> <wsdl-message-part-name> CarrierProcess_getCarrierValue_RequestStruct_1 </wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value> arm.carrierws.CarrierProcess_getCarrierValue_ResponseStruct </method-return-value> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_getCarrierValueResponse </wsdl-message> <wsdl-message-part-name>result</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> <service-endpoint-method-mapping> <java-method-name>setCarrierValue</java-method-name> <wsdl-operation>setCarrierValue</wsdl-operation> <wrapped-element /> <method-param-parts-mapping> <param-position>0</param-position> <param-type> arm.carrierws.CarrierProcess_setCarrierValue_RequestStruct </param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_setCarrierValue </wsdl-message> <wsdl-message-part-name> CarrierProcess_setCarrierValue_RequestStruct_1 </wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value> arm.carrierws.CarrierProcess_setCarrierValue_ResponseStruct </method-return-value> <wsdl-message xmlns:wsdlMsgNS="http://arm.carrierws/fourthAppWeb"> wsdlMsgNS:CarrierProcessWrapped_setCarrierValueResponse </wsdl-message> <wsdl-message-part-name>result</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> </service-endpoint-interface-mapping> </java-wsdl-mapping>
CarrierProcessService.wsdl:<?xml version="1.0" encoding="UTF-8"?> <definitions name="CarrierProcessService" targetNamespace="http://arm.carrierws/fourthAppWeb" xmlns:tns="http://arm.carrierws/fourthAppWeb" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://arm.carrierws/fourthAppWeb/types" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types> <schema targetNamespace="http://arm.carrierws/fourthAppWeb/types" xmlns:tns="http://arm.carrierws/fourthAppWeb/types" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> <complexType name="getCarrierName"> <sequence> <element name="CarrierProcess_getCarrierName_RequestStruct_1" type="tns:CarrierProcess_getCarrierName_RequestStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_getCarrierName_RequestStruct"> <sequence> <element name="integer_1" type="int" nillable="true"/></sequence></complexType> <complexType name="getCarrierNameResponse"> <sequence> <element name="result" type="tns:CarrierProcess_getCarrierName_ResponseStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_getCarrierName_ResponseStruct"> <sequence> <element name="result" type="string" nillable="true"/></sequence></complexType> <complexType name="getCarrierValue"> <sequence> <element name="CarrierProcess_getCarrierValue_RequestStruct_1" type="tns:CarrierProcess_getCarrierValue_RequestStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_getCarrierValue_RequestStruct"> <sequence> <element name="integer_1" type="int" nillable="true"/></sequence></complexType> <complexType name="getCarrierValueResponse"> <sequence> <element name="result" type="tns:CarrierProcess_getCarrierValue_ResponseStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_getCarrierValue_ResponseStruct"> <sequence> <element name="result" type="tns:CarrierEntityValue" nillable="true"/></sequence></complexType> <complexType name="CarrierEntityValue"> <sequence> <element name="carrier_id" type="int" nillable="true"/> <element name="carrier_name" type="string" nillable="true"/> <element name="primaryKey" type="int" nillable="true"/></sequence></complexType> <complexType name="setCarrierValue"> <sequence> <element name="CarrierProcess_setCarrierValue_RequestStruct_1" type="tns:CarrierProcess_setCarrierValue_RequestStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_setCarrierValue_RequestStruct"> <sequence> <element name="carrierEntityValue_1" type="tns:CarrierEntityValue" nillable="true"/></sequence></complexType> <complexType name="setCarrierValueResponse"> <sequence> <element name="result" type="tns:CarrierProcess_setCarrierValue_ResponseStruct" nillable="true"/></sequence></complexType> <complexType name="CarrierProcess_setCarrierValue_ResponseStruct"> <sequence> <element name="result" type="string" nillable="true"/></sequence></complexType> <element name="getCarrierName" type="tns:getCarrierName"/> <element name="getCarrierNameResponse" type="tns:getCarrierNameResponse"/> <element name="getCarrierValue" type="tns:getCarrierValue"/> <element name="getCarrierValueResponse" type="tns:getCarrierValueResponse"/> <element name="setCarrierValue" type="tns:setCarrierValue"/> <element name="setCarrierValueResponse" type="tns:setCarrierValueResponse"/></schema></types> <message name="CarrierProcessWrapped_getCarrierName"> <part name="parameters" element="ns2:getCarrierName"/></message> <message name="CarrierProcessWrapped_getCarrierNameResponse"> <part name="result" element="ns2:getCarrierNameResponse"/></message> <message name="CarrierProcessWrapped_getCarrierValue"> <part name="parameters" element="ns2:getCarrierValue"/></message> <message name="CarrierProcessWrapped_getCarrierValueResponse"> <part name="result" element="ns2:getCarrierValueResponse"/></message> <message name="CarrierProcessWrapped_setCarrierValue"> <part name="parameters" element="ns2:setCarrierValue"/></message> <message name="CarrierProcessWrapped_setCarrierValueResponse"> <part name="result" element="ns2:setCarrierValueResponse"/></message> <portType name="CarrierProcessWrapped"> <operation name="getCarrierName"> <input message="tns:CarrierProcessWrapped_getCarrierName"/> <output message="tns:CarrierProcessWrapped_getCarrierNameResponse"/></operation> <operation name="getCarrierValue"> <input message="tns:CarrierProcessWrapped_getCarrierValue"/> <output message="tns:CarrierProcessWrapped_getCarrierValueResponse"/></operation> <operation name="setCarrierValue"> <input message="tns:CarrierProcessWrapped_setCarrierValue"/> <output message="tns:CarrierProcessWrapped_setCarrierValueResponse"/></operation></portType> <binding name="CarrierProcessWrappedBinding" type="tns:CarrierProcessWrapped"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="getCarrierName"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/></input> <output> <soap:body use="literal"/></output></operation> <operation name="getCarrierValue"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/></input> <output> <soap:body use="literal"/></output></operation> <operation name="setCarrierValue"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/></input> <output> <soap:body use="literal"/></output></operation></binding> <service name="CarrierProcessService"> <port name="CarrierProcessWrappedPort" binding="tns:CarrierProcessWrappedBinding"> <soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>
CarrierEntityValue.java (Entity Bean Value Object, generated by XDoclet):public class CarrierEntityValue extends java.lang.Object implements java.io.Serializable { private java.lang.Integer carrier_id; private boolean carrier_idHasBeenSet = false; private java.lang.String carrier_name; private boolean carrier_nameHasBeenSet = false; private java.lang.Integer pk; public CarrierEntityValue() { } public CarrierEntityValue( java.lang.Integer carrier_id,java.lang.String carrier_name ) { this.carrier_id = carrier_id; carrier_idHasBeenSet = true; this.carrier_name = carrier_name; carrier_nameHasBeenSet = true; pk = this.getCarrier_id(); }
Thanks,
A. -
3. Re: StackOverflowError when accessing WS
adammeghji Jul 14, 2005 11:05 AM (in response to pshrimpton)update: I was able to work around the problem by using a different object with my webservice -- CarrierStruct instead of CarrierEntityValue.
CarrierEntityValue was an XDoclet-generated Value Object based on an Entity Bean. CarrierStruct is a POJO, and looks like this:public class CarrierStruct { private Integer carrier_id; private String carrier_name; ... no constructor ... ... getters/setters ... }
My pre-wrapped endpoint now looks like this (CarrierProcess.java) :public interface CarrierProcess extends Remote { String getCarrierName(Integer carrier_id) throws RemoteException; CarrierStruct getCarrierValue(Integer carrier_id) throws RemoteException; String setCarrierValue(CarrierStruct carrierValue) throws RemoteException; }
Hopefully this helps out whoever's looking after this issue (bug??).
Thanks,
A -
4. Re: StackOverflowError when accessing WS
thomas.diesler Jul 22, 2005 2:07 PM (in response to pshrimpton)Could you please create a JIRA issue and attach a sample deployment that allows us to reproduce what you are seeing. Idealy, the sample deployment is a webapp packaged as a war that will show the issue when we click on a link. The war should also contain the sources.