JBoss ESB学习笔记2第一个ESB应用Hello WorldWord格式文档下载.docx
《JBoss ESB学习笔记2第一个ESB应用Hello WorldWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《JBoss ESB学习笔记2第一个ESB应用Hello WorldWord格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
![JBoss ESB学习笔记2第一个ESB应用Hello WorldWord格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/29/4276d8df-83eb-480c-946a-d7ae08b2d697/4276d8df-83eb-480c-946a-d7ae08b2d6971.gif)
2.1.3ftp-provider
FTP入口,可以定义入口FTP服务器的IP,用户名,密码,目录路径等信息。
当有文件被上传到定义好的FTP服务器目录时,接口入口对应的监听器就可以监听到文件,并将文件内容通过Message的形式传递给接口程序。
这个接口适合于通过FTP和我们系统进行通讯的接口。
2.1.4sql-provider
数据库表接口。
这个Provider适合于表接口程序。
外部系统对某一个表的数据库操作可以被对这个Provider进行监听的监听器捕捉到,并调用相关的Action进行处理。
2.1.5http-provider
HTTP方式的接口接入定义,通过http-provider,可以向外提供HTTP形式的接口,并接收来自这个接口的HTTP请求,可以通过请求获取到请求参数。
除了通过HTTP接口提供对外接口以外,也可以通过这个接口方式来提供服务集成,我们可以在门户上指定ESB上的HTTP-Provider接口,并通过这个接口去访问外部接口,再将外部接口返回的数据封装成HTML能识别的格式,发送给门户上的Portal,从而实现服务集成。
2.1.6jbr-provider
通过jbr-provider,可以实现WebService的接口中介功能。
2.2Service
Service是JBossESB对外发布的服务,一个Service一般包括两个部分,一个是Listener,一个是Action。
Listener负责监听客户端接口发起者发送过来的消息,Action负责处理接口请求。
一个Service可以有多个Listener,对多个接口入口请求;
一个Service也可以有多个Action,不同的Action可以有不同的处理逻辑,也可以通过Router将多个Service组装起来,形成服务链条的形式提供服务。
2.3Listener
Listener是JBossESB提供的各类形式的provider的监听器,通过Listener,可以获取客户端发送到Provider上的各类消息。
2.3.1jms-listener
JMS的监听器,通过jms-listener来监听通过jms-provider进来的消息。
2.3.2fs-listener
文件系统的监听器,通过fs-listener来监听通过fs-provider进来的消息。
2.3.3ftp-listener
ftp监听器,通过ftp-listener来监听通过ftp-provider进来的消息。
2.3.4sql-listener
sql监听器,通过sql-listener监听通过sql-provider进来的消息。
2.3.5http-gateway
http监听器,监听来自http-provider的消息。
2.3.6udp-listener
udp-listener用来监听指定端口的socket请求,udp-listener相对其他listener比较特殊,他无需定义provider,可以直接通过listener配置来监听指定端口的socket消息。
2.4Action
Action是在Service节点下面配置的,用于相应接口请求。
Action可以是我们开发人员开发的继承了AbstractActionLifecycle类的javaclass,可以在配置中指定process属性,表明这个Action要执行的方法名称,也可以指定exceptionMethod属性,标明当异常出现的时候,要执行的方法名称。
除了可以开发Action来处理业务逻辑以外,还可以通过Action来做数据转换,服务路由等。
JBossESB提供了若干自带的Action。
3Provider定义
在JBossESBEditor中,新建JMSProvider,输入名称和连接工厂名称,分别是:
JBossMQ和ConnectionFactory。
点击下一步,输入通道ID:
helloworldChanel。
4定义消息队列
在JBossESBEditor中,选中Filter节点,输入目的地名称:
queue/helloworld选中目的地类型为QUEUE(队列),之后保存。
5创建服务
在JBossESBEditor中,选中Service节点,新建服务,输入服务名称,类别以及描述信息,Finish即可。
回到JBossESBEditor,设置invmScope属性为GLOBAL。
该这只的具体含义以后会做介绍,这里不做说明。
6创建JMSListener
在JBossESBEditor中,选中Listener节点,新建JMSListener,输入监听器的名称,同时选中之前创建的通道的ID。
最后在JBossESBEditor中设置该监听器的is-gateway属性为true。
这使得ESB可以直接处理JMS消息。
Ifyousendamessagedirectlytoanotherserviceinternally,itmustbeanEsbMessage!
OnlyGatewaysarecapableofreceivingrealJMSmessages..——某网友语
7Action类定义
由于这里使用的是自定义的action,所以在配置action之前需要编写一个扩展了AbstractActionLifecycle类的action类,类定义如下:
Java代码
1/***********************************************************************
2*<
p>
ProjectName:
helloworld<
/p>
3*<
FileName:
com.thu.afa.esb.jbossesb.action.HelloWorldAction.java<
4*<
Copyright:
Copyright(c)2010<
5*<
Company:
<
ahref="
"
>
<
/a>
6***********************************************************************/
7packagecom.thu.afa.esb.jbossesb.action;
8
9importorg.jboss.soa.esb.actions.AbstractActionLifecycle;
10importorg.jboss.soa.esb.helpers.ConfigTree;
11importorg.jboss.soa.esb.message.Message;
12
13/**
14*<
ClassName:
HelloWorldAction<
15*<
Description:
16*@authorAfa
17*@date2010-9-6
18*@version1.0
19*/
20publicclassHelloWorldActionextendsAbstractActionLifecycle
21{
22protectedConfigTreeconfigTree;
23
24publicHelloWorldAction(ConfigTreeconfigTree)
25{
26this.configTree=configTree;
27}
28
29publicMessagedoPrintMessage(Messagemessage)throwsException
30{
31System.out.println(message.getBody().get());
32
33returnmessage;
34}
35}
Action类说明:
在action类中必须有一个ConfigTree类型的属性以及一个包含ConfigTree类型参数的构造方法,而逻辑处理方法(这里是doPrintMessage)的参数和返回值都必须是Message。
8Action配置
在JBossESBEditor中,选中Action节点,新建CustomAction,如下图所示,输入名称,类路径,并指定处理方法。
到此,ESB工程的配置基本完成,下面可以进行部署了。
9ESB部署
首先在esbcontent文件夹下新建jbm-queue-service.xml文件,内容如下:
Xml代码
36<
?
xmlversion="
1.0"
encoding="
UTF-8"
37<
server>
38<
mbeancode="
org.jboss.jms.server.destination.QueueService"
39name="
jboss.esb.helloworld.destination:
service=Queue,name=helloworld"
40xmbean-dd="
xmdesc/Queue-xmbean.xml"
41<
dependsoptional-attribute-name="
ServerPeer"
42jboss.messaging:
service=ServerPeer
43<
/depends>
44<
depends>
jboss.messaging:
service=PostOffi