1
我想爲應用程序使用n層架構,因此客戶端層,Web層,業務層和數據層是分開的。我想知道消息驅動bean如何在不改變體系結構的情況下將消息保存到數據庫中。 (這是使用正常的會話bean,我檢索到通過JSP頁面輸入到servlet的數據,並從servlet調用了對數據庫有操作的bean類,但它不可能使用消息驅動的bean執行此操作,因爲它已經具有onMessage上的重寫方法)如何保存到從消息驅動bean檢索的數據庫數據?
到目前爲止,我可以直接使用消息bean從servlet中檢索值,但是我想將其更改爲數據庫操作不在servlet中的4層架構。
我的servlet代碼
@Resource(mappedName = "jms/dest")
private Queue dest;
@Resource(mappedName = "jms/queue")
private ConnectionFactory queue;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String str = request.getParameter("message");
try {
sendJMSMessageToDest(str);
} catch (JMSException ex) {
}
private Message createJMSMessageForjmsDest(Session session, Object messageData) throws JMSException{
TextMessage tm = session.createTextMessage();
tm.setText(messageData.toString());
return tm;
}
private void sendJMSMessageToDest(Object messageData) throws JMSException{
Connection connection = null;
Session session = null;
try {
connection = queue.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(dest);
messageProducer.send(createJMSMessageForjmsDest(session,messageData));
} catch (JMSException ex) {
}
}
非常感謝您!所以應該有一個無狀態的會話bean,它必須與消息驅動bean一起使用? – dopplegang1234
是的MDB的唯一目的是獲取消息(出隊),驗證它,然後調用其他無狀態的業務邏輯。 –
再次感謝你,你是一個拯救生命的人! – dopplegang1234