Just FYI....

This is probably a bug and should be logged and fixed.   Probably a bug in the 
SoapActionInInterceptor if you want to dig in and provide a patch.

HOWEVER, I wouldn't categorize it as a high priority issue for CXF as such a 
wsdl is NOT WSI-Basic Profile compliant.   WSI-BP specifically states that 
the operations need to be unique within the soap:body, which yours is not due 
to them both having ns:ExportRequest.

Dan



On Friday 05 September 2008 5:31:22 pm juan.velez wrote:
> I had understood that a SEI could have multiple methods and the correct
> method is chosen according to the soap action found in the Request Header.
> I am using a Java first approach but when I try two different requests, one
> addresses for each method/operation, both are handled by the same method
> operation (in this case exportCmiModelDataV2).
>
> wsdl
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="ExportRequestService"
> targetNamespace="http://www.areva.com/mmi/wsdl";
> xmlns:ns1="http://www.areva.com/mmi/xml";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:tns="http://www.areva.com/mmi/wsdl";
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>   <wsdl:types>
>     <schema attributeFormDefault="unqualified"
> elementFormDefault="qualified"
> targetNamespace="http://www.areva.com/mmi/xml";
> xmlns="http://www.w3.org/2001/XMLSchema";
> xmlns:mmi="http://www.areva.com/mmi/xml";>
>       <complexType name="ExportRequestType">
>         <sequence>
>           <element name="Application" type="string"/>
>           <element name="Environment" type="string"/>
>           <element name="FilePath" type="string"/>
>           <element name="CSMRequestId" type="string"/>
>         </sequence>
>       </complexType>
>       <element name="ExportRequest" type="mmi:ExportRequestType"/>
>     </schema>
>   </wsdl:types>
>   <wsdl:message name="processExport">
>     <wsdl:part element="ns1:ExportRequest" name="request"/>
>   </wsdl:message>
>   <wsdl:message name="processExportV2">
>     <wsdl:part element="ns1:ExportRequest" name="request"/>
>   </wsdl:message>
>   <wsdl:portType name="ExportRequestPortType">
>     <wsdl:operation name="processExport">
>       <wsdl:input message="tns:processExport" name="processExport"/>
>     </wsdl:operation>
>     <wsdl:operation name="processExportV2">
>       <wsdl:input message="tns:processExportV2" name="processExportV2"/>
>     </wsdl:operation>
>   </wsdl:portType>
>   <wsdl:binding name="ExportRequestServiceSoapBinding"
> type="tns:ExportRequestPortType">
>     <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="processExport">
>       <soap:operation soapAction="processExport" style="document"/>
>       <wsdl:input name="processExport">
>         <soap:body use="literal"/>
>       </wsdl:input>
>     </wsdl:operation>
>     <wsdl:operation name="processExportV2">
>       <soap:operation soapAction="processExportV2" style="document"/>
>       <wsdl:input name="processExportV2">
>         <soap:body use="literal"/>
>       </wsdl:input>
>     </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="ExportRequestService">
>     <wsdl:port binding="tns:ExportRequestServiceSoapBinding"
> name="ExportRequestPort">
>       <soap:address location="http://localhost:8080/mmi/services/export"/>
>     </wsdl:port>
>   </wsdl:service>
> </wsdl:definitions>
>
> service
>
> package com.arevatd.mmi.business.services;
>
> import javax.jws.Oneway;
> import javax.jws.WebMethod;
> import javax.jws.WebParam;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
>
> import com.areva.mmi.xml.ExportRequestType;
>
> @WebService(name="ExportRequestPortType",
>             targetNamespace="http://www.areva.com/mmi/wsdl";)
> @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
> public interface CmiModelDataExportWs {
>     /**
>      * The actual operation for this web service: perform an export of CMI
> Model Data
>      *
>      * @param request The Request to export a e-terrasource export project
>      */
>     @WebMethod(operationName = "processExport", action = "processExport")
>     @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
>     @Oneway()
>     public void exportCmiModelData(
>         @WebParam(targetNamespace = "http://www.areva.com/mmi/xml";,
>                   partName="request",
>                   name = "ExportRequest")
>         ExportRequestType request);
>
>     @WebMethod(operationName = "processExportV2", action =
> "processExportV2")
>     @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
>     @Oneway()
>     public void exportCmiModelDataV2(
>         @WebParam(targetNamespace = "http://www.areva.com/mmi/xml";,
>                   partName="request",
>                   name = "ExportRequest")
>         ExportRequestType request);
> }
>
> service impl
>
> package com.arevatd.mmi.business.services.support;
>
> import java.util.logging.Logger;
>
> import javax.jws.WebService;
> import javax.xml.namespace.QName;
> import javax.xml.soap.SOAPException;
> import javax.xml.soap.SOAPFactory;
> import javax.xml.soap.SOAPFault;
> import javax.xml.ws.BindingType;
> import javax.xml.ws.soap.SOAPFaultException;
>
> import com.arevatd.mmi.business.services.CmiModelDataExportWs;
>
> import com.areva.mmi.xml.ExportRequestType;
>
>
> @WebService(endpointInterface="com.arevatd.mmi.business.services.CmiModelDa
>taExportWs", name="ExportRequestPortType",
>             portName="ExportRequestPort",
>             serviceName="ExportRequestService",
>             targetNamespace="http://www.areva.com/mmi/wsdl";)
> @BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING)
> public class CmiModelDataExportWsImpl implements CmiModelDataExportWs {
>     private final Logger logger =
> Logger.getLogger(this.getClass().getName());
>
>     public void exportCmiModelData(ExportRequestType request) {
>         logger.info("Application=" + request.getApplication());
>         logger.info("Environment=" + request.getEnvironment());
>         logger.info("FilePath=" + request.getFilePath());
>         logger.info("CSMRequestId=" + request.getCSMRequestId());
>
>         try {
>             SOAPFactory soapFactory = SOAPFactory.newInstance();
>             SOAPFault fault = soapFactory.createFault("Hello",
>                 new QName("http://schemas.xmlsoap.org/soap/envelope/";,
> "Client"));
>             fault.setFaultString("Juan");
>
>             throw new SOAPFaultException(fault);
>         } catch(SOAPException se) {
>         }
>     }
>
>     public void exportCmiModelDataV2(ExportRequestType request) {
>         logger.info("V2Application=" + request.getApplication());
>         logger.info("V2Environment=" + request.getEnvironment());
>         logger.info("V2FilePath=" + request.getFilePath());
>         logger.info("V2CSMRequestId=" + request.getCSMRequestId());
>
>         try {
>             SOAPFactory soapFactory = SOAPFactory.newInstance();
>             SOAPFault fault = soapFactory.createFault("Hello",
>                 new QName("http://schemas.xmlsoap.org/soap/envelope/";,
> "Client"));
>             fault.setFaultString("V2Juan");
>
>             throw new SOAPFaultException(fault);
>         } catch(SOAPException se) {
>         }
>     }
> }
>
>  request1
>
> Host: localhost:8080
> Content-Length: 427
> SOAPAction: "processExport"
> User-Agent: Jakarta Commons-HttpClient/3.0.1
> Content-Type: text/xml;charset=UTF-8
>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:ns="http://www.areva.com/mmi/xml";>
>    <soapenv:Header/>
>    <soapenv:Body>
>       <ns:ExportRequest>
>          <ns:Application>?</ns:Application>
>          <ns:Environment>?</ns:Environment>
>          <ns:FilePath>?</ns:FilePath>
>          <ns:CSMRequestId>?</ns:CSMRequestId>
>       </ns:ExportRequest>
>    </soapenv:Body>
> </soapenv:Envelope>
>
>  request2
>
> Host: localhost:8080
> Content-Length: 427
> SOAPAction: "processExportV2"
> User-Agent: Jakarta Commons-HttpClient/3.0.1
> Content-Type: text/xml;charset=UTF-8
>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:ns="http://www.areva.com/mmi/xml";>
>    <soapenv:Header/>
>    <soapenv:Body>
>       <ns:ExportRequest>
>          <ns:Application>?</ns:Application>
>          <ns:Environment>?</ns:Environment>
>          <ns:FilePath>?</ns:FilePath>
>          <ns:CSMRequestId>?</ns:CSMRequestId>
>       </ns:ExportRequest>
>    </soapenv:Body>
> </soapenv:Envelope>



-- 
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog

Reply via email to