Hi Andrei,
first of all, thanks for the quick answer!
Just checked that wsa:Action is set for decoupled response in my test
case.
sorry, but maybe I didn't express correctly, but is the response to the
client that doesn't have the wsa:Action and not the docoupled response to
the decoupled endpoint
How you activate decoupled response, by setting wsa:ReplyTo endpoint or
via conduit? Could you post me the client code as well?
I don't use the conduit, I use the wsa:replyTo
Just as the test, could you try to set SOAP action on the service side and
see if wsa:Action changed accordingly:
@Resource
private WebServiceContext wsContext;
...
wsContext.getMessageContext().put(SoapBindingConstants.SOAP_ACTION,
"myTestOperation");
I test your suggestion and the client's response didn't change. What changed
here was the wsa:Action of the response to the decoupled endpoint.
here's my client's code:
String wsaAction = "http://abitab.com.uy/servicios/addressing/add";
String wsaReplyTo =
"http://localhost:8080/AddressingEndpoint/AddressingEndpointServlet";
String wsaTo = "http://localhost:8080/service";
URL wsdlURL = new
URL("file:/F:/workspace/switchyard/AbitabClient/src/AddressingSampleImpl.xml");
AddressingSampleImplService service = new
AddressingSampleImplService(wsdlURL);
AddressingSample port = service.getAddressingSampleImplPort(new
AddressingFeature(true, true));
BindingProvider bp = (BindingProvider)port;
configureAddressingProperties(bp, wsaTo, wsaAction, wsaReplyTo);
port.add(1, 2);
private static void configureAddressingProperties(BindingProvider bp, String
wsaTo, String wsaAction, String replyTo) throws URISyntaxException
{
AddressingProperties props = new AddressingPropertiesImpl();
AttributedURIType wsaActionUri = new AttributedURIType();
wsaActionUri.setValue(wsaAction);
props.setAction(wsaActionUri);
EndpointReferenceType ref = new EndpointReferenceType();
AttributedURIType wsaReplyToURI = new AttributedURIType();
wsaReplyToURI.setValue(replyTo);
ref.setAddress(wsaReplyToURI);
props.setReplyTo(ref);
AttributedURIType messageID = new AttributedURIType();
messageID.setValue("urn:uuid:"+UUIDGenerator.getUUID());
props.setMessageID(messageID);
bp.getRequestContext().put(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES,
props);
}
Regards
Guzmán
-----Mensaje original-----
From: Andrei Shakirin
Sent: Friday, February 14, 2014 2:41 PM
To: users@cxf.apache.org
Subject: RE: wsa-action missing in decoupled responses
Hi,
Just checked that wsa:Action is set for decoupled response in my test case.
How you activate decoupled response, by setting wsa:ReplyTo endpoint or via
conduit? Could you post me the client code as well?
Just as the test, could you try to set SOAP action on the service side and
see if wsa:Action changed accordingly:
@Resource
private WebServiceContext wsContext;
...
wsContext.getMessageContext().put(SoapBindingConstants.SOAP_ACTION,
"myTestOperation");
Regards,
Andrei.
-----Original Message-----
From: Guzmán Llambías [mailto:guzman.llamb...@pyxisportal.com]
Sent: Freitag, 14. Februar 2014 15:54
To: users@cxf.apache.org
Subject: wsa-action missing in decoupled responses
Hi guys!
I’m working with ws-addressing with decoupled responses and I’m having
some
trouble. My client calls the WS, the WS responds to the client and to the
decoupled endpoint, but the answer is never processed by the client.
Looking at
the answer, I found that the wsa:Action is missing and that’s the reason
the
client cannot understand the answer is from the service.
Here’s the WS response to the client:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:d133fb60-70c7-
4a93-a293-7f8c89e6896c</MessageID>
<To
xmlns="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/
addressing/anonymous</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/none</Address>
</ReplyTo>
</soap:Header>
<soap:Body/>
</soap:Envelope>
Here’s my Service config:
@WebService(targetNamespace="http://abitab.com.uy/servicios/addressing")
@Stateless
@SecurityDomain("JBossWS")
@Addressing(enabled=true,required=true)
@Features(features = "org.apache.cxf.feature.LoggingFeature")
public class AddressingSampleImpl implements AddressingSample {
@WebMethod(action="http://abitab.com.uy/servicios/addressing/add")
public int add(@WebParam(name="num1") int a,
@WebParam(name="num2") int b) throws NegativeNumberException {
if (a < 0 || b <0)
throw new NegativeNumberException("Input data has negative
numbers");
try {
Thread.sleep(25000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return a+b;
}
any idea what I’m missing?
Thanks in advance
Guzmán