Support for executing SOAP 1.2 services
---------------------------------------
Key: ODE-201
URL: https://issues.apache.org/jira/browse/ODE-201
Project: ODE
Issue Type: Improvement
Components: Axis2 Integration
Affects Versions: 1.1, 1.1.1, 1.2
Environment: Axis2 Distro
Jetty 1.6.1.1
JDK 1.5.0_11
WinXP64
Reporter: Richard Taylor
Priority: Minor
Fix For: 1.1.1, 1.2
I can't seem to invoke a SOAP 1.2 service from a process in Ode. It's a silly
little "hello world" service written in .net (for playing with interop). Ode
seems to fail to find the proper binding for my service/port upon deployment
I believe the issue is in SoapMessageConverter. In the following line:
Collection<SOAPBinding> soapBindings =
CollectionsX.filter(_binding.getExtensibilityElements(), SOAPBinding.class);
The call to _binding.getExtensibilityElements() will return SOAP12Binding.class
for SOAP 1.2 bindings, not SOAPBinding.class, so they get filtered out and
aren't found. You would think SOAPBinding.class and SOAP12Binding.class would
derive from a common base class, but looking at WSDL4J it doesn't appear that
is the case.
During deployment I get the following error:
ERROR [ODEServer]: Could not create external service.
org.apache.ode.axis2.OdeFault: No SOAP binding for port: ServiceSoap12.
at org.apache.ode.axis2.util.SoapMessageConverter
.<init>(SoapMessageConv
erter.java:127)
at org.apache.ode.axis2.ExternalService.<init>(ExternalService.java:89)
at org.apache.ode.axis2.ODEServer.createExternalService(ODEServer.java:3
30)
at org.apache.ode.axis2.BindingContextImpl.createPartnerRoleChannel(Bind
ingContextImpl.java:81)
at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch.doHydrate(BpelP
rocess.java:711)
at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch.access$1(BpelPr
ocess.java:681)
at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch$2.run(BpelProce
ss.java:666)
at org.apache.ode.bpel.engine.NStateLatch.latch (NStateLatch.java:89)
at org.apache.ode.bpel.engine.BpelProcess.hydrate(BpelProcess.java:547)
at org.apache.ode.bpel.engine.BpelServerImpl.register(BpelServerImpl.jav
a:277)
at org.apache.ode.axis2.ODEServer.handleEvent (ODEServer.java:538)
at org.apache.ode.axis2.ODEServer.access$100(ODEServer.java:72)
at org.apache.ode.axis2.ODEServer$ProcessStoreListenerImpl.onProcessStor
eEvent(ODEServer.java:524)
at org.apache.ode.store.ProcessStoreImpl.fireEvent(ProcessStoreImpl.java
:501)
at org.apache.ode.store.ProcessStoreImpl.fireStateChange(ProcessStoreImp
l.java:507)
at org.apache.ode.store.ProcessStoreImpl.deploy
(ProcessStoreImpl.java:28
Here is the WSDL for the service I'm trying to call:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap=" http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://tempuri.org/ " xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/ "
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://tempuri.org/" xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">
<s:element name="HelloWorld">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="name" type="s:string"
/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="HelloWorldResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult"
type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="HelloWorldSoap12In">
<wsdl:part name="parameters" element="tns:HelloWorld" />
</wsdl:message>
<wsdl:message name="HelloWorldSoap12Out">
<wsdl:part name="parameters" element="tns:HelloWorldResponse" />
</wsdl:message>
<wsdl:portType name="ServiceSoap12">
<wsdl:operation name="HelloWorld">
<wsdl:input message="tns:HelloWorldSoap12In" />
<wsdl:output message="tns:HelloWorldSoap12Out" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap12">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http " />
<wsdl:operation name="HelloWorld">
<soap12:operation soapAction="http://tempuri.org/HelloWorld"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Service">
<wsdl:port name="ServiceSoap12" binding="tns:ServiceSoap12">
<soap12:address location=" http://localhost:2643/WebSite1/Service.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.