[
https://issues.apache.org/activemq/browse/SM-811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_37920
]
Christian Schneider commented on SM-811:
----------------------------------------
I have attached a new patch.
The core is the method below where I build the Message from the message
exchange.
The Soapaction is now set as: <interface namespace>/<interface name>/<operation
name>
Or /<operation_name> if there is now interface_name.
I think using the interface name is better then the endpoint name. What do you
think?
I have also refactored the startup in the processors and were able to kill some
duplicate code. I hope I did not break anything.
The destination is now initialized in the startup code. I think this should not
harm but do not know exactly.
When I think about it ... the method below should return a Message instead of
TextMessage. I read in the soap binding document I linked that jms binding
should use Bytes Messages. So we are more open for the future with just Message.
What do you think about the patch?
---
protected TextMessage createMessageFromExchange(Session session,
MessageExchange exchange) throws Exception {
TextMessage msg = session.createTextMessage();
NormalizedMessage nm = exchange.getMessage("in");
fromNMS(nm, msg);
// Build the SoapAction from <interface namespace>/<interface
name>/<operation name>
String soapAction = "";
if (exchange.getOperation()!= null) {
String interFaceName =
exchange.getInterfaceName()== null ? "" :
exchange.getInterfaceName().getNamespaceURI() +
"/" + exchange.getInterfaceName().getLocalPart();
soapAction = interFaceName + "/" +
exchange.getOperation();
}
msg.setStringProperty("SoapAction", soapAction);
msg.setStringProperty("SOAPJMS_soapAction", soapAction);
return msg;
}
> servicemix-jms does not set SoapAction property for SOAP jms messages
> ---------------------------------------------------------------------
>
> Key: SM-811
> URL: https://issues.apache.org/activemq/browse/SM-811
> Project: ServiceMix
> Issue Type: Bug
> Components: servicemix-jms
> Affects Versions: 3.0, 3.0.1, 3.1
> Environment: Tested with Tibco EMS as jms server and Tibco Business
> works as system providing the service. The error should also occur with
> ActiveMQ.
> Reporter: Christian Schneider
> Priority: Critical
> Attachments: servicemix-jms-sm-811-2.patch,
> servicemix-jms-sm-811.patch, servicemix-jsr181-sm-811.patch
>
>
> When tibco is the client all works well but when tibco implements the service
> it rejects the soap/jms message as it wants the SoapAction jms property to be
> set.
> I have added a dummy SoapAction in StandardProviderProcessor:
> ...
> MessageProducer producer = session.createProducer(destination);
> TextMessage msg = session.createTextMessage();
> NormalizedMessage nm = exchange.getMessage("in");
> fromNMS(nm, msg);
> String soapAction = "default";
> msg.setStringProperty("SoapAction", soapAction);
> ...
> I was able to do a complete request/reply with tibco in this way. Of course
> the "default" SoapAction will only help if my service has only one method.
> From what I see in Tibco the SoapAction should at least contain the method
> name of the service being called.
> The servicemix-jms component should by default set this property to make it
> more compatible with other soap/jms compatible systems.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira