Database 如何将从消息驱动bean检索到的数据保存到数据库?
我希望对应用程序使用n层体系结构,以便客户端层、web层、业务层和数据层是分开的。我想知道一个具有消息的消息驱动bean如何在不改变体系结构的情况下将其保存到数据库中。(也就是说,使用一个普通的会话bean,我检索了通过JSP页面输入到servlet的数据,并从名为bean类的servlet(该类对数据库进行了操作)中检索到数据,但不可能对消息驱动bean执行此操作,因为它已经有一个覆盖的onMessage方法) 到目前为止,我可以使用消息bean直接从servlet检索值,但我想将其更改为4层体系结构,其中数据库操作不在servlet中 我的servlet代码Database 如何将从消息驱动bean检索到的数据保存到数据库?,database,jakarta-ee,message-driven-bean,Database,Jakarta Ee,Message Driven Bean,我希望对应用程序使用n层体系结构,以便客户端层、web层、业务层和数据层是分开的。我想知道一个具有消息的消息驱动bean如何在不改变体系结构的情况下将其保存到数据库中。(也就是说,使用一个普通的会话bean,我检索了通过JSP页面输入到servlet的数据,并从名为bean类的servlet(该类对数据库进行了操作)中检索到数据,但不可能对消息驱动bean执行此操作,因为它已经有一个覆盖的onMessage方法) 到目前为止,我可以使用消息bean直接从servlet检索值,但我想将其更改为4层
@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) {
}
}
您必须考虑两种可能的工作流:
- DAO:数据访问对象层。这负责在没有业务逻辑的情况下持久化和查询数据库。使用无状态会话bean实现
- BL:业务逻辑层。这负责流程业务逻辑,不知道数据将被保存或查询到哪里,只调用DAO层。它还独立于视图层(Web、Web服务、Rest等)
- Serlvet:在这种情况下,表示与用户直接调用BL以获取过程数据的视图层或web交互
- MDB:该层用于异步事件,它将队列(或主题)中的消息排出队列,然后调用BL层处理检索到的数据李>
- 一,。Servlet使消息A、B、C排队
- 二,。MDB出列A
- iii.MDB呼叫BL
- 四、BL呼叫DAO
- 五,。DAO与数据库交互
非常感谢你!因此,应该有一个无状态会话bean,它必须与消息驱动bean一起使用?是的,MDB的唯一目的是获取消息(出列),验证它,然后调用其他无状态会话bean来进行业务逻辑。