Skip to main content

Generic JMS RA 2.0

Posted by rampsarathy on September 19, 2008 at 1:32 AM PDT

Generic JMS RA 2.0 is available as an alpha version download today, we are working towards promoting it to a release. One of the main features in 2.0 is the ability to use JMS providers that do not support Chapter 8 (Asynchronous message delivery). The synchronous delivery mode (DeliveryType=Synchronous) can be used to integrate such JMS providers. An article is already available that shows how to leverage this feature to integrate with Oracle AQ.
Apart from this, one should also be able to use the provider agnostic load balancing and the reliable message redelivery features that have been available since 1.7

Related Topics >>

Comments

Generic JMS RA 2.0

Hi Ramesh,
I am trying to integrate MQ7.0 and Glassfish 3.0.1. I am using a standalone java program. But i keep getting the following error.
"INFO: Error in allocating a connection. Cause: javax.naming.Reference cannot be cast to javax.jms.ConnectionFactory
javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: javax.naming.Reference cannot be cast to javax.jms.ConnectionFactory
at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:296)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:182)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:159)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:154)
at com.sun.genericra.outbound.ConnectionFactory.createConnection(ConnectionFactory.java:75)
at net.ensode.glassfishbook.MessageReceiver.getMessages(MessageReceiver.java:48)"
I am not able to fix this issue for couple of days. Any lights on this will be of great help. i have posted this to the dev and user communities of glassfish but no one replied. Can you help me with this issue, i am kind of stuck with this and not able to move forward.
Thanks

Hello Ramesh, I had a problem on reconnecting an MDB using the GRA. I think the problem was that one described in the issue 24. . Adding the line "pool.getServerSession()" in the method onException at line 58 of Recconect Helper has solved my issue. Do you think that this line can give problem in the future to my MDB ? Thanks Maria

Hi, Glad to know that its working for you, please do let me know if you have any comments or need any further information -Ramesh

Hi again I found the error. It was the following line in the MDB: @ActivationConfigProperty(propertyName="messageSelector",propertyValue="RECIPIENT = 'MDB'") I did not set "RECPIENT = MDB'" on my messages. After removing messageSelector I get all messages through. Sorry for my interference...

Just write me at steff@designware.dk, if you would like to help me "in private". I really hope that you will help me. I am in the process for evaluation Glassfish to see if it should be the JavaEE server that we choose for our project.

And the sun-ejb-jar.xml looks like this: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"> <sun-ejb-jar> <enterprise-beans> <ejb> <ejb-name>UserHandlerMDB</ejb-name> <mdb-connection-factory> <jndi-name>jms/SimpleQueueConnectionFactory</jndi-name> </mdb-connection-factory> <mdb-resource-adapter> <resource-adapter-mid>eMjavaee#genericra</resource-adapter-mid> <activation-config> <activation-config-property> <activation-config-property-name>DestinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>DestinationProperties</activation-config-property-name> <activation-config-property-value>PhysicalName=UserHandler RQ</activation-config-property-value> </activation-config-property> </activation-config> </mdb-resource-adapter> </ejb> </enterprise-beans> </sun-ejb-jar>

Sorry, the application.xml looks like this: <?xml version="1.0" encoding="UTF-8"?> <application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" id="Application_ID" version="5"> <display-name>eMjavaee</display-name> <module> <ejb>eMejb.jar</ejb> </module> <module> <connector>genericra.rar</connector> </module> </application>

Hi I where not able to comment on http://weblogs.java.net/blog/rampsarathy/archive/2007/03/glassfish_v2_an..., but I really need you help. Please help me solve the following. Thanks!!! I have an application deployed in Glassfish v2. I want a MDB to be driven from a queue named "UserHandler RQ" on a ActiveMQ running at the same server. I can see, from the ActiveMQ console, that the number of consumers on queue "UserHandler RQ" increases by one when I start Glassfish, so it seams like there are some kind of connection. But why is my MDB not called, when I add messages to the queue??? I have been trying to set it up inspired by: http://74.125.77.132/search?q=cache:JyepVPQR7DoJ:activemq.apache.org/sjs... and http://weblogs.java.net/blog/rampsarathy/archive/2007/03/glassfish_v2_an... Besides installing the application, I have run the following, with succes: /bin/asadmin create-resource-adapter-config --property SupportsXA=false:RMPolicy=OnePerPhysicalConnection:ProviderIntegrationMode=javabean:ConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory:QueueConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory:TopicConnectionFactoryClassName=org.apache.activemq.ActiveMQConnectionFactory:XAConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory:XAQueueConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory:XATopicConnectionFactoryClassName=org.apache.activemq.ActiveMQXAConnectionFactory:UnifiedDestinationClassName=org.apache.activemq.command.ActiveMQDestination:QueueClassName=org.apache.activemq.command.ActiveMQQueue:TopicClassName=org.apache.activemq.command.ActiveMQTopic:ConnectionFactoryProperties=brokerURL\\=tcp\\://127.0.0.1\\:61616:LogLevel=FINE eMjavaee#genericra /bin/asadmin create-connector-connection-pool --raname eMjavaee#genericra --connectiondefinition javax.jms.QueueConnectionFactory --transactionsupport LocalTransaction ActiveMQQueueConnectionFactoryPool /bin/asadmin create-connector-resource --poolname ActiveMQQueueConnectionFactoryPool jms/SimpleQueueConnectionFactory I cant attach the entire application so I will have to just show you important files: ----------------- application.xml ------------------------ <?xml version="1.0" encoding="UTF-8"?> eMjavaee eMejb.jar genericra.rar -------- genericra.rar ---------------------------------------------- genericra.rar is included in the .ear -------- UserHandlerMDB.java - in the eMejb.jar --------------- @MessageDriven( name = "UserHandlerMDB", activationConfig = { @ActivationConfigProperty(propertyName="connectionFactoryJndiName",propertyValue="jms/SimpleQueueConnectionFactory"), @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="messageSelector",propertyValue="RECIPIENT = 'MDB'") } ) @TransactionManagement(TransactionManagementType.BEAN) public class UserHandlerMDB implements MessageListener { /** * Default constructor. */ public UserHandlerMDB() { // TODO Auto-generated constructor stub } public void onMessage(Message arg0) { // TODO Auto-generated method stub System.out.println("*********** Besked modtaget *************************"); } } ------------ sun-ejb-jar.xml - in the eMejb.jar -------------------------- <?xml version="1.0" encoding="UTF-8"?> UserHandlerMDB jms/SimpleQueueConnectionFactory eMjavaee#genericra DestinationType javax.jms.Queue DestinationProperties PhysicalName=UserHandler RQ

hi bhanu, i tried with the steps to integrate with jboss messaging, but didn't worked out for jbossmq. thanks Nanda

hi ramesh, i saw the blog which you posted. but that is showing integration with jboss messaging not with jbossmq. could you please help me in integrating with jbossmq?

For jboss integration , please refere http://weblogs.java.net/blog/rampsarathy/archive/2006/12/configuring_gla...

Hi Nanda, I am looking the same thing as you posted..do you get the solution for that. Please let me know. Thanks Bhanu

Hi Ramesh, I am using Jboss activeMq and GlassfishV2. i am trying to connect queue which resides in jboss from glassfish. how should i specify jboss host name in glassfish to consume messages. Thanks Nanda

Hi Ramesh, I try genericjmsra 1.7 + SAS8.2 to achieve reliable JMS delivery that is absent in SAS8.2. All seems to be ok - messages are produced and consumed but redelivery occurs without any delay, just after delivery fails. Redelivery interval parameter is also ignored... Maybe I missed something important? Is it possible to get it working properly? Thanks, Larisa

When i mentioned "today", i meant currently. No there have been no changes to the alpha, we are planning to fix a few issues and promote 2.0 into a release. Let us know if you have any feedback,

Hi Ramesh, I've been using 2.0alpha for quite a while now so your post suprised me somewhat. As a result I just wanted to check if your reference to 2.0alpha being available 'today' means that it's an updated version to the 2.0 alpha that I'm using? (are there any changes etc?). Many thanks, Edd