servicio web jersey rest con integración de middleware Activemq

Tengo una API de servicio Restful desarrollada con JAX-RS y jersey. Implementé lo mismo en TOMCAT 7. Ahora me gustaría implementar Activemq para mantener toda la solicitud en una cola y procesar el recurso de solicitud. Cómo hacerlo e integrar con tomcat7. Cómo integrar ActiveMq con Tomcat7 o mi aplicación de servicio de descanso. Cómo llamar al servicio

Importante: – Dentro de Rest Api, estoy usando el concepto FilterChaining para cuestiones de seguridad y luego de la verificación de la parte llamante, simplemente estoy reenviando la solicitud al recurso. Para esto he agregado en web.xml.

Gracias

Aquí está mi clase:

public class LimitFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //some authentication if (true) { // let the request through and process as usual chain.doFilter(request, response); } else { // handle limit case, eg return status code 429 (Too Many // Requests) // see http://tools.ietf.org/html/rfc6585#page-3 ((HttpServletResponse) response).sendError(429); } } } } 

Aquí está mi clase de muestra para activemq: –

 public class Qservlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String body = ""; try { // Create a ConnectionFactory ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin", ActiveMQConnection.DEFAULT_BROKER_URL); // Create a Connection Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("testQ"); TextMessage message = session.createTextMessage(); message.setText( "My text message was send and received");// message.setJMSRedelivered(true); message.setJMSCorrelationID(request.getSession().getId()); connection.start(); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.PERSISTENT); producer.send(message); message = null; MessageConsumer consumer = session.createConsumer(destination); message = (TextMessage) consumer.receive(1000); if (message != null) { body = message.getText(); } producer.close(); consumer.close(); session.close(); connection.close(); } catch (Exception e) { System.out.println(e.toString()); } } } 

Ahora, si hay alguna solicitud en la clase de límite de filtro, estoy reenviando directamente a los recursos después de una autenticación mecanisam. Es por eso que estoy usando el concepto de filtro para atrapar todas las solicitudes.

La segunda clase es clase de ejemplo cuando estoy corriendo; la mensajería es enquing y dequeueing; Puedo ver en la consola de ActiveMq.

En la primera clase, simplemente estoy escribiendo “chain.doFilter (request, response)” para reenviar toda la solicitud http al recurso respectivo. Ahora cómo hacerlo aquí. Dónde colocar la solicitud HTTP Necesito manejar cada solicitud de forma asincrónica. REST es sincrónico

Por favor sugiere alguna forma. y explica tu respuesta.

Gracias / Saludos Kumar Shorav

    ¿Has visto la documentación de REST en Apache ActiveMQ: http://activemq.apache.org/rest.html

    ¿También está hablando de incorporar ActiveMQ como intermediario dentro de Tomcat, o ejecuta el intermediario de ActiveMQ en una caja separada / jvm?

    Como el ActiveMQ independiente tiene API REST lista para usar, como se indica en el enlace anterior.

    consulte: http://java.dzone.com/articles/jms-activemq

    Resuelve tu problema simplemente haz una función para enviar un mensaje e incorpóralo en tu proceso donde no lo necesites.

    La razón por la que está viendo la consola de administración de ActiveMQ mientras golpea la URL de reposo debido a credenciales faltantes, pase las credenciales usando la autenticación básica. Escribí un cliente groovy para llamar a la URL de reposo. Puedes usar algo similar …

     import groovyx.net.http.HTTPBuilder; import groovyx.net.http.Method; import groovyx.net.http.ContentType; import groovyx.net.http.RESTClient; import groovyx.net.http.HttpResponseDecorator; import groovy.json.JsonSlurper; def headers= ["Authorization": 'Basic' +'admin:admin'.bytes.encodeBase64().toString()]; println headers; def restClient = new RESTClient('http://servername:8161'); def restClientResponse = restClient.get(path: '/api/message/queueName?type=queue',headers:headers,requestContentType: ContentType.JSON) println restClientResponse.status; println restClientResponse.headers['Content-Length']; println restClientResponse.getData();