Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 1.2.1
-
Fix Version/s: None
-
Labels:None
-
Environment:Linux, Java 5, Spring 2.0-rc2, ActiveMQ 4.0.2
-
Number of attachments :
Description
I'm trying to implement an asynchronous method with a result listener just as in the examples:
public void asyncRequestResponse(String stock, ResultListener listener)
But when I call this method the server complains about a missing destination:
java.lang.UnsupportedOperationException: A destination must be specified.
at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:448)
at org.logicblaze.lingo.jms.impl.OneWayRequestor.doSend(OneWayRequestor.java:196)
I have debugged the code and found out that the destination for the response message the server tries to send is null. And that's because the JMSReplyTo field of the request message is also null.
So I debugged the client side and found out that the remote message is classified as a oneway method by the metadata strategy because the method does have no return value. The invoke method of the JMSClientInterceptor checks this first and if it sees that the method is a OneWay method it just uses the send method of the Requestor which does not set a JMSReplyTo address. I think this is the problem.
I hope this was detailed enough to find the problem.
Just to make this clear: The exception does not occur on the client side when sending the REQUEST. I definetly have set the correct destination in the spring configuration because otherwise the request would not reach the server. The exception occurs when the server tries to send the RESPONSE for the request. So when the server tries to set a property in the ResultListener object then the exception occurs because the ReplyTo field of the request is null.