JBoss ESB学习笔记12——第十一个ESB应用Spring Hello World

合集下载

ESB部署WebService接口(统一用户和待办).

ESB部署WebService接口(统一用户和待办).

1 统一待办(WebService方式)1.1 概述门户系统做为用户访问各集成应用系统的统一入口,用户访问企业内部信息资源时只需要登录到门户系统,就可使用门户系统集成的各个应用,而待办做为各系统中用户需要处理的工作,门户系统需要提供收集建投内部应用系统中产生的待办信息,并且进行统一展现的功能,即统一待办功能。

统一待办应用业务涉及到的系统其中包括本期门户系统建设过程中所需集成的OA、WCM、EAM系统。

为保证门户系统接入各应用系统待办信息的规范性,现就各应用系统接入实现做统一要求,以确保门户系统统一待办功能实现的规范性、重用性及安全性。

不满足本技术方案提供的接入规则的相关应用系统,应参考本文档完成对应用系统改造后方可进行门户系统统一待办接入工作。

统一待办实现共分为以下部分:系统待办信息获取系统待办信息展示系统待办信息处理1.2 待办信息获取设计思路:应用系统通过门户系统提供的webservice接口向门户系统统一待办系统库写入代表信息,如下图数据获取设计示意图步骤如下:1.应用系统需获得最新的待办信息。

2.应用系统通过门户接口,将获得的最新待办信息发送到门户系统。

3.统一待办系统将应用系统提供的待办信息展示给用户。

4.应用系统通过调用集成接口后获得信息,可以判断发送信息操作是否正常。

1.3 待办信息展示设计思路:应用系统将最新的待办信息发送到统一待办系统中,并最终展示到门户首页上的待办栏目上,如下图用户待办栏目页面待办集中展示设计示意图场景如下:在所有的待办类标题前加上”请办理”,待阅类标题前加上”请审阅”。

此外,如果信息是未办或者未阅,用红色表示1.4 待办信息处理设计思路:用户点击门户系统上“待办栏目”里的一条待办时,弹出一个新页面,首先同应用系统实现SSO,然后跳转到应用系统的待办页面,完成待办处理后,由应用系统调用门户接口通知门户系统,并关闭弹出的待办处理页面,门户系统负责即时刷新门户待办页。

ESB讲座资料

ESB讲座资料

ESB讲座资料ESB学习笔记2009-08-11 作者:adventurer 来源:adventurer的blog开始⼊冬时知识储藏啦。

前⼏年听⼀位⾼⼈讲过ESB这个概念,但⼀直没有时间去仔细了解。

⽽近段时间。

找了⼀本ESB in Action学习.准备好好学习ESB啦,以下主要是该书抽取内容。

什么是ESB?ESB,消息服务总线,它是⼀个较新但⼜较难理解的技术。

ESB从集成供应商⾓度来看,它是⼀个产品,这个产品提供⼀体化的功能,开发⼯具,和管理环境。

另⼀个⾓度看,ESB是作为服务为导向架构(SOA )重要组成部分。

从SOA的⾓度看,⼀个ESB可以作为⼀体化平台,使现有的IT资产和应⽤成为服务。

在这⾥,我们将关注开源的ESB的产品,⽬前可⽤的产品有:Mule和Apache ServiceMix 。

如果你问架构师,当今市场那个时髦词最热,企业服务总线(ESB )将是最多的答案。

同时,像⾯向服务的架构(SOA )和商业流程管理(BP 也将提到。

这些流⾏语声⾳⾮常有趣的,但那个才是最有商业价值呢?现在ESB产品有很多,特别是企业应⽤上,我们来看⼀下有哪些,IBM ,TIBCO ,微软和甲⾻⽂。

这些好像都是⼤牌,但所有ESB都有相同的特⽽这⾥我们只提供两个开源产品(Mule 和ServiceMix)ESB特点但⽤于区分相关EAI和ESB产品,⼀个是星形结构的,⽽另⼀个是总线结构的ESB产品。

星型结构模型是⼀种集中式的架构,所有的数据流都由中⼼点来处理。

该星型结构模型可以被看作继承的点对点模式。

⽽总线模型,采⽤分布式体系结构,其中的ESB 功能,可以由⼏个其他物理产品来实现其功能。

第⼆个⽤于区别的EAI和ESB产品是使⽤开放标准是什么。

EAI的产品,如WebSphere的消息代理,TIBCO的BusinessWorks ,和Sonic XQ使⽤专利技术来实现信息功能及传送逻辑。

⽽ESB产品是基于开放标准,如Java消息服务(JMS的),XML和J2EE连接器架构(JCA的),和服务标准。

几种ESB(企业服务总线)架构介绍

几种ESB(企业服务总线)架构介绍

ESB(Enterprise Service Bus,即企业服务总线)是传统中间件技术与XML、Web服务等技术结合的产物。

ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

企业服务总线ESB就是一种可以提供可靠的、有保证的消息技术的最新方法。

ESB中间件产品利用的是Web服务标准和与公认的可靠消息MOM协议接口(例如IBM的WebSphere MQ、Tibco的Rendezvous 和Sonic Software的SoniCMQ)。

ESB产品的共有特性包括:连接异构的MOM、利用Web服务描述语言接口封装MOM协议,以及在MOM传输层上传送简单对象应用协议(SOAP)传输流的能力。

大多数ESB产品支持在分布式应用之间通过中间层如集成代理实现直接对等沟通。

企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service -Oriented Architecture,SOA)发展而来的。

SOA描述了一种IT基础设施的应用集成模型,其中的软构件集是以一种定义清晰的层次化结构相互耦合,其中,一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。

一、ESB的出现改变了传统的软件架构ESB 是传统中间件技术与XML、Web服务等技术相互结合的产物,ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。

从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

二、企业服务总线(ESB)的用处ESB 不是万能的,他不是一个应用程序框架,也不是一个企业应用的解决方案.它只是一个基于消息的调用企业服务的通信模块!你可以把它嵌入到你的应用程序框架中,例如嵌入到spring容器里面,或者嵌入到工作流系统中.它的作用是对企业里面的SOA服务的调用提供一个框架和简便的方法.三、企业服务总线(ESB)的应用特征大规模分布式的企业应用需要相对简单而实用的中间件技术来简化和统一越来越复杂、繁琐的企业级信息系统平台。

跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器下的主题消息组件的开发实例

跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器下的主题消息组件的开发实例

1.1跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器下的主题消息组件的开发实例1、配置本应用中所需要的Topic 目的地的JNDI名称请参考前面的“JBoss应用服务器下的对列消息组件的开发”一文。

2、在JBuilder中开发Topic MDB 组件(1)新建一个Project,名称为JMSTopicEJBBean(2)设定本项目的服务器类型为JBoss(3)在该项目中添加一个EJB Module组件该MDB的名称为JMSTopicMDBBean,版本为2.0。

(4)在该EJB Modual中新建一个Topic MDB1)该MDB的名称为:TopicMDBEJBBean2)Message Selector:为消息的过滤设置3)Transaction type:选择为Container类型(也可以选择为Bean方式)4)Destination Type:选择为javax.jms.Topic5)Durability:选择为NonDurable6)在DestinName:设定为topic/EBussJMSTopicJNDI消息主题的JNDI名称,应该与前面所配置的的JNDI Name名称保持一致,但要加“topic/”前缀。

注意:与Weblogic服务器下的差别是不需要在此设置Connect Factory 的JNDI名称(5)编程该MDB中的onMessage(Message msg)方法(属于MessageListener接口中所定义出的方法)package jmstopicejbbean;import javax.ejb.MessageDrivenBean;import javax.jms.MessageListener;import javax.ejb.MessageDrivenContext;import javax.ejb.CreateException;import javax.jms.*;public class TopicMDBEJBBean implements MessageDrivenBean, MessageListener{ MessageDrivenContext messageDrivenContext;/*在WebLogic服务器下应该声明为public void ejbCreate() throws CreateException{}而在JBoss下则应该声明为,不带throws CreateException 声明public void ejbCreate() {}*/public void ejbCreate(){}public void ejbRemove(){}public void onMessage(Message msg){try{if (msg instanceof TextMessage){TextMessage text = (TextMessage) msg;//在服务器的控制台上打印出客户所发来的消息内容System.out.println("这是第一个MDB所接收的消息:" + text.getText());}else{System.out.println("您发送了不正确的类型消息");}}catch (JMSException e){ //由于TextMessage.getText()方法有异常声明}}public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext){this.messageDrivenContext = messageDrivenContext;}}注意:1)本EJB是接收消息的,即为消息的消费者2)在JBoss服务器下的public void ejbCreate() 方法不能有throws CreateException 声明(6)查看所生成的各种描述文件的内容,了解该MDB的一些描述信息●ejb-jar.xml文件的内容:对MDB的总体描述●jboss.xml文件的内容:对目的地的JNDI描述等运行时的配置(7)编译该项目以产生*.jar文件(8)部署该MDB到JBoss服务器中3、在JBuilder中开发该MDB的消息的发送者(消息的客户程序)(1)在本项目中添加一个消息的客户程序类包名称为jmstopicejbbeanClient,类名称为TopicSend(2)将产生出下面的空程序(3)编程该发送消息的客户程序package jmstopicejbbeanClient;import java.io.*;import java.util.Hashtable;import javax.jms.*;import javax.naming.*;public class TopicSend{private TopicConnectionFactory topicConnectionFactory = null;private TopicConnection topicConnection = null;private TopicSession topicSession = null;private TopicPublisher topicPublisher = null;private Topic topic = null;public final static String JMS_FACTORY_JNDIName="java:/ConnectionFactory";private final static String publishTopicJNDIName = "topic/EBussJMSTopicJNDI";private TextMessage topicTextMessage;public void init(Context ctx, String publishTopicName) throws NamingException, JMSException{//(1)根据JBoss中的JMS Connection Factories的JNDI Name名称获得主题消息所在的Connection Factories对象topicConnectionFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY_JNDIName);//(2)根据Connection Factories对象创建出主题消息的连接器TopicConnection对象topicConnection = topicConnectionFactory.createTopicConnection();//(3)利用主题消息的连接器TopicConnection对象创建出TopicSession类对象topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); //(4)根据Topic消息的JNDI Name名称获得Topic对象topic = (Topic) ctx.lookup(publishTopicName);//(5)利用TopicSession类对象来创建TopicPublisher类对象以进行主题消息的出版发布topicPublisher = topicSession.createPublisher(topic);//(6)利用TopicSession类对象来创建出一个TextMessage类对象以指明所要发布的消息类型为文本类型,并清空消息体以准备新的消息内容topicTextMessage = topicSession.createTextMessage();topicTextMessage.clearBody();//(7)启动主题消息的连接器以准备发布消息topicConnection.start();}public void PublisherTopicText(String TopicMessage) throws JMSException{topicTextMessage.setText(TopicMessage); //(8)设置消息的内容topicPublisher.publish(topicTextMessage); //(9)发送该消息}public void close() throws JMSException{topicPublisher.close();topicSession.close();topicConnection.close();}public static void main(String[] args) throws IOException, JMSException,javax.naming.NamingException{InitialContext initialContext = getInitialContext();TopicSend messageTopicSendClient = new TopicSend();messageTopicSendClient.init(initialContext, publishTopicJNDIName);messageTopicSendClient.GetAndSendTopicMessageText(messageTopicSendClient);messageTopicSendClient.close(); //(10)关闭消息的连接}private void GetAndSendTopicMessageText(TopicSend messageQueueSendClient) throws IOException, JMSException{BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));String userTopicMessageText = null;boolean isQuitNow = false;do {System.out.print("请输入您的主题消息(输入'quit'则退出): ");userTopicMessageText = msgStream.readLine();if (userTopicMessageText != null && userTopicMessageText.trim().length() != 0) {messageQueueSendClient.PublisherTopicText(userTopicMessageText);System.out.println("已经向JMS发送主题消息:" + userTopicMessageText + "\n");isQuitNow = userTopicMessageText.equalsIgnoreCase("quit");}}while (!isQuitNow);}private static InitialContext getInitialContext() throws NamingException{Hashtable environment = new Hashtable();environment.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");environment.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");return new InitialContext(environment);}}注意:在JBoss服务器下的消息客户端程序和在WebLogic服务器下的对比,总的思路是一致的。

跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器的配置和管理详解(第1部分)

跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器的配置和管理详解(第1部分)

1.1跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器的配置和管理详解(第1部分)1、JBoss概述(1)网站JBoss是一个运行EJB的J2EE应用服务器。

它是开放源代码的项目,遵循最新的J2EE 规范。

从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于J2EE的一个Web 操作系统(operating system for web),它体现了J2EE规范中最新的技术。

有关JBoss的详细信息请参阅其主页。

JBoss AOP的作者Bill Burke-----Bill Burke是JBoss公司首席架构师,JBoss AOP项目的领导者,JBoss EJB3.0的领导者之一(另一个是是Gavin King,GK负责Entity Bean,其他部分是Bill Burke负责),EJB 3.0 专家组成员。

(2)JBoss的配置和使用没有提供图形向导界面刚开始使用JBoss进行EJB开发时,由于可供参考的资源不是很多,所以有一个比较困难的起步阶段。

JBoss的配置和使用没有提供图形向导界面,所以开发部署EJB相对比较复杂。

(3)免费的开源的稳定的J2EE服务器JBoss+Tomcat已经成为一个免费的开源的稳定的J2EE服务器,虽然在JBoss中部署J2EE 没有商用J2EE服务器那么方便,基本都是通过手工编写XML配置文件,但是这样可以让我们更容易理解J2EE的来龙去脉。

(4)JAS套件JAS套件包括JBossServer EJB v2.0 Container 和server, JBossMQ JMS 1.0 implemetation, JBossNS JNDI implemetation,JBossCMP advanced O/R mapper和JDBC data object storage implemetation以及JAAS-based JBossSX security frameeork。

Jboss ESB学习笔记3

Jboss ESB学习笔记3

JBoss ESB学习笔记3——第二个ESB应用Hello W orld Action续上篇介绍了第一个ESB应用,本文介绍第二个ESB应用——Hello World Action。

说明:本文及后续文章虽非百分百的原创,但毕竟包含本人的努力和付出,所以希望大家转载时务请注明出处:,谢谢合作。

1 概述该实例主要是用来演示在一个配置文件中配置多个action的调用,下面将要演示的是在一个action类中定义多个调用方法,当然也可以这些调用方法放在不同的类中。

通常,对于一个service而言,需要同时定义两个listener,其中一个是做为Gateway,只负责从外界获取JMS消息,然后转成ESB内部所需要的Message。

而另一个listener是ESB Message在services内部之间通讯的通道。

所以对于每个service来说,一定要至少定义一个listener来作为内部Message传输用,否则,需要将service的invmScope属性设置为GLOBAL。

在下面的例子中,需要定义三个消息队列,一个接收来自客户端的消息,第二个用作ESB 内部Message通道,第三个接收来自ESB的反馈消息,客户端可从该消息队列中获取ESB 的反馈消息。

2 新建ESB工程操作过程略。

3 ESB配置3.1 创建消息队列如概述中所描述,这里将创建三个消息队列。

在esbcontent文件夹下创建文件jbm-queue-service.xml用于配置消息队列,内容如下:Xml代码1<?xml version="1.0"encoding="UTF-8"?>2<server>3<mbean code="org.jboss.jms.server.destination.QueueService"4name="jboss.esb.helloworld.destination:service=Queue,name=helloworldRequ est"5xmbean-dd="xmdesc/Queue-xmbean.xml">6<dependsoptional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer 7</depends>8<depends>jboss.messaging:service=PostOffice</depends>9</mbean>10<mbean code="org.jboss.jms.server.destination.QueueService"11name="jboss.esb.helloworld.destination:service=Queue,name=helloworldEsb" 12xmbean-dd="xmdesc/Queue-xmbean.xml">13<dependsoptional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer 14</depends>15<depends>jboss.messaging:service=PostOffice</depends>16</mbean>17<mbean code="org.jboss.jms.server.destination.QueueService"18name="jboss.esb.helloworld.destination:service=Queue,name=helloworldResp onse"19xmbean-dd="xmdesc/Queue-xmbean.xml">20<dependsoptional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer 21</depends>22<depends>jboss.messaging:service=PostOffice</depends>23</mbean>24</server>3.2 定义Provider这里将定义一个JMS Provider,同时定义两个消息通道,一个用于监听客户端发来的消息,另一个用作ESB消息通道。

跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器的配置和管理详解(第2部分)

1.1跟我学JBoss应用服务器下的J2EE应用开发——JBoss应用服务器的配置和管理详解(第2部分)1、设置Jboss中的控制台以进行登录验证(1)启动JBoss的控制台安装好JBoss并启动JBoss后,在浏览器窗口的地址栏里键入http://localhost:8080/jmx-console就可以浏览JBoss的部署管理的一些信息,默认情况下不键入任何用户名和密码就可以进入此页面方便是方便,但真正使用起来还是有点安全隐患,因为不管任何人只要知道服务器主机的IP地址都可以进去访问。

(2)给JBoss的控制台增加用户登录验证下面我们针对此问题对JBoss进行配置,使得访问jmx-console也必须要知道用户名和密码才可进去访问。

(3)配置步骤进入jmx-console.war的目录,通常此目录在{jboss_home}\server\default\deploy目录下。

●编辑该目录下的WEB-INF\web.xml文件,把其中的<security-constraint>部分注释去掉●编辑该目录下的WEB-INF\classes的roles.properties和users.properties两文件(新建它们),其中在users.properties文件里定义用户名和密码,格式为username=password。

当然,可以依照此格式添加多个用户。

而在roles.properties文件里定义用户名和角色,格式为username=role。

这里的role必须和web.xml文件里的<role-name>相对应(本例为JBossAdmin)。

编辑WEB-INF\jboss-web.xml文件,打开<security-domain>部分注释注意:这里<security-domain>内容对应的security-domain对应{jboss_home}\server\default\conf\login-config.xml这个jaas配置文件里的某个application-policy。

Jboss ESB学习笔记2

JBoss ESB学习笔记2——第一个ESB应用Hello World续上文搭建好开发环境后就可以开发ESB应用了。

本文介绍第一个ESB应用——Hello, World。

说明:本文及后续文章虽非百分百的原创,但毕竟包含本人的努力和付出,所以希望大家转载时务请注明出处:,谢谢合作。

1. 新建ESB工程如下两图所示,输入项目名称,选中JBoss ESB Runtime。

2. 基本概念介绍在进行下面的操作之前有必要介绍JBoss ESB的一些基本概念,如果没有这些概念作基础,而仅仅是机械的操作,那是没有意义的。

2.1 Provider在JBoss ESB中,使用Provider定义来提供ESB对外的入口,常用的Provider有:jms-provider,fs-provider,ftp-provider,schedule-provider,sql-provider,http-provider,jms-jca-provider,jbr-provider等。

2.1.1 jms-provider用户定义JMS的接口入口,对外发布的接口可以通过JMS的形式提供出去,通过在jboss-esb.xml文件中定义JMS 的Provider,同时定义JMS监听器,就可以从监听器接收到来自客户端的JMS请求。

2.1.2 fs-provider文件系统的接口入口,可以定义接入的文件目录,文件扩展名等信息,当特定的文件被透过任意途径放到接入目录后,监听fs-provider的监听器就可以接收到消息,并可以读取到文件的内容,文件被处理后,还可以被移动到特定的目录下,也可以修改文件的后缀名以标识文件已经被接口程序处理过了。

2.1.3 ftp-providerFTP入口,可以定义入口FTP服务器的IP,用户名,密码,目录路径等信息。

当有文件被上传到定义好的FTP服务器目录时,接口入口对应的监听器就可以监听到文件,并将文件内容通过Message的形式传递给接口程序。

ESB汇总

ESB汇总所谓的企业服务总线是一新兴的整合技术,主要于企业应用软件间扮演数据配送的角色,整合商业应用软件,目标为降低企业共享数据的成本。

在开源ESB家族中涌现出很多优秀的开源ESB,如:Jboss ESB, Mule ESB开源ESB在技术,技术产品的专业化程度等方面与商业ESB有很大差别.因此,企业需要综合各种现实因素做出权衡,在开源的范围内选择一款最能适合企业SOA部署需求的ESB产品,尽可能地最大化SOA所产生的业务价值.1.1JBOSS ESBJboss Esb是JBOSS推出的ESB的实现.也是JBOSS的SOA产品的基础.它基于RosettaNet ESB,支持服务的创建、部署和整合。

从架构上而言,可以将Jboss ESB中的一切都看作是服务。

这些服务并非Web Services,而是ESB服务,这些ESB服务可以通过多种传输暴露出来。

所有的ESB服务都有一个方法(doWork),可以通过下面的接口(由所有的服务共享)描述:在JBossESB中,ESB消息和SOAP消息类似,都由几个部分组成,包括标头(header),消息体(body),错误(fault),附件(attachments),等等。

每个部分包括一个可序列化的java对象集合(map),通过集合中定义的name进行访问。

这就意味着JBossESB消息并不是强类型的,在访问消息时需要注意(类型转换)。

JBOSS ESB建立在三个核心的体系结构组件上:(1)消息监听器和消息过滤器代码。

消息监听器监听消息并路由,然后引导消息到到管道。

消息过滤器则过滤消息,并将消息路由到另一个消息端点。

(2)一个基于路由服务的目录。

(3)一个消息存储库,用来存储在ESB 上交换的消息/事件。

图1 JBoss ESB ServiceJBossESB在功能上是较为强大,较之其它服务总线,它的技术架构方案是最独立的。

它除了支持J2EE标准、Web Service外,还支持多种的远程调用协议,例如JMS。

spring框架案例学习文档笔记

目录第一课:面向抽象编程 ....................................................................................... 3 第二课:Jdom 的基本使用 ..................................................................................... 3 第三课:模拟Spring 功能 .................................................................................... 4 第四课:搭建sping 的运行环境 . (7)一、 建立一个新的项目 ............................................................................. 7 二、 建立spring 的配置文件 ......................................................................... 7 三、 引入spring 的jar 包........................................................................... 7 四、 测试代码: ................................................................................... 7 五、 注意接口的使用: ............................................................................. 7 第五课:IOC(DI)配置及应用 . (8)一、 什么是IOC 、DI ................................................................................ 8 二、 编辑xml 文件时,没有提示 ...................................................................... 8 三、注入类型(Injecting dependencies) (8)(一) setter 注入类型Setter Injection .......................................................... 8 (二) 构造方法Constructor Injection (9)四、 id 、name .................................................................................... 10 五、 简单属性的注入 .............................................................................. 10 六、 Bean 的作用范围scope ......................................................................... 11 七、 集合注入 .................................................................................... 11 八、自动装配autowire (12)(一) byName .................................................................................. 12 (二) byType .................................................................................. 13 (三) 注意 .................................................................................... 13 九、生命周期 (14)(一) lazy-init/default-lazy-init ............................................................. 14 (二) init-method destroy-method 不要和prototype 一起用(了解) . (14)第六课:annotation 方式Spring (15)一、 开始使用annotation 配置Spring ............................................................... 15 二、@Autowired 、@Qualifier (15)(一) @Autowired .............................................................................. 15 (二) @Qualifier .............................................................................. 16 三、@Resource(重要、推荐) (16)(一) JSR-250 ................................................................................. 16 (二) @Resource . (16)四、 @Componet ................................................................................... 17 五、 @Scope 、@PostConstruct 、@PreDestroy .......................................................... 18 六、注解对应的jar 包 (18)第七课:AOP(面向切面编程) ..........................一、 AOP 概念 .............................二、 利用动态代理实现面向切面编程 19第八课:Spring AOP 配置选项 ........................一、 AOP 配置annotation 方式 ..............(一) 搭建annotation 开发环境 20(二)aspectJ 类库 .....................(三) AOP 的annotation 实例 ............(四)AspectJ 的专业术语 ...............Spring –SSH 整合 学习笔记---wjt276[2010-05-14](五) 织入点语法 (22)(六) Advice (23)(七) Pointcut (25)(八) annotatin方式的AOP实例 (25)二、AOP配置xml方式 (26)三、AOP实现动态代理注意 (27)第九课:DataSource (27)一、Sping配置数据源: (27)二、注入使用 (28)三、dbcp.BasicDataSource (28)第十课 Spring整合Hiberante3 (29)一、Spring配置hibernate3的SessionFactory (29)(一) xml形式的SessionFactory (29)(二) annotation注解方式的SessionFactory (29)二、引入hibernate所需要使用的jar (30)(一) 基本jar (30)(二) 加入annotation功能的jar包 (30)(三) 搭建日志环境并配置显示DDL语句jar包 (30)三、Spring整合hibernate3事务 (30)(一) Annotation注解方式配置事务管理 (30)(二) Spring事务选项 (34)(三) XML文件形式配置Spring事务管理 (36)四、HibernateTemplate (37)(一) HibernateTemplate (37)(二) HibernateDaoSupport (38)第十一课:Spring整合-SSH (39)一、第一步:加入jar包(需要的jar包列表) (39)二、第二步:首先整合Spring + Hibernate (40)三、第三步:再来整合Struts2 (40)四、struts的读常量: (42)第十二课:DTO、VO (42)一、DTO (42)二、VO (42)第十二课:SSH整合存在的问题 (42)一、Jsp中访问Session时,Session已经关闭 (42)二、如果不配置事务,openSessionView出现异常 (43)三、中文乱码问题: (43)第十三课:SSH整合的jar包 (44)一、Struts2 (44)二、Hibernate3.3.2 (44)三、Spring (45)第一课:面向抽象编程原来什么类都是写死的,现在是先建立一个大的标准,然后再各个实体类来实现他们的功能,然后在调用的时候,使用这个标准调用,这样,你们那个来都可以被调用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JBoss ESB学习笔记12——第十一个ESB应用Spring Hello World续上篇介绍了第十个ESB应用,本文介绍第十一个ESB应用——Spring Hello World。

1 概述本实例主要演示了基于spring的action调用,这里需要引用spring相关的jar包,这些jar 包都可以在所下载的jboss esb中找到。

2 新建ESB工程新建ESB工程,在jbossesb-server-4.7中找到以下两个jar包:jbossesb-spring.jar和spring-2.5.6.SEC01.jar,并将这两个jar包复制到esbcontent/lib目录下,同时添加到项目的classpath。

至于这两个jar包的具体位置,不记得了,可以直接搜索找到。

3 ESB配置3.1 创建消息队列Xml代码1<?xml version="1.0"encoding="UTF-8"?>2<server>3<mbean code="org.jboss.jms.server.destination.QueueService"name="jboss.esb.quickstart.destination:service=Queue,name=springhelloworl dRequest"xmbean-dd="xmdesc/Queue-xmbean.xml">4<depends optional-attribute-name="ServerPeer">5jboss.messaging:service=ServerPeer6</depends>7<depends>jboss.messaging:service=PostOffice</depends>8</mbean>9<mbean code="org.jboss.jms.server.destination.QueueService"name="jboss.esb.quickstart.destination:service=Queue,name=springhelloworl dResponse"xmbean-dd="xmdesc/Queue-xmbean.xml">10<depends optional-attribute-name="ServerPeer">11jboss.messaging:service=ServerPeer12</depends>13<depends>jboss.messaging:service=PostOffice</depends>14</mbean>15<mbean code="org.jboss.jms.server.destination.QueueService"name="jboss.esb.quickstart.destination:service=Queue,name=springhelloworl dEsb"xmbean-dd="xmdesc/Queue-xmbean.xml">16<depends optional-attribute-name="ServerPeer">17jboss.messaging:service=ServerPeer18</depends>19<depends>jboss.messaging:service=PostOffice</depends>20</mbean>21</server>3.2 定义Provider这里将定义一个JMS Provider,并定义2个消息通道,内容如下:Xml代码22<jms-provider connection-factory="ConnectionFactory"name="JBossMQ">23<jms-bus busid="gwChanel">24<jms-message-filterdest-name="queue/springhelloworldRequest"25dest-type="QUEUE"/>26</jms-bus>27<jms-bus busid="esbChanel">28<jms-message-filter dest-name="queue/springhelloworldEsb"29dest-type="QUEUE"/>30</jms-bus>31</jms-provider>3.3 定义ServiceXml代码32<service category="SpringHelloWorld"description="Spring Hello33World" name="SpringHelloWorldService">34<listeners/>35<actions mep="OneWay">36<action/>37</actions>38</service>3.4 定义ListenerXml代码39<listeners>40<jms-listener busidref="gwChanel"is-gateway="true"41name="gwListener"/>42<jms-listener busidref="esbChanel"name="esbListener"/>43</listeners>3.5 定义Java BeanJava代码44/***********************************************************************45* <p>Project Name: springhelloworld</p>46* <p>File Name: com.thu.afa.esb.jbossesb.action.SaySomething.java</p> 47* <p>Copyright: Copyright (c) 2010</p>48* <p>Company: <ahref=""></a></p>49***********************************************************************/50package com.thu.afa.esb.jbossesb.action;5152/**53* <p>Class Name: SaySomething</p>54* <p>Description: </p>55* @author Afa56* @date 2010-9-1657* @version 1.058*/59public class SaySomething60{61private String greeting;6263public String getGreeting()64{65return greeting;66}6768public void setGreeting(String greeting)69{70this.greeting = greeting;71}7273}说明:这是一个普通的JavaBean,为后面验证spring在ESB中的IOC功能而引入。

3.6 定义ActionJava代码74/*********************************************************************** 75* <p>Project Name: springhelloworld</p>76* <p>File Name:com.thu.afa.esb.jbossesb.action.MySpringEnabledAction.java</p>77* <p>Copyright: Copyright (c) 2010</p>78* <p>Company: <ahref=""></a></p>79***********************************************************************/ 80package com.thu.afa.esb.jbossesb.action;8182import org.jboss.soa.esb.actions.AbstractSpringAction;83import org.jboss.soa.esb.helpers.ConfigTree;84import org.jboss.soa.esb.message.Body;85import org.jboss.soa.esb.message.Message;8687/**88* <p>Class Name: MySpringEnabledAction</p>89* <p>Description: </p>90* @author Afa91* @date 2010-9-1692* @version 1.093*/94public class MySpringEnabledAction extends AbstractSpringAction95{96@SuppressWarnings({"deprecation" })97public MySpringEnabledAction(final ConfigTree configTree)98{99this.configTree = configTree;100}101102public Message displayMessage(Message message) throws Exception 103{104System.out.println("Body: " + message.getBody().get());105return message;106}107108public Message sayHelloSpring(Message message) throws Exception 109{110SaySomething saySomething = (SaySomething)getBeanFactory().getBean("saySomething");111Body body = message.getBody();112String contents = (String) message.getBody().get();113StringBuffer buffer = new StringBuffer();114buffer.append(contents + "\n");115buffer.append(saySomething.getGreeting());116body.add(buffer.toString());117118return message;119}120}注意:这里的action 扩展的是AbstractSpringAction类,而不是AbstractActionLifecycle。

相关文档
最新文档