ActiveMQ

From Resin 3.0

(Difference between revisions)
Jump to: navigation, search
 
Line 7: Line 7:
 
== JCA ==
 
== JCA ==
  
ActiveMQ can be configured in Resin using ActiveMQ's JCA adapter. 
 
  
You can get the ActiveMQ RAR file at:
+
== Resin, ActiveMQ and JCA ==
  
http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/5.7.0/activemq-rar-5.7.0.rar
+
ActiveMQ can be configured in Resin using ActiveMQ's JCA adapter. The .rar file is in apache-activemq-5.0.0/lib/options/activemq-rar-5.0.0.rar
  
In the resin.xml, you'll need to add a <resource-deploy> tag to tell Resin where to look for resources:
+
In the resin.conf, you'll need to add a <resource-deploy> tag to tell Resin where to look for resources:
 
<code><pre>
 
<code><pre>
 
   <resin xmlns="http://caucho.com/ns/resin">
 
   <resin xmlns="http://caucho.com/ns/resin">
 
     <cluster id="">
 
     <cluster id="">
 
         <host id="">
 
         <host id="">
           <resource-deploy path="/somedir/that/has/jca-rar/files/deploy"/>
+
           <resource-deploy path="deploy"/>
 
             ...
 
             ...
 
         </host>
 
         </host>
Line 25: Line 24:
 
</pre></code>
 
</pre></code>
  
Then, in your resin-web.xml (under WEB-INF of your webapp), you'll need to configure the connector.  It will look like:
+
Then, in your resin-web.xml, you'll need to configure the connector.  It will look like:
 
<code><pre>
 
<code><pre>
<?xml version="1.0" encoding="UTF-8" ?>
+
  <web-app xmlns="http://caucho.com/ns/resin">
<web-app xmlns="http://caucho.com/ns/resin">
+
   
 +
    <resource-adapter uri="activemq:">
 +
        <init server-url="vm://localhost"/>
 +
    </resource-adapter>
  
<resource-adapter class="org.apache.activemq.ra.ActiveMQResourceAdapter">
+
    <connection-factory uri="activemq:" name="activemq"/>
<init server-url="vm://localhost" />
+
</resource-adapter>
+
    <jms-queue uri="activemq:" name="test">
 
+
        <init physical-name="queue.test"/>
<connection-factory class="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" name="activemq" />
+
    </jms-queue>
<jms-queue class="org.apache.activemq.command.ActiveMQQueue" name="test">
+
  </web-app>
<init physical-name="queue.test" />
+
</pre></code>
</jms-queue>
+
</web-app>
+
</pre></code>
+
  
 
* The <resource-adapter> configures a JCA resource-adapter.   
 
* 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 uri="activemq:" is an alias for class="org.apache.activemq.ra.ActiveMQResourceAdapter" (contained in resin-support.jar) 
 +
* The <init> block configures the resource adapter parameters.
 
* The <connection-factory> configures the outbound factory
 
* The <connection-factory> configures the outbound factory
* The <jms-queue> configures the Queue (i.e. the adminobject)
+
* The <bean> configures the Queue (i.e. the adminobject)
  
 
<code><pre>
 
<code><pre>
package com.example;
+
package demo;
  
import java.io.IOException;
+
import javax.jms.*;
 +
import javax.servlet.*;
 +
import javax.webbeans.*;
  
import javax.inject.Inject;
+
public class DemoServlet extends GenericServlet {
import javax.inject.Named;
+
  @In ConnectionFactory _factory;
import javax.jms.JMSException;
+
  @Named("test") Queue _queue;
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);
+
}
+
}
+
}
+
  
 +
  public void service(...)
 +
  {
 +
    ...
 +
    Connection conn = _factory.createConnection();
 +
    Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
 +
    session.send(_queue, session.createTextMessage("test"));
 +
    ...
 +
  }
 
}
 
}
 
 
</pre></code>
 
</pre></code>

Latest revision as of 00:00, 6 February 2013

40px-Edit-clear.png This article requires cleanup and may refer to a legacy version of Resin.

Please visit http://www.caucho.com/documentation/ for the most up-to-date documentation.

See Also

General documentation is available about Resin Messaging.

JCA

Resin, ActiveMQ and JCA

ActiveMQ can be configured in Resin using ActiveMQ's JCA adapter. The .rar file is in apache-activemq-5.0.0/lib/options/activemq-rar-5.0.0.rar

In the resin.conf, 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="deploy"/>
            ...
         </host>
     </cluster>
  </resin>

Then, in your resin-web.xml, you'll need to configure the connector. It will look like:

  <web-app xmlns="http://caucho.com/ns/resin">
    
     <resource-adapter uri="activemq:">
        <init server-url="vm://localhost"/>
     </resource-adapter>

     <connection-factory uri="activemq:" name="activemq"/>
 
     <jms-queue uri="activemq:" name="test">
         <init physical-name="queue.test"/>
     </jms-queue>
  </web-app>
  • The <resource-adapter> configures a JCA resource-adapter.
  • The uri="activemq:" is an alias for class="org.apache.activemq.ra.ActiveMQResourceAdapter" (contained in resin-support.jar)
  • The <init> block configures the resource adapter parameters.
  • The <connection-factory> configures the outbound factory
  • The <bean> configures the Queue (i.e. the adminobject)
package demo;

import javax.jms.*;
import javax.servlet.*;
import javax.webbeans.*;

public class DemoServlet extends GenericServlet {
  @In ConnectionFactory _factory;
  @Named("test") Queue _queue;

  public void service(...)
  {
    ...
    Connection conn = _factory.createConnection();
    Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    session.send(_queue, session.createTextMessage("test"));
    ...
  }
}
Personal tools