On 9/13/07, Rich Taylor <[EMAIL PROTECTED]> wrote:
>
> I can't seem to invoke a SOAP 1.2 service from a process in Ode.  Have
> others encountered this?  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.


Yep, nice debugging! We don't support SOAP 1.2 right now but as you've seen
I think there's not much needed to fix this. Care for a small patch?

Thanks!
Matthieu

Thanks!
>
> 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>
>

Reply via email to