我有一個Restful服務API與JAX-RS和澤西開發。我在TOMCAT 7中部署了相同的部分。現在我想實現Activemq,以便將所有請求保留在隊列中並處理請求資源。如何做到這一點,並與tomcat7集成。如何將ActiveMq與Tomcat7或我的休息服務webapp集成。如何致電該服務。澤西休息網服務與Activemq中間件集成
重要提示: - 在Api中,我使用FilterChaining概念來實現安全性,並且在對主叫方進行驗證後,我只是簡單地將請求轉發給資源。爲此我已經在web.xml中添加了。
感謝
這裏是我的類: -
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, e.g. return status code 429 (Too Many
// Requests)
// see http://tools.ietf.org/html/rfc6585#page-3
((HttpServletResponse) response).sendError(429);
}
}
}
}
這裏是我的示例類的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());
}
}
}
現在,如果任何請求在極限到來過濾器類,我經過一些認證mecanisam後直接轉發到資源。這就是爲什麼我使用過濾器概念來捕獲所有請求。
第二課是當我跑步時的示例類;消息傳遞正在進行和退出;我可以在控制檯中看到ActiveMq。
在第一節中,我簡單地寫了「chain.doFilter(request,response)」將所有http請求轉發給相應的資源。現在該怎麼辦。何處放置HTTP請求。我需要異步處理每個請求。 REST是同步的。
請建議一些方法。並解釋你的答案。
謝謝/問候 庫馬爾Shorav
downvoter請評論。這個問題出了什麼問題? – Kumar
您對HttpServletRequest中的自定義對象感興趣嗎?或者您需要它,因爲您想稍後將信息傳遞迴客戶端? – Phani
@Phani是的,在Httpservlet請求內。 – Kumar