我想将n层架构用于应用程序,因此客户端层,Web层,业务层和数据层是分开的。我想知道消息驱动的bean如何将消息保存到数据库而不改变体系结构。 (这是使用正常的会话bean,我检索通过JSP页面输入到servlet的数据,并从称为bean类的servlet,它对数据库有操作,因为它已经有消息驱动bean,所以不可能这样做一个重写的方法onMessage)
到目前为止,我可以直接使用消息bean从servlet中检索值,但我想将其更改为4层体系结构,其中数据库操作不在servlet中。
我的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) {
}
}
答案 0 :(得分:1)
您必须考虑两种可能的工作流程:
下面我将介绍一种可能涵盖启动工作流程的架构。组件是:
此架构支持代码重用和责任分离。
Theres是具有两个工作流程的图表。