报告(四)(2)
时间:2010-12-06
信息驱动的 bean
现在我们可以记录客户端事务响应次数并将它们通过HTTP/SOAP的运输,我们需要一条可以在应用服务器上处理这些报告的方法。最适合完成这个任务的就是信息驱动的EJB组件因为响应次数报告应该异步地搬运到用户事务上。Web 服务类 Tie将XML ClientReport对象列队。下面的EJB代码可读取和处理这些报告:
package TestBean;
import javax.jms.*;
import javax.ejb.*;
import Payload.*;
/**
* Created May 23, 2003 6:01:04 PM
* Code generated by the Sun ONE Studio EJB Builder
* @author Brian
*/
public class TestMDBBean implements
javax.ejb.MessageDrivenBean, javax.jms.MessageListener {
private transient javax.ejb.MessageDrivenContext context;
/**
* @see javax.ejb.MessageDrivenBean
#setMessageDrivenContext
(javax.ejb.MessageDrivenContext)
*/
public void setMessageDrivenContext
(javax.ejb.MessageDrivenContext aContext) {
context=aContext;
}
/**
* See section 15.4.4 of the EJB 2.0 specification
*/
public void ejbCreate() {
}
/**
* @see javax.jms.MessageListener#onMessage(javax.jms.Message)
*/
public void onMessage(javax.jms.Message aMessage) {
TextMessage msg = null;
try {
if (aMessage instanceof TextMessage) {
msg = (TextMessage) aMessage;
String crXML = msg.getText();
//System.out.println("MESSAGE BEAN: Message");
//System.out.println(crXML);
ClientReport cr = Serializer.ClientReportXML(crXML);
System.out.println
("Took:" + String.valueOf(cr.getClientElapsedMS()) +
" MS. for: " + cr.getType().toString());
} else {
System.out.println("Message of wrong type: " +
aMessage.getClass().getName());
}
} catch (JMSException e) {
System.err.println("MessageBean.onMessage: " +
"JMSException: " + e.toString());
context.setRollbackOnly();
} catch (Throwable te) {
System.err.println("MessageBean.onMessage: " +
"Exception: " + te.toString());
}
}
/**
* @see javax.ejb.MessageDrivenBean#ejbRemove()
*/
public void ejbRemove() {
}
}
通常,报告会登记到数据库中用于在线分析和报告。在本例中,我们将报告打印到控制台以便演示客户端如何接收它们的过程。方法 onMessage()使用Serializer.ClientReportXML() 创建来自列队等待的XML字符串的ClientReport对象。我们在这里做一下解码工作以便可以将处理次数保存在事务处理工作流程中。
样品实现
用来运行样品应用的所有代码都可从Resources处下载。我开发代码时使用的工具是Sun ONE Studio, Enterprise Edition Update 1。 这个工具箱包括一个J2EE开发IDE 和一个J2EE应用服务,它的Web 服务设备采用了嵌入式的Java Web Service Developer Pack 1.0_01。 Resources 处有自由下载URL的信息和到开发者文档的链接。
建立和配置服务器应用
这部分假设你已经了解Sun ONE 应用框架的应用知识。另外,本指示假设你使用微软的Windows系统。配置的完整源代码预先已经建立。Web服务客户端和服务器软件包已经生成(并为了次数报告的连续化做好修改),但是下面的描述也包含了关于如何在Sun ONE IDE之内建立组件的一些背景知识。
要建立和配置服务器应用,首先,在Windows 开始菜单中选择程序,再在程序中选择Sun Microsystems,然后依次选择Sun ONE Application Server和 Start Application Server项。
实用类似的Windows 命令可启动IDE。 |