实验一二三已经实现了对象消息的传递和数据库的重做。本实验测试在JavaWeb环境下对本地数据库进行修改,对修改过程进行封装、通过ActiveMQ传递以及在异构数据库上重做的过程。整个流程如图所示:
上述图中,本地数据库通过JavaWeb程序对数据库进行进行CURD操作,他的操作过程通过MQAPP序列化之后传递给ActiveMQ服务器,另一端访问JavaWeb程序,得到当前程序修改的信息,访问ActiveMQ服务器获得消息,同时通过CURD对异构数据库进行重做。整个平台的流程和实验二不同在于引入了ApacheTomcat服务器作为WEB服务器,来进行在线操作和调用消息接口。
新建一个Javaweb项目,导入需要的lib文件,导入之前开发的src源代码。新建JSP文件index.jsp作为修改和发送消息的页面。新建jsp页面receive.jsp作为消息接受和重做数据库的接口。Index.jsp代码引入了user类和view类用来对数据对象进行操作。这段代码显示了数据库中的所有信息,点击修改后可以对数据库进行修改,修改后的结果同步到数据库中同时发送消息到ActiveMQ服务器中。
<%@ page language="java" import="java.util.*"pageEncoding="ISO-8859-1"%>
<%@ page import="common.user"%>
<%@ page import="server.curd.bean.view"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
</head>
<body>
result:<br/>
<%
user u = newuser();
view v = newview();
out.println(v.viewAll());
String id =request.getParameter("id");
String name= request.getParameter("name");
Stringpassword = request.getParameter("password");
if (id !=null && (name == null || password == null)) {
u =v.viewOne(id);
} else if(name != null && password != null) {
u.update(id,name,password);
response.sendRedirect("index.jsp");
}
//out.println(u.toString());
%>
<formaction="?action=update" method="GET">
<inputtype="text" name="id" value="<%=id%>" />
<inputtype="text" name="name"value="<%=u.getName()%>" />
<inputtype="text" name="password"value="<%=u.getPassword()%>" />
<inputtype="submit" />
</form>
</body>
</html>
Receive.jsp页面引入消息接受类,接受所有的消息显示到界面上,由用户决定同步到本地那一条数据,或者全部同步。Receive.jsp代码如下:
<%@ page language="java" import="java.util.*"pageEncoding="ISO-8859-1"%>
<%@ page import="client.activemq.QueueReceive"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
</head>
<body>
result:<br/>
<%
QueueReceiveqr = new QueueReceive();
out.println("messagecount:" + qr.receive()+"<br/>");
out.println(qr.viewMessage());
//out.println(qr.doAllReports());
qr = null;
%>
</body>
</html>
通过Tomcat传递消息机制理论上是可行的,但是不知道为什么,消息传递出去后,tomcat服务器就死机了。可能是内存溢出或者和ActiveMQ的冲突。这个问题还没有解决,等下再研究下。
参考
2. QX项目实战-10.基础架构实验一:传递消息、序列化对象和数据库封装