Hi. I've noticed that Ode 1.X will throw a CompilationException for
BPEL processes that import certain types of WSDLs. These same
processes/WSDLs work fine in Ode 1.2.
I think it has something to do with local schema imports. Take this
WSDL, for example.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="mytestnamespace"
xmlns:ns1="mytestnamespace" xmlns:ns2="myothertestnamespace"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/
<BLOCKED::http://schemas.xmlsoap.org/wsdl/> "
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/
<BLOCKED::http://schemas.xmlsoap.org/wsdl/soap/> "
xmlns:xsd="http://www.w3.org/2001/XMLSchema
<BLOCKED::http://www.w3.org/2001/XMLSchema> ">
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="mytestnamespace"
xmlns="http://www.w3.org/2001/XMLSchema
<BLOCKED::http://www.w3.org/2001/XMLSchema> ">
<import namespace="myothertestnamespace"/>
<element name="request">
<complexType>
<sequence>
<element name="in" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="response">
<complexType>
<sequence>
<element name="out" type="ns2:SomeType"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="myothertestnamespace"
xmlns="http://www.w3.org/2001/XMLSchema
<BLOCKED::http://www.w3.org/2001/XMLSchema> ">
<import namespace="mytestnamespace"/>
<complexType name="SomeType">
<sequence>
<element name="Blah" type="xsd:string"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="Request">
<wsdl:part element="ns1:request" name="parameters"/>
</wsdl:message>
<wsdl:message name="Response">
<wsdl:part element="ns1:response" name="parameters"/>
</wsdl:message>
<wsdl:portType name="TestPortType">
<wsdl:operation name="DoSomething">
<wsdl:input message="ns1:Request" name="Request"/>
<wsdl:output message="ns1:Response" name="Response"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestSoapBinding" type="ns1:TestPortType">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/
<BLOCKED::http://schemas.xmlsoap.org/soap/http"/> >
<wsdl:operation name="DoSomething">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="Request">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="Response">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestService">
<wsdl:port binding="ns1:TestSoapBinding" name="Test">
<wsdlsoap:address location="http://localhost/Test"/
<BLOCKED::http://localhost/Test"/> >
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
If you create a BPEL process that imports this WSDL, Ode will not deploy
it.
org.apache.ode.bpel.compiler.api.CompilationException: error:
[CompilationErrors] Compilation completed with 2 error(s):
file:/C:/Documents%20and%20Settings/Administrator/Desktop/apache-tomcat-
6.0.18/webapps/ode/WEB-INF/processes/test/imports/Test.wsdl:0: error:
[SchemaError] Error in schema processing: sch-props-correct.2: A schema
cannot contain two global components with the same name; this schema
contains two occurrences of 'mytestnamespace,request'.
file:/C:/Documents%20and%20Settings/Administrator/Desktop/apache-tomcat-
6.0.18/webapps/ode/WEB-INF/processes/test/imports/Test.wsdl:0: error:
[SchemaError] Error in schema processing: sch-props-correct.2: A schema
cannot contain two global components with the same name; this schema
contains two occurrences of 'myothertestnamespace,SomeType'.
at
org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:752)
at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:263)
at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:333)
at
org.apache.ode.store.DeploymentUnitDir$5.run(DeploymentUnitDir.java:176)
at org.apache.ode.utils.InternPool.runBlock(InternPool.java:57)
at
org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:17
3)
at
org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:13
7)
at
org.apache.ode.store.ProcessStoreImpl.deploy(ProcessStoreImpl.java:176)
... 3 more
Am I missing something here? Should I write this up?
Thanks.
-Jon