JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx

上传人:b****8 文档编号:22222044 上传时间:2023-02-03 格式:DOCX 页数:16 大小:53.56KB
下载 相关 举报
JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx_第1页
第1页 / 共16页
JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx_第2页
第2页 / 共16页
JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx_第3页
第3页 / 共16页
JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx_第4页
第4页 / 共16页
JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx

《JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx》由会员分享,可在线阅读,更多相关《JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

JBoss ESB学习笔记3第二个ESB应用Hello World ActionWord文件下载.docx

service=ServerPeer

7<

/depends>

8<

depends>

service=PostOffice<

9<

/mbean>

10<

11name="

service=Queue,name=helloworldEsb"

12xmbean-dd="

13<

14<

15<

16<

17<

18name="

service=Queue,name=helloworldResponse"

19xmbean-dd="

20<

21<

22<

23<

24<

/server>

3.2定义Provider

这里将定义一个JMSProvider,同时定义两个消息通道,一个用于监听客户端发来的消息,另一个用作ESB消息通道。

内容如下:

25<

jms-providerconnection-factory="

ConnectionFactory"

name="

JBossMQ"

26<

jms-busbusid="

helloworldGwChanel"

27<

jms-message-filterdest-name="

queue/helloworldRequest"

28dest-type="

QUEUE"

/>

29<

/jms-bus>

30<

helloworldEsbChanel"

31<

queue/helloworldEsb"

32dest-type="

33<

34<

/jms-provider>

3.3定义Service

35<

servicecategory="

HelloWorld"

description="

HelloWorld"

HelloWorldService"

36<

listeners/>

37<

actions/

38<

/service>

3.4定义Listener

这里定义两个listener,分别用于监听客户端消息和ESB内部消息。

其中,前者用于监听客户端消息,因此需要将其is-gateway属性设置为true。

39<

jms-listenerbusidref="

is-gateway="

true"

40name="

helloworldJMSListener"

41<

helloworldEsbListener"

3.5定义Action类

这里仍然使用自定义的action类,因此需要扩展AbstractActionLifecycle类。

类的全部代码如下:

Java代码

42/***********************************************************************

43*<

p>

ProjectName:

helloworldaction<

/p>

44*<

FileName:

com.thu.afa.esb.jbossesb.action.HelloWorldAction.java<

45*<

Copyright:

Copyright(c)2010<

46*<

Company:

<

ahref="

"

<

/a>

47***********************************************************************/

48packagecom.thu.afa.esb.jbossesb.action;

49

50importorg.jboss.soa.esb.actions.AbstractActionLifecycle;

51importorg.jboss.soa.esb.helpers.ConfigTree;

52importorg.jboss.soa.esb.message.Body;

53importorg.jboss.soa.esb.message.Message;

54

55/**

56*<

ClassName:

HelloWorldAction<

57*<

Description:

58*@authorAfa

59*@date2010-9-7

60*@version1.0

61*/

62publicclassHelloWorldActionextendsAbstractActionLifecycle

63{

64protectedConfigTreeconfigTree;

65

66publicHelloWorldAction(ConfigTreeconfigTree)

67{

68this.configTree=configTree;

69}

70

71publicMessagenoOperation(Messagemessage)throwsException

72{

73returnmessage;

74}

75

76publicMessageprintMessage(Messagemessage)throwsException

77{

78System.out.println("

MessageBody:

"

+message.getBody().get().toString());

79

80returnmessage;

81}

82

83publicMessageplayWithMessage(Messagemessage)throwsException

84{

85Bodybody=message.getBody();

86Stringcontent=body.get().toString();

87StringBufferbuffer=newStringBuffer();

88buffer.append("

Before------------------"

);

89buffer.append(content);

90buffer.append("

After-------------------"

91body.add(buffer.toString());

92

93returnmessage;

94}

95

96publicvoidexceptionHandler(Messagemessage,Throwableexception)

97{

98System.out.println("

!

ERROR!

99System.out.println(exception.getMessage());

100System.out.println("

ForMessage:

101System.out.println(message.getBody().get());

102}

103}

类方法说明:

printMessage方法用于在控制台打印输出消息的内容,playWithMessage方法用于处理消息,而exceptionHandler则是异常处理方法。

3.6配置Action

由于使用了自定义的action类,因此在说明action配置之前介绍了action类的定义。

下面将说明action的配置。

104<

actionsmep="

OneWay"

105<

actionlass="

com.thu.afa.esb.jbossesb.action.HelloWorldAction"

106name="

printAction"

process="

printMessage"

107<

propertyname="

exceptionMethod"

value="

exceptionHandler"

108<

/action>

109<

110name="

playAction"

playWithMessage"

111<

112<

113<

actionclass="

org.jboss.soa.esb.actions.Notifier"

notificationAction"

114<

okMethod"

notifyOK"

115<

notification-details"

116<

NotificationListtype="

OK"

117<

targetclass="

NotifyConsole"

118<

NotifyQueues"

119<

messagePropname="

helloworld"

QueueNotification"

120<

queuejndiName="

queue/helloworldResponse"

121<

/target>

122<

/NotificationList>

123<

/property>

124<

125<

/actions>

配置说明:

这里定义了三个action,当有消息到来时,所有的action将会顺序执行。

即当接收到客户端消息时,将首先执行printAction,该action将会调用HelloWorldAction类的printMessage方法打印消息内容。

之后执行第二个action,即playAction,该action将会调用HelloWorldAction类的playWithMessage方法用于处理printAction传递过来的消息(ESB内部消息)。

之后执行第三个action,即notificationAction,这是一个由JBossESB所提供的处理类,从类名可看出该类用于像指定的位置发出通知,这里的通知位置有两个,一个是控制台,由<

指定,另一个是消息队列:

queue/helloworldResponse,即被第二个action处理后的消息将会被发送到该消息队列,客户端或者其他的应用系统可在此读取消息。

3.7配置部署文件

部署依赖文件deployment.xml内容如下:

126<

jbossesb-deployment>

127<

service=Queue,name=helloworldRequest

128<

129<

service=Queue,name=helloworldEsb

130<

131<

service=Queue,name=helloworldResponse

132<

133<

/jbossesb-deployment>

3.8部署ESB

将整个工程导出成一个ESB文件,并保存至JBossESBServer的部署目录下,启动JBossESBServer即可。

4ESB客户端

4.1新建Java工程

这里略去操作过程以及添加所需要的Jar包,具体操作过程可参考第一个ESB实例说明。

4.2发送消息的客户端

134packagecom.thu.afa.esb.jbossesb.client;

135importjava.util.Properties;

136importjavax.jms.Message;

137importjavax.jms.Queue;

138importjavax.jms.QueueConnection;

139importjavax.jms.QueueConnectionFactory;

140importjavax.jms.QueueSender;

141importjavax.jms.QueueSession;

142importjavax.naming.Context;

143importjavax.naming.InitialContext;

144

145publicclassMain{

146privateQueueConnectionconnection;

147privateQueueSessionsession;

148privateQueuequeue;

149publicvoidsetupConnection()throwsException{

150……

151}

152publicvoidstop()throwsException{

153……

154}

155

156publicvoidsendMessage(Stringtext)throwsException{

157……

158}

159

160publicstaticvoidmain(String[]args)throwsException

161{

162Mainmain=newMain();

163main.setupConnection();

164main.sendMessage("

Llu,missyou,afa"

165main.stop();

166}

167}

其中,省略部门代码如下:

168publicvoidsetupConnection()throwsException

169{

170System.out.println("

ConnectionStarting..."

171

172Propertiesproperties=newProperties();

173properties.put(Context.INITIAL_CONTEXT_FACTORY,"

org.jnp.interfaces.NamingContextFactory"

174properties.put(Context.URL_PKG_PREFIXES,"

org.jboss.naming:

org.jnp.interfaces"

175properties.put(Context.PROVIDER_URL,"

jnp:

//127.0.0.1:

1099"

176InitialContextcontext=newInitialContext(properties);

177

178QueueConnectionFactoryfactory=(QueueConnectionFactory)context.lookup("

179connection=factory.createQueueConnection();

180queue=(Queue)context.lookup("

181session=connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);

182connection.start();

183

184System.out.println("

ConnectionStarted"

185}

186publicvoidstop()throwsException

187{

188if(connection!

=null)connection.stop();

189if(session!

=null)session.close();

190if(connection!

=null)connection.close();

191}

192

193publicvoidsendMessage(Stringtext)throwsException

194{

195QueueSendersender=session.createSender(queue);

196Messagemessage=session.createTextMessage(text);

197sender.send(message);

198sender.close();

199}

运行程序将会在ESB服务器的控制台看到如下图所示输出信息,其中第一行即是printAction打印输出的来自客户端的消息。

第二行显示的是经过playAction处理后的消息,由notificationAction指向控制台的输出通知。

4.3接收消息的客户端

200packagecom.thu.afa.esb.jbossesb.client;

201importjava.util.Properties;

202importjavax.jms.Message;

203importjavax.jms.Queue;

204importjavax.jms.QueueConnection;

205importjavax.jms.QueueConnectionFactory;

206importjavax.jms.QueueSender;

207importjavax.jms.QueueSession;

208importjavax.naming.Context;

209importjavax.naming.InitialContext;

210

211publicclass

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1