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