Hi,

The server side behavior is right (WSDL, SEI) , it can't receive the wrapped message.
Can you show me the client side code which call for the service ?
I don't know why your client send a wrapped soap message, maybe you use a wrong front end.

Willem

cmoulliard wrote:
Here is the route configuration in camel :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:cxf="http://activemq.apache.org/camel/schema/cxfEndpoint";
        
        xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://activemq.apache.org/camel/schema/cxfEndpoint
       http://activemq.apache.org/camel/schema/cxf/cxfEndpoint.xsd
       http://activemq.apache.org/camel/schema/spring
       http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>
<import resource="classpath:META-INF/cxf/cxf.xml" />
       <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
       <import
resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />
       <import resource="classpath:tracker-core-services.xml" />

   <cxf:cxfEndpoint id="serviceTracker"
address="http://localhost:9000/tracker"; serviceClass="com.xpectis.service.tracker.impl.TrackerServiceImpl"
    />
                
   <camelContext id="camel" trace="true"
xmlns="http://activemq.apache.org/camel/schema/spring";>
    <route>
      <from uri="cxf:bean:serviceTracker" />
<to uri="bean:tracker" /> </route> </camelContext> <bean id="tracker" class="com.xpectis.tracker.bean.ExtractParcel">
                <property name="saveService" ref="saveService" />
   </bean>

</beans>

The WSDL file :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions
  targetNamespace="http://tracker.service.xpectis.com";
xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
  xmlns:tns="http://tracker.service.xpectis.com";
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
  xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<!-- Type definitions for input- and output parameters for webservice -->
  <wsdl:types>
    <xsd:schema targetNamespace="http://tracker.service.xpectis.com";>
      <xsd:element name="inputTrackParcel">
        <xsd:complexType>
          <xsd:sequence>
                <xsd:element name="name" type="xsd:string" maxOccurs="1"
minOccurs="1"/>
                <xsd:element name="destination" type="xsd:string" maxOccurs="1"
minOccurs="1"></xsd:element>
                <xsd:element name="origin" type="xsd:string"></xsd:element>
                <xsd:element name="deliveryDate" type="xsd:date" maxOccurs="1"
minOccurs="0"></xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="outputTrackParcel">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="reference" type="xsd:int"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>
<!-- Message definitions for input and output --> <wsdl:message name="inputTrackParcel">
    <wsdl:part element="tns:inputTrackParcel" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="outputTrackParcel">
    <wsdl:part element="tns:outputTrackParcel" name="parameters"/>
  </wsdl:message>
<!-- Port (interface) definitions -->
  <wsdl:portType name="TrackParcelEndpoint">
    <wsdl:operation name="PostParcel">
      <wsdl:input message="tns:inputTrackParcel"/>
      <wsdl:output message="tns:outputTrackParcel"/>
    </wsdl:operation>
  </wsdl:portType>
<!-- Port bindings to transports and encoding - HTTP, document literal encoding is used --> <wsdl:binding name="TrackParcelBinding" type="tns:TrackParcelEndpoint">
    <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="PostParcel">
      <soap:operation
soapAction="http://tracker.service.xpectis.com/PostParcel"/>
      <wsdl:input>
        <soap:body parts="parameters" use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body parts="parameters" use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
<!-- Service definition -->
  <wsdl:service name="TrackParcelService">
    <wsdl:port binding="tns:TrackParcelBinding" name="TrackParcelPort">
      <soap:address location="http://tracker.service.xpectis.com"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


The interface :

package com.xpectis.service.tracker;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import com.xpectis.service.tracker.InputTrackParcel;
import com.xpectis.service.tracker.OutputTrackParcel;
import com.xpectis.service.tracker.ObjectFactory;

/**
 * This class was generated by Apache CXF 2.1.2
 * Wed Oct 08 11:05:48 CEST 2008
 * Generated source version: 2.1.2
* */ @WebService(targetNamespace = "http://tracker.service.xpectis.com";, name =
"TrackParcelEndpoint")
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface TrackParcelEndpoint {

    @WebResult(name = "outputTrackParcel", targetNamespace =
"http://tracker.service.xpectis.com";, partName = "parameters")
    @WebMethod(operationName = "PostParcel", action =
"http://tracker.service.xpectis.com/PostParcel";)
    public OutputTrackParcel PostParcel(@WebParam(partName = "parameters",
name = "inputTrackParcel", targetNamespace =
"http://tracker.service.xpectis.com";) InputTrackParcel parameters
    );
}

And implementation

package com.xpectis.service.tracker.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.xpectis.service.tracker.InputTrackParcel;
import com.xpectis.service.tracker.OutputTrackParcel;
import com.xpectis.service.tracker.TrackParcelEndpoint;

import org.apache.cxf.interceptor.*;


/**
 * The webservice we have implemented.
 */
@InInterceptors(interceptors =
"org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors =
"org.apache.cxf.interceptor.LoggingOutInterceptor")
public class TrackerServiceImpl implements TrackParcelEndpoint {
        
    private static final Log LOG =
LogFactory.getLog(TrackerServiceImpl.class);
        private static int result = 0;
        
        public OutputTrackParcel PostParcel(InputTrackParcel parameters) {
                
                OutputTrackParcel response = new OutputTrackParcel();
                response.setReference(result++);
                LOG.info("Result : " + result);
                return response;
                                
        }
}







willem.jiang wrote:
Can you show me the SEI file  and route configuration ?
It looks like a wrapped and unwrapped issue.

Willem
cmoulliard wrote:
Hi,

I have discovered a small problem between a client created using the
Client
ProxyFactoryBean and my webservice running with Apache Camel - CXF
component.

When the client calls the web service, the ClientProxyFactoryBean class
of
CXF generates the following SOAP message :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
<soap:Body>
<ns1:PostParcel xmlns:ns1="http://tracker.service.xpectis.com/";>
<ns2:inputTrackParcel xmlns:ns2="http://tracker.service.xpectis.com";>
<name>chm</name>
<destination>Brussels</destination>
<origin>Florennes</origin>
</ns2:inputTrackParcel>
</ns1:PostParcel>
</soap:Body>
</soap:Envelope>

Unfortunately, the tag <ns1:PostParcel> is not supported by the web
service
called in camel. If I remove it and send the message using SOAPUI client,
everything works fine.

How can I solve this problem in Camel CXF component ?

Charles Moulliard

-----
Enterprise Architect

Xpectis
12, route d'Esch
L-1470 Luxembourg

Phone +352 25 10 70 470
Mobile +352 621 45 36 22

e-mail : [EMAIL PROTECTED]
web site : www.xpectis.com www.xpectis.com My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/



-----
Enterprise Architect

Xpectis
12, route d'Esch
L-1470 Luxembourg

Phone +352 25 10 70 470
Mobile +352 621 45 36 22

e-mail : [EMAIL PROTECTED]
web site : www.xpectis.com www.xpectis.com My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/

Reply via email to