JBossESB学习笔记10——第九个ESB应用JMSTopic.doc_第1页
JBossESB学习笔记10——第九个ESB应用JMSTopic.doc_第2页
JBossESB学习笔记10——第九个ESB应用JMSTopic.doc_第3页
JBossESB学习笔记10——第九个ESB应用JMSTopic.doc_第4页
JBossESB学习笔记10——第九个ESB应用JMSTopic.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JBoss ESB学习笔记10第九个ESB应用JMS Topic续上篇介绍了第八个ESB应用,本文介绍第九个ESB应用JMS Topic。1 概述本实例主要演示了如何配置ESB服务使其从JMS消息主题中获取消息。本实例的主要操作过程是配置了两个ESB服务从JMS消息主题获取消息,并同时将接收到的消息转发给另一个ESB服务进行处理。 2 新建ESB工程操作过程略。 3 ESB配置3.1 创建消息队列和消息主题Xml代码 1 2 3 4 5 jboss.messaging:service=ServerPeer 6 jboss.messaging:service=PostOffice 7 8 9 10 jboss.messaging:service=ServerPeer 11 jboss.messaging:service=PostOffice 12 13 14 15 jboss.messaging:service=ServerPeer 16 jboss.messaging:service=PostOffice 17 18 19 20 jboss.messaging:service=ServerPeer 21 jboss.messaging:service=PostOffice 22 23 24 25 jboss.messaging:service=ServerPeer 26 jboss.messaging:service=PostOffice 27 28 配置说明:这里需要配置一个消息主题用于接收客户端发来的消息。 3.2 定义Provider这里将定义一个JMS Provider,并定义5个消息通道,内容如下:Xml代码 29 30 31 33 34 35 37 38 39 41 42 43 45 46 47 49 50 3.3 定义Action类3.3.1 MessageAugmentor该类是第一个服务和第二个服务的处理类,该类在实例化时,从各自服务配置信息中获取第三个服务的类别和名称,然后创建第三个服务的实例。当接收到消息后,设置消息“addition”属性的值,同时将消息转发到第三个服务进行处理。Java代码 51 /* 52 * Project Name: jmstopic 53 * File Name: com.thu.afa.esb.jbossesb.action.MessageAugmentor.java 54 * Copyright: Copyright (c) 2010 55 * Company: 56 */ 57 package com.thu.afa.esb.jbossesb.action; 58 59 import org.jboss.soa.esb.ConfigurationException; 60 import org.jboss.soa.esb.Service; 61 import org.jboss.soa.esb.actions.AbstractActionLifecycle; 62 import org.jboss.soa.esb.client.ServiceInvoker; 63 import org.jboss.soa.esb.helpers.ConfigTree; 64 import org.jboss.soa.esb.message.Message; 65 66 /* 67 * Class Name: MessageAugmentor 68 * Description: 69 * author Afa 70 * date 2010-9-13 71 * version 1.0 72 */ 73 public class MessageAugmentor extends AbstractActionLifecycle 74 75 private String addition; 76 private Service targetService; 77 78 public MessageAugmentor(ConfigTree configTree) throws Exception 79 80 addition = configTree.getRequiredAttribute(addition); 81 String target = configTree.getRequiredAttribute(target); 82 String targetTokens = target.split(:); 83 84 if(targetTokens.length != 2) 85 throw new ConfigurationException(Action not configured properly - target service property must be in format category:name.); 86 87 88 targetService = new Service(targetTokens0, targetTokens1); 89 90 91 public Message process(Message message) throws Exception 92 93 message.getProperties().setProperty(addition, addition); 94 System.out.println(Received message on Topic. Sending + addition + to + targetService); 95 try 96 97 getInvoker().deliverAsync(message); 98 99 catch (Exception e) 100 101 throw new Exception(Failed to deliver message: + e.getMessage(); 102 103 104 return message; 105 106 107 private ServiceInvoker getInvoker() throws Exception 108 109 try 110 111 return new ServiceInvoker(targetService); 112 113 catch (Exception e) 114 115 throw new Exception(Failed to create ServiceInvoker: + e.getMessage(); 116 117 118 3.3.2 TargetServiceAction第三个服务的处理类,当第三个服务接收到消息后,将消息中“addition”属性打印出来,以验证消息的来源是第一个服务还是第二个服务。Java代码 119 /* 120 * Project Name: jmstopic 121 * File Name: com.thu.afa.esb.jbossesb.action.TargetServiceAction.java 122 * Copyright: Copyright (c) 2010 123 * Company: 124 */ 125 package com.thu.afa.esb.jbossesb.action; 126 127 import org.jboss.soa.esb.actions.AbstractActionLifecycle; 128 import org.jboss.soa.esb.helpers.ConfigTree; 129 import org.jboss.soa.esb.message.Message; 130 131 /* 132 * Class Name: TargetServiceAction 133 * Description: 134 * author Afa 135 * date 2010-9-13 136 * version 1.0 137 */ 138 public class TargetServiceAction extends AbstractActionLifecycle 139 140 protected ConfigTree configTree; 141 142 public TargetServiceAction(ConfigTree configTree) 143 144 this.configTree = configTree; 145 146 147 public Message process(Message message) throws Exception 148 149 String addition = (String) message.getProperties().getProperty(addition); 150 System.out.println(MyService3 Received message: + addition + ); 151 152 return message; 153 154 3.4 定义第一个Service第一个Service监听消息主题,在接收到消息后,将消息转发给第三个Service。Xml代码 155 157 158 160 162 /listeners 163 164 166 167 168 169 170 3.5定义第二个Service第二个Service监听消息主题,在接收到消息后,将消息转发给第三个Service。与第一个服务一样监听同一个消息主题的消息。Xml代码 171 173 174 176 178 /listeners 179 180 182 183 184 185 186 3.6 定义第三个Service第三个Service接收并处理由前两个Service转发来的消息。Xml代码 187 189 190 192 194 195 196 198 199 3.6 配置部署文件部署依赖文件deployment.xml内容如下:Xml代码 200 201 jboss.messaging.destination:service=Topic,name=jmstopicTopic 202 203 jboss.esb.quickstart.destination:service=Queue,name=jmstopicQueue1 204 205 jboss.esb.quickstart.destination:service=Queue,name=jmstopicQueue2 206 207 jboss.esb.quickstart.destination:service=Queue,name=jmstopicQueueResponseGw 208 209 jboss.esb.quickstart.destination:service=Queue,name=jmstopicQueueResponseEsb 210 211 3.7 部署ESB将整个工程导出成一个ESB文件,并保存至JBoss ESB Server的部署目录下,启动JBoss ESB Server即可。 4 ESB客户端4.1 新建Java工程这里略去操作过程以及添加所需要的Jar包,具体操作过程可参考第一个ESB实例说明。4.2 发送消息的客户端该客户端仅仅是向消息主题发送消息,以验证ESB服务之间的互操作。Java代码 212 /* 213 * Project Name: helloworldclient 214 * File Name: com.thu.afa.esb.jbossesb.client.JmsTopicClient.java 215 * Copyright: Copyright (c) 2010 216 * Company: 217 */ 218 package com.thu.afa.esb.jbossesb.client; 219 220 import java.util.Properties; 221 222 import javax.jms.ObjectMessage; 223 import javax.jms.Topic; 224 import javax.jms.TopicConnection; 225 import javax.jms.TopicConnectionFactory; 226 import javax.jms.TopicPublisher; 227 import javax.jms.TopicSession; 228 import javax.naming.Context; 229 import javax.naming.InitialContext; 230 231 /* 232 * Class Name: JmsTopicClient 233 * Description: 234 * author Afa 235 * date 2010-9-13 236 * version 1.0 237 */ 238 public class JmsTopicClient 239 240 private TopicConnectionFactory factory; 241 private TopicSession session; 242 private Topic topic; 243 private TopicConnection connection; 244 245 public void setupConnection() throws Exception 246 247 Properties properties = new Properties(); 248 properties.put(Context.INITIAL_CONTEXT_FACTORY, erfaces.NamingContextFactory); 249 properties.put(Context.URL_PKG_PREFIXES, org.jboss.naming:erfaces); 250 properties.put(Context.PROVIDER_URL, jnp:/:1099); 251 InitialContext context = new InitialContext(properties); 252 253 factory = (TopicConnectionFactory) context.lookup(ConnectionFactory); 254 topic = (Topic) context.lookup(topic/jmstopicTopic); 255 256 257 public void stop() throws Exception 258 259 if(connection != null) connection.stop(); 260 if(session != null) session.close(); 261 if(connection != null) connection.close(); 262 263 264 public void se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论