使用 CBE 和 JAXB 集成实现对 WebSphere Application Server 上应用程序的业务数据监控
2009-10-28 00:00:00 来源:WEB开发网构造 CBE 消息正文: 定制好 CBE Header 后,我们需要将截获的企业元数据信息通过 JAXB 的 Marshller 接口进行序列化转化,作为整个 CBE 的 Payload 嵌入到 XML Body 之中。清单 5 给出了构造定义 CBE 消息正文的样例代码。
清单 5. 构造 CBE 消息正文 // 定义输出流,并与元数据进行绑定
java.io.ByteArrayOutputStream outputStream =
new java.io.ByteArrayOutputStream();
Class recordClass = Class.forName(recordName);
javax.xml.bind.JAXBContext jaxbCtx =
javax.xml.bind.JAXBContext.newInstance(recordClass);
javax.xml.bind.Marshaller marshaller =
jaxbCtx.createMarshaller();
marshaller.setProperty(
javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
marshaller.setProperty(
javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
// 转换元数据并加载到输出流
marshaller.marshal(businessObject, outputStream);
String xml = outputStream.toString();
// 将 event(header, 元数据)转换为标准 XML
event.addAny(xml.substring(xml.indexOf(">") + 1));
eventXMLString = org.eclipse.hyades.logging.events.cbe.
util.EventFormatter.toCanonicalXMLDocString(event);
发送 CBE: 将 CBE 发送到指定的应用服务器上,我们需要事先定义好相应的队列连接工厂以及相应的队列,然后通过 JMS 进行数据的发送。清单 6 给出了发送 CBE 的样例代码。
更多精彩
赞助商链接