Return-Path: Delivered-To: apmail-geronimo-activemq-users-archive@www.apache.org Received: (qmail 8779 invoked from network); 2 Nov 2006 23:57:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Nov 2006 23:57:42 -0000 Received: (qmail 46349 invoked by uid 500); 2 Nov 2006 23:57:53 -0000 Delivered-To: apmail-geronimo-activemq-users-archive@geronimo.apache.org Received: (qmail 46324 invoked by uid 500); 2 Nov 2006 23:57:52 -0000 Mailing-List: contact activemq-users-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: activemq-users@geronimo.apache.org Delivered-To: mailing list activemq-users@geronimo.apache.org Received: (qmail 46315 invoked by uid 99); 2 Nov 2006 23:57:52 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Nov 2006 15:57:52 -0800 X-ASF-Spam-Status: No, hits=0.8 required=10.0 tests=INFO_TLD,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of jason.dillon@gmail.com designates 66.249.92.173 as permitted sender) Received: from [66.249.92.173] (HELO ug-out-1314.google.com) (66.249.92.173) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Nov 2006 15:57:39 -0800 Received: by ug-out-1314.google.com with SMTP id m2so317185ugc for ; Thu, 02 Nov 2006 15:57:18 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:mime-version:content-type:message-id:cc:content-transfer-encoding:from:subject:date:to:x-mailer:sender; b=urq62bTIFJRF4KDDfkFpvbVsU0qzQIprdoyyR3FK2Iy2CjtNckBEGmMkMFqTwfTvFz2g+DqFbDObm48RohyVfj3nJ04Zw8q8oisDYUc/2repF4JFhf1Aad88q+kd0fgTFHAe4bAM05ZguaFNXDDAsJWY0hslmfLvE/tM46m6zDY= Received: by 10.78.118.19 with SMTP id q19mr1708626huc.1162511837371; Thu, 02 Nov 2006 15:57:17 -0800 (PST) Received: from ?10.0.1.3? ( [24.7.69.241]) by mx.google.com with ESMTP id 3sm76551huc.2006.11.02.15.57.12; Thu, 02 Nov 2006 15:57:13 -0800 (PST) Mime-Version: 1.0 (Apple Message framework v752.3) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: Cc: activemq-users@geronimo.apache.org Content-Transfer-Encoding: 7bit From: Jason Dillon Subject: Having problem with EventListener remoting (w/Lingo) Date: Thu, 2 Nov 2006 15:57:15 -0800 To: user@lingo.codehaus.org X-Mailer: Apple Mail (2.752.3) Sender: Jason Dillon X-Virus-Checked: Checked by ClamAV on apache.org Hi folks, I am trying to figure out some of the more advanced Lingo usage... trying to get a simple working example of EventListener remoting, but so far I have had no luck. I'm trying to get a super-simple ping/pong from a client to a set of nodes listening on a topic, where the invocation is one-way, and the server's ping responder will invoke a method on an ping listener to send its pong. This is what I've got: public interface PingListener extends EventListener { void pong(); } public interface PingResponder { void ping(PingListener listener); } public class PingResponderImpl implements PingResponder { public void ping(final PingListener listener) { log.info("Responding to PING") listener.pong(); } } My client is also simple, though in this example I've trimmed out the bits which load the spring ctx and autowire the components: public class PingClient { public void ping() { PingCollector collector = new PingCollector(); responder.ping(collector); // wait for ctrl-c to end } public class PingCollector implements PingListener { public void pong() { log.info("Received PONG"); } } } And then the spring ctx: In this configuration, I see the "Responding to PING" and "Received PONG" log messages, which is followed by some exceptions after a delay: 15:39:43,075 WARN [JmsClientInterceptor] Remote access error: invocation: method 'pong', arguments []; target is null javax.jms.JMSException: edu.emory.mathcs.backport.java.util.concurrent.TimeoutException at org.logicblaze.lingo.jms.impl.MultiplexingRequestor.createJMSException (MultiplexingRequestor.java:205) at org.logicblaze.lingo.jms.impl.MultiplexingRequestor.request (MultiplexingRequestor.java:133) at org.logicblaze.lingo.jms.JmsClientInterceptor.invoke (JmsClientInterceptor.java:138) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:209) at $Proxy6.pong(Unknown Source) ... And then a warning from the MultiplexingRequestor: 15:39:43,113 WARN [MultiplexingRequestor] Response received for unknown correlationID: 2 request: ActiveMQObjectMessage {commandId = 9, responseRequired = true, messageId = ID:Bliss.local-52836-1162510752209-2:6:1:1:2, originalDestination = null, originalTransactionId = null, producerId = ID:Bliss.local-52836-1162510752209-2:6:1:1, destination = temp- queue://ID:Bliss.local-52836-1162510752209-2:13:1, transactionId = null, expiration = 1162510813098, timestamp = 1162510783104, arrival = 0, correlationId = 2, replyTo = null, persistent = true, type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = org.apache.activemq.util.ByteSequence@10e392, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 12390, properties = null, readOnlyProperties = true, readOnlyBody = true, droppable = false} And at this point, the method call to responder.ping() is still blocking. If I change the destination to use a queue, then I get the same timeout trace, but the call to responder.ping() unblocks due to the JMSException being propagated. If I enable a metadata strategy to make this async for one way voids, with something like: The I see the "Responding to PING" but right after I get this exception: 15:46:35,401 WARN [RemoteInvocationTraceInterceptor] Processing of JmsServiceExporter remote call resulted in fatal exception: org.apache.geronimo.gbuild.ping.PingResponder.ping 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) at org.logicblaze.lingo.jms.impl.MultiplexingRequestor.doSend (MultiplexingRequestor.java:189) at org.logicblaze.lingo.jms.impl.OneWayRequestor.send (OneWayRequestor.java:101) at org.logicblaze.lingo.jms.impl.OneWayRequestor.send (OneWayRequestor.java:97) at org.logicblaze.lingo.jms.impl.MultiplexingRequestor.request (MultiplexingRequestor.java:122) at org.logicblaze.lingo.jms.JmsClientInterceptor.invoke (JmsClientInterceptor.java:138) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:209) at $Proxy6.pong(Unknown Source) ... I am using Apple's JDK 1.5, Lingo 1.3 and Spring 2.0. Other simple sync invocations work fine... but I really need to get something working for more complicated invocations to and from an arbitrary set of nodes. Does anyone have any ideas how to get this working? I have been digging around in the lingo svn, looking at the tests. Looks like there is a test that uses an EventListener... and it appears to pass, but I don't know what I am doing differently. I've also been looking for other input on the lingo nabble forums... but so far... no luck. Any help is appreciated. Thanks, --jason