[
https://issues.apache.org/jira/browse/ODE-201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12538124
]
Richard Taylor commented on ODE-201:
------------------------------------
Looked into this a bit more...
The issue, at least that I've found so far, is in
org.apache.ode.axis2.util.SoapMessageConverter.java. I was able to get
things deploying ok, only to realize that during execution the body in the soap
message that is sent at runtime is empty.
The problem is that SoapMessageConverter has several references to
javax.wsdl.extensions.soap.*, such as SOAPBody.class. This is fine for SOAP
1.1, but when wsdl4j parses a SOAP 1.2 binding, it returns the equivalent
classes from the javax.wsdl.extensions.soap12.* package, such as
SOAP12Body.class. While functionally these classes are basically the same,
the interfaces are obviously different and SoapMessageConverter assumes the
first set of classes.
So the SOAPBinding, SOAPHeader, etc. classes need to either be wrapped in an
abstraction (i.e. new Ode interfaces) or SoapMessageConverter needs to extended
with some sort of Soap12MessageConverter. At least those are the two simplest
options I see at this point. Please comment if you think of a simpler approach.
> 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
> 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.