Resin JCA ActiveMQ How to
From Resin 4.0 Wiki
(Difference between revisions)
(Created page with " == Resin, ActiveMQ and JCA == ActiveMQ can be configured in Resin using ActiveMQ's JCA adapter. You can get the ActiveMQ RAR file at: http://repo1.maven.org/maven2/org/...") |
|||
Line 30: | Line 30: | ||
</resource-adapter> | </resource-adapter> | ||
− | <connection-factory class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" name="activemq" /> | + | <connection-factory |
+ | class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" | ||
+ | name="activemq" /> | ||
+ | |||
<jms-queue class="org.apache.activemq.command.ActiveMQQueue" name="test"> | <jms-queue class="org.apache.activemq.command.ActiveMQQueue" name="test"> | ||
<init physical-name="queue.test" /> | <init physical-name="queue.test" /> | ||
</jms-queue> | </jms-queue> | ||
+ | |||
</web-app> | </web-app> | ||
</pre></code> | </pre></code> |
Latest revision as of 00:00, 6 February 2013
Resin, ActiveMQ and JCA
ActiveMQ can be configured in Resin using ActiveMQ's JCA adapter.
You can get the ActiveMQ RAR file at:
http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/5.7.0/activemq-rar-5.7.0.rar
In the resin.xml, you'll need to add a <resource-deploy> tag to tell Resin where to look for resources:
<resin xmlns="http://caucho.com/ns/resin">
<cluster id="">
<host id="">
<resource-deploy path="/somedir/that/has/jca-rar/files/deploy"/>
...
</host>
</cluster>
</resin>
Then, in your resin-web.xml (under WEB-INF of your webapp), you'll need to configure the connector. It will look like:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://caucho.com/ns/resin">
<resource-adapter class="org.apache.activemq.ra.ActiveMQResourceAdapter">
<init server-url="vm://localhost" />
</resource-adapter>
<connection-factory
class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory"
name="activemq" />
<jms-queue class="org.apache.activemq.command.ActiveMQQueue" name="test">
<init physical-name="queue.test" />
</jms-queue>
</web-app>
- The <resource-adapter> configures a JCA resource-adapter.
- The <init> block configures the resource adapter parameters. Refer to ActiveMQ or the ra.xml file of the expanded rar file to see what parameters you can configure.
- The <connection-factory> configures the outbound factory
- The <jms-queue> configures the Queue (i.e. the adminobject)
package com.example;
import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Named;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Sender
*/
@WebServlet("/Sender")
public class Sender extends HttpServlet {
@Inject @Named("activemq")
QueueConnectionFactory _factory;
@Inject @Named("test")
Queue _queue;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
QueueConnection conn = null;
QueueSession session = null;
QueueSender sender = null;
try {
conn = _factory.createQueueConnection();
session = conn.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
sender = session.createSender(_queue);
sender.send(_queue, session.createTextMessage("test"));
response.getWriter().println("SENT");
} catch (JMSException e) {
throw new ServletException(e);
} finally {
try {
conn.close();
session.close();
sender.close();
} catch (JMSException e) {
throw new ServletException(e);
}
}
}
}