Hi Tore,
The patch is for ADB, not XmlBeans. It seems there is a similar
problem there. I'd suggest filing a bug in jira.
Chuck
Hei Ajith and Diego,
Thank you for pointing me to the patch. I confirm that it was present in my
build. Still I got problems with recursiv types. I'm using XmlBeans for the
types and I tracked down the issue to:
org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension
The method approx. at line 300:
<snip>
private void findPlainBase64Types(SchemaType stype, ArrayList
base64Types) {
SchemaProperty[] elementProperties =
stype.getElementProperties();
for (int i = 0; i < elementProperties.length; i++) {
SchemaType schemaType = elementProperties[i].getType();
if (schemaType.isPrimitiveType()) {
SchemaType primitiveType = schemaType.getPrimitiveType();
if
(Constants.BASE_64_CONTENT_QNAME.equals(primitiveType.getName())) {
base64Types.add(elementProperties[i].getName());
}
} else {
--> findPlainBase64Types(schemaType, base64Types);
}
}
}
</snip>
This recursive method will fail when the type described in schema is also
recursive. I've got EquipmentType in EquipmentType in EquipmentType
forever....
Best regards / vennlig hilsen
Tore Larsen
Senior Software Engineer
Comptel Communication AS
-----Original Message-----
From: Ajith Ranabahu [mailto:[EMAIL PROTECTED]]
Sent: 3. april 2006 06:15
To: [email protected]
Subject: Re: FW: [axis2 v0.95] wsdl2java stack overflow
Hi Diego
The patch is already inplace and things should work now (I even added a test
case). Please check with the latest source.
On 4/1/06, Diego <[EMAIL PROTECTED]> wrote:
Hi Tore,
there is a jira for this issue:
http://issues.apache.org/jira/browse/AXIS2-523
and the thread by Chuck and Ajith:
[Axis2 0.95] Recursive data types and choice particles.
The issue arises because recursive data types definitions in the wsdl
are not handled properly. You can find a patch in the thread and in
the jira.
Cheers,
Diego
[EMAIL PROTECTED] wrote:
Hi,
I can confirm Diego's report on this issue. I have several wsdl's in
my code tree. All of them worked well with axis2 wsdl2java up to a
0.95-SNAPSHOT build by me march 13th. It worked well using the
0.95-SNAPSHOT build from march 2nd.
The only thing that differs between the wsdl's are the size in terms
of operations and the complexity of the types. I got
StackOverflowError on the biggest one even on a 0.96-SNAPHOT from
yesterday.
Best regards
Tore Larsen
Senior Software Engineer
Comptel Communication AS
e-mail : [EMAIL PROTECTED]
-----Original Message-----
From: Diego [mailto:[EMAIL PROTECTED]]
Sent: 26. mars 2006 03:31
To: [email protected]
Subject: [axis2 v0.95] wsdl2java stack overflow
Hi everybody,
using axis2 v0.95 wsdl2java I got a stack overflow exception with
the following wsdl file. The same wsdl file worked fine with all
the previous axis and axis2 versions.
Thanks a lot for you help!
Diego
=================================================================
ant target
=================================================================
<target name="wsdl2java-astrodas-peer">
<java classname="org.apache.axis2.wsdl.WSDL2Code"
classpathref="axis2.classpath">
<arg value="-uri" />
<arg value="${astrodas-peer.wsdl}" />
<arg value="-o" />
<arg value="${basedir}" />
<arg value="-p" />
<arg value="org.astrodas.ws.peer" />
<arg value="-d"/>
<arg value="xmlbeans" />
</java>
</target>
=================================================================
exception
=================================================================
wsdl2java-astrodas-peer:
[java] Retrieving schema at
'http://www.ivoa.net/xml/VOTable/v1.1', relative to
'file:/Users/diego/Babylon/java/workspace/astrodas-test2/wsdl/'.
[java] java.lang.StackOverflowError
[java] at
org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:180)
[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:710)
[java] at
org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178)
[java] at
org.apache.tools.ant.taskdefs.Java.execute(Java.java:84)
[java] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[java] at org.apache.tools.ant.Task.perform(Task.java:364)
[java] at org.apache.tools.ant.Target.execute(Target.java:341)
[java] at
org.apache.tools.ant.Target.performTasks(Target.java:369)
[java] at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[java] at
org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[java] at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultEx
ecutor.ja
va:40)
[java] at
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[java] at org.apache.tools.ant.Main.runBuild(Main.java:668)
[java] at org.apache.tools.ant.Main.startAnt(Main.java:187)
[java] at
org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
[java] at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
[java] Caused by: java.lang.StackOverflowError
[java] --- Nested Exception ---
[java] java.lang.StackOverflowError
=================================================================
wsdl file
=================================================================
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions
targetNamespace="http://astrodas.org/ws/peer"
xmlns:tns="http://astrodas.org/ws/peer"
xmlns:tns1="http://astrodas.org/ws/model"
xmlns:tns2="http://www.ivoa.net/xml/VOTable/v1.1"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://astrodas.org/ws/model">
<xsd:import namespace="http://www.w3.org/2001/XMLSchema" />
<xsd:import namespace="http://www.ivoa.net/xml/VOTable/v1.1"
schemaLocation="http://www.ivoa.net/xml/VOTable/v1.1" />
<!--
Standard axis mappings from wsdl to java
========================================
xsd:base64Binary byte[]
xsd:boolean boolean
xsd:byte byte
xsd:dateTime java.util.Calendar
xsd:decimal java.math.BigDecimal
xsd:double double
xsd:float float
xsd:hexBinary byte[]
xsd:int int
xsd:integer java.math.BigInteger
xsd:long long
xsd:QName javax.xml.namespace.QName
xsd:short short
xsd:string java.lang.String
-->
<!-- insertMappingAnnotations -->
<xsd:complexType name="external-object">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id"
type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="external-id"
type="xsd:integer" />
<xsd:element minOccurs="1" maxOccurs="1" name="external-db"
type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="match"
type="xsd:boolean" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="annotation">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="id"
type="xsd:integer" />
<xsd:element minOccurs="0" maxOccurs="1" name="type"
type="xsd:string" />
<xsd:element minOccurs="1" maxOccurs="1" name="author"
type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1" name="timestamp"
type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="mapping-annotation">
<xsd:complexContent mixed="false">
<xsd:extension base="tns1:annotation">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded"
name="external-object" type="tns1:external-object" />
<xsd:element minOccurs="0" maxOccurs="1" name="text"
type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="1"
name="reliability" type="xsd:float" />
<xsd:element minOccurs="0" maxOccurs="1" name="ra-mean"
type="xsd:double" />
<xsd:element minOccurs="0" maxOccurs="1" name="dec-mean"
type="xsd:double" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="insertMappingAnnotations">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="unbounded"
name="mapping-annotation" type="tns1:mapping-annotation" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="insertMappingAnnotationsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="result"
type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- executeGlobalMappingTableQuery -->
<xsd:element name="executeGlobalMappingTableQuery">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="query"
type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="executeGlobalMappingTableQueryResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" ref="tns2:VOTABLE" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<!-- insertMappingAnnotations -->
<wsdl:message name="insertMappingAnnotationsMessage">
<wsdl:part name="body" element="tns1:insertMappingAnnotations" />
</wsdl:message>
<wsdl:message name="insertMappingAnnotationsResponseMessage">
<wsdl:part name="body" element="tns1:insertMappingAnnotationsResponse"
/>
</wsdl:message>
<!-- executeGlobalMappingTableQuery -->
<wsdl:message name="executeGlobalMappingTableQueryMessage">
<wsdl:part name="body" element="tns1:executeGlobalMappingTableQuery"
/>
</wsdl:message>
<wsdl:message name="executeGlobalMappingTableQueryResponseMessage">
<wsdl:part name="body"
element="tns1:executeGlobalMappingTableQueryResponse" />
</wsdl:message>
<wsdl:portType name="AstrodasPeer">
<wsdl:operation name="insertMappingAnnotations">
<wsdl:documentation>Stores an array of annotations in the
annotation backend database</wsdl:documentation>
<wsdl:input message="tns:insertMappingAnnotationsMessage" />
<wsdl:output message="tns:insertMappingAnnotationsResponseMessage" />
</wsdl:operation>
<wsdl:operation name="executeGlobalMappingTableQuery">
<wsdl:documentation>Executes a query on the global mapping table
of the p2p network of annotation</wsdl:documentation>
<wsdl:input message="tns:executeGlobalMappingTableQueryMessage" />
<wsdl:output
message="tns:executeGlobalMappingTableQueryResponseMessage" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AstrodasPeerBinding" type="tns:AstrodasPeer">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="insertMappingAnnotations">
<soap:operation soapAction="insertMappingAnnotations" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="executeGlobalMappingTableQuery">
<soap:operation soapAction="executeGlobalMappingTableQuery" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="astrodas-peer">
<wsdl:port name="astrodas-peer" binding="tns:AstrodasPeerBinding">
<soap:address
location="http://localhost:8080/axis2/services/astrodas-peer" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
Ajith Ranabahu
--
Chuck Williams
Manawiz
Principal
V: (808)885-8688
C: (415)846-9018
[EMAIL PROTECTED]
Skype: manawiz
AIM: hawimanawiz
Yahoo: jcwxx
|
- Re: FW: [axis2 v0.95] wsdl2java stack overflow Chuck Williams
-