Hi, I have a problem with invoking a service using ws-addressing. I have the ws addressing action set, the AddressingInHandler does not seem to be able to find the operation for that action. In fact when I debug through the AddressingInHandler I see that service.getOperations() returns all the correct operations for the service, however these OperationInfo have no AddressingOperationInfo... I can't see any reason why, infact I can't see where AddressingOperationInfo's are created!
I am using JAXB2 binding at the moment. Below is my config, am stumped! Thanks for looking.. == soap request being sent == <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <env:Header> <wsa:Action>http://www.noname.com/de/ws/customerservice/EnrolCI </wsa:Action> <wsa:ReplyTo> <wsa:Address>queue://CustomerServiceResponse</wsa:Address> </wsa:ReplyTo> </env:Header> <env:Body> <EnrolCIRequest xmlns="http://www.noname.com/de/ws" RequestIdentifier="requestidentifier"> <serviceProviderInstanceIdentifier>0</serviceProviderInstanceIdentifier> <username>username</username> <address>address</address> </EnrolCIRequest> </env:Body> </env:Envelope> == services.xml === <beans xmlns="http://xfire.codehaus.org/config/1.0"> <xfire> <transports> <bean id="jmsTransport" class="org.codehaus.xfire.transport.jms.JMSTransport" xmlns="http://xbean.org/schemas/spring/1.0"> <constructor-arg ref="xfire"/> <constructor-arg ref="connectionFactory"/> </bean> </transports> </xfire> <service xmlns:c="urn:CustomerService"> <name>CustomerService</name> <serviceClass>de.ws.xfire.service.CustomerService_v1Impl </serviceClass> <serviceFactory>org.codehaus.xfire.jaxb2.JaxbServiceFactory </serviceFactory> <inHandlers> <handler handlerClass=" org.codehaus.xfire.addressing.AddressingInHandler"/> </inHandlers> <outHandlers> <handler handlerClass=" org.codehaus.xfire.addressing.AddressingOutHandler"/> </outHandlers> <bindings> <soap11Binding name="c:CustomerServiceJMSBinding" transport="urn:xfire:transport:jms"> <endpoints> <endpoint name="c:CustomerServiceJMSEndpoint" url="jms://CustomerService" /> </endpoints> </soap11Binding> </bindings> </service> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" singleton="true" xmlns="http://xbean.org/schemas/spring/1.0/"> <constructor-arg value="tcp://localhost:61616" type="java.lang.String" /> </bean> </beans> == CustomerService_v1Impl.java === package com.noname.de.ws.xfire.service; import javax.jws.WebService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.noname.de.ws.EnrolCIResponse; @WebService(serviceName = "CustomerService_v1", targetNamespace = " http://www.noname.com/de/ws/customerservice", endpointInterface = " com.noname.de.ws.xfire.service.CustomerService_v1") public class CustomerService_v1Impl implements CustomerService_v1 { final static Log logger = LogFactory.getLog(CustomerService_v1Impl.class); public EnrolCIResponse enrolCI(com.noname.de.ws.EnrolCIRequest req) { logger.debug("got req....."); EnrolCIResponse res = new EnrolCIResponse(); return res; } } == CustomerService_v1 == package com.noname.de.ws.xfire.service; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import com.noname.de.ws.EnrolCIResponse; @WebService(name = "CustomerService_v1", targetNamespace = " http://www.noname.com/de/ws/customerservice") @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.BARE) public interface CustomerService_v1 { @WebMethod(operationName = "EnrolCI", action = " http://www.noname.com/de/ws/customerservice/EnrolCI") @WebResult(name = "EnrolCIResponse", targetNamespace = " http://www.noname.com/de/ws") public EnrolCIResponse enrolCI( @WebParam(name = "EnrolCIRequest", targetNamespace = " http://www.noname.com/de/ws") com.noname.de.ws.EnrolCIRequest EnrolCIRequest); }
