How do you setup the server? Can you post your config, Server init code?
From the soap requests you posted I would say your client works
correctly as it sets the SOAPAction. What I suspect is that you setup your server by only referencing the implementation. You should also reference the interface:
serviceClass="com.arevatd.mmi.business.services.CmiModelDataExportWs"
This will make sure the Server code knows which SOAPAction should be dispatched to which method.

Did this help?

BTW. If you want to offer your service in an enterprise environment for other applications you should think about doing Contract First. In this case you can take a look at:
http://cwiki.apache.org/confluence/display/CXF20DOC/Defining+Contract+first+webservices+with+wsdl+generation+from+java
This Howto describes how to define your services wih Java and still have the benefists of contract first.

If you only use the webservices internally in your own app code first is all right of course.

Greetings

Christian


juan.velez schrieb:
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.CmiModelDataExportWs",
            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>


--

Christian Schneider
---
http://www.liquid-reality.de

Reply via email to