Looks like the text of the WSDL got corrupted in my first email. Trying again... <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="mytestnamespace" xmlns:ns1="mytestnamespace" xmlns:ns2="myothertestnamespace" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <schema elementFormDefault="qualified" targetNamespace="mytestnamespace" xmlns="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"> <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"/> <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"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
________________________________ From: Jonathan Coogan Sent: Friday, May 01, 2009 2:19 PM To: [email protected] Subject: CompilationException for certain WSDLs 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
