当前位置:文档之家› 基于jboss的esb实现 中间件大作业

基于jboss的esb实现 中间件大作业

中间件大作业ESB简单实例实现姓名:侯继豪学号:201092467班级:英强1014一、ESB简介ESB全称为Enterprise Service Bus,即企业服务总线。

它是传统中间件技术与XML、Web服务等技术结合的产物。

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

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

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

二、ESB的基本原理及功能ESB在统一的分布式架构中结合SOA、WebServices和XML等技术,并利用基于标准的整合技术,整合容易部署和方便管理的基础设施。

遗留系统中的应用和新开发的应用服务都可以通过定义好的服务接口完成集成。

同时,通过独立的!松散藕合的服务接口的集成,ESB还为服务交互的双方充当了中介,将企业内或合作的企业之间的已有服务和新应用的服务连接起来,同时还负责对服务组合的应用和业务流程的管理。

ESB的主要功能有:1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址进行管理。

2)传输服务:确保通过企业总线互连的业务流程间的消息的正确交付,还包括基于内容的路由功能。

3)中介:提供位置透明的路由和定位服务;提供多种消息传递形式;支持广泛使用的传输协议。

4)多服务集成方式:如JCA,Web服务,Messaging ,Adaptor 等。

5)服务和事件管理支持:调用服务的记录、测量和监控数据;提供事件检测、触发和分布功能;三、JBoss简介JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。

因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。

2006年,Jboss公司被Redhat 公司收购。

JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。

但JBoss核心服务不包括支持servlet/JSP 的WEB容器,一般与Tomcat或Jetty绑定使用。

四、ESB的简单实例1.搭建JAVA运行环境。

安装jdk2.配置环境变量设置JBOSS_HOME 为jboss-5.1.0.GA根目录;ANT_HOME为apache-ant-1.7.1根目录;JBOSSESB_HOME环境变量为jbossesb-4.7根目录;在PATH加入%ANT_HOME%\bin。

3.配置jbossesb-4.7jbossesb-4.7\install下找到deployment.properties-example,把该文件改名为deployment.properties然后把里面把org.jboss.esb.tomcat.home修改为org.jboss.esb.server.home并指向bossesb-4.7的根目录。

配置结果如图:3.关联JBossESB与JBoss在命令行界面进入jbossesb-4.7\install。

执行ant。

4.执行实例。

A.在j boss-5.1.0.GA\bin下运行run.bat,启动esb。

如最后一行,显示Started in XXX 则为启动成功。

5.实例功能说明及部分代码说明本实例演示如何存储一条消息到消息容器中。

CheckMessageStoreAction.java :package org.jboss.soa.esb.samples.quickstart.messagestore;import .URI;import org.jboss.internal.soa.esb.persistence.format.MessageStoreFactory; import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;import org.jboss.soa.esb.helpers.ConfigTree;import org.jboss.soa.esb.message.Message;import org.jboss.soa.esb.services.persistence.MessageStore;import org.jboss.soa.esb.services.persistence.MessageStoreException;public class CheckMessageStoreAction extends AbstractActionPipelineProcessor {protected ConfigTree _config;public CheckMessageStoreAction(ConfigTree config) {_config = config;}/*检查消息是否在容器中*/public Message process(Message originalMessage){return originalMessage ;}/*执行一个成功的流水线过程*/public void processSuccess(final Message originalMessage){//I can call the messagestore API directory if it is deployed in the same JVMString messageStoreClass ="org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl";MessageStore messageStore =MessageStoreFactory.getInstance().getMessageStore(messageStoreClass);//Try to pull the message outtry{Message message = messageStore.getMessage((URI) originalMessage.getProperties().getProperty(MessageStore.MESSAGE_URI));//Print out the content of the messageSystem.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");System.out.println("Body (from the stored message): " + message.getBody().get()) ;System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");}catch (final MessageStoreException mse){System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");System.out.println("Error from message store: " +mse.getMessage()) ;System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");}}}jboss-esb.xml :<?xml version = "1.0" encoding = "UTF-8"?><jbossesbxmlns="/labs/jbossesb/trunk/product/etc/schema s/xml/jbossesb-1.0.1.xsd"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/labs/jbossesb/trunk/produ ct/etc/schemas/xml/jbossesb-1.0.1.xsd/repos/labs/labs/jbossesb/trunk/product/etc/schemas /xml/jbossesb-1.0.1.xsd"parameterReloadSecs="5"><providers><jms-provider name="JBossMQ"connection-factory="ConnectionFactory"><jms-bus busid="quickstartGwChannel"><jms-message-filterdest-type="QUEUE"dest-name="queue/quickstart_messagestore_Request_gw" /></jms-bus><jms-bus busid="quickstartEsbChannel"><jms-message-filterdest-type="QUEUE"dest-name="queue/quickstart_messagestore_Request_esb"/></jms-bus></jms-provider></providers><services><servicecategory="FirstServiceESB"name="MessageStoreListener"description="Hello World, and write message to message store"> <listeners><jms-listener name="JMS-Gateway"busidref="quickstartGwChannel"is-gateway="true"/><jms-listener name="helloWorld"busidref="quickstartEsbChannel"/></listeners><actions mep="OneWay"><!-- Print the message to the console --><action name="notificationAction"class="org.jboss.soa.esb.actions.Notifier"><property name="okMethod" value="notifyOK" /><property name="notification-details"><NotificationList type="OK"><target class="NotifyConsole" /></NotificationList></property></action><action name="testStore"class="org.jboss.soa.esb.actions.TestMessageStore"><property name="logSuccess" value="true"/></action><!-- Check that the message is really there (executes on success of pipeline) --><action name="CheckMessageStore"class="org.jboss.soa.esb.samples.quickstart.messagestore.CheckMessageStoreA ction" /><!-- Add a copy of the message to the message store under categorization 'test' --><action name="PersistAction"class="org.jboss.soa.esb.actions.MessagePersister" ><property name="classification" value="test"/><property name="message-store-class"value="org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl" /></action></actions></service></services></jbossesb>。

相关主题