中间件技术大作业Word文件下载.docx
- 文档编号:3207613
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:19
- 大小:371.64KB
中间件技术大作业Word文件下载.docx
《中间件技术大作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《中间件技术大作业Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
ESB产品的共有特性包括:
连接异构的MOM(MicrosoftOperationsManager)、利用Web服务描述语言接口封装MOM协议,以及在MOM传输层上传送简单对象应用协议(SOAP)传输流的能力。
大多数ESB产品支持在分布式应用之间通过中间层如集成代理实现直接对等沟通。
ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。
从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB全称为EnterpriseServiceBus,即企业服务总线。
它是传统中间件技术与XML、Web服务等技术结合的产物。
ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。
ESB五个基本功能:
1)服务的MetaData管理:
在总线范畴内对服务的注册命名及寻址进行管理。
2)传输服务:
确保通过企业总线互连的业务流程间的消息的正确交付,还包括基于内容的路由功能。
3)中介:
提供位置透明的路由和定位服务;
提供多种消息传递形式;
支持广泛使用的传输协议。
4)多服务集成方式:
如JCA,Web服务,Messaging,Adaptor等.
5)服务和事件管理支持:
调用服务的记录、测量和监控数据;
提供事件检测、触发和分布功能;
3.JBOSS介绍
JBoss是一个同时运行Web及EJB的J2EE应用服务器。
它是开放源代码的项目,遵循最新的J2EE规范。
从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web操作系统(operatingsystemforweb),它体现了J2EE规范中最新的技术,并且它还在theJavaWorldEditors'
Choice2002评选中获得“最佳Java应用服务器”大奖。
无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。
Redhat公司2006年6月份完成对JBOSS的收购后,JBOSS已经成为RedHat重量级的应用服务器产品.并在整合全球销售渠道,全球支持服务,以及产品开发力量的基础上,提供给客户最大的价值。
JBoss是一个开源的符合J2EE规范的应用服务器,作为J2EE规范的补充,JBoss中引入了AOP框架,为普通Java类提供了J2EE服务,而无需遵循EJB规范。
2.实例演示
1.安装配置环境
我的配置环境是
系统已经安装好了JAVA开发环境
(1)第一步配置安装joss-5.1.0.GA服务器
首先将压缩包解压到某目录下,我解压到E盘根目录下,同时配置系统环境变量
JBOSS_HOME其值为jboss-5.1.0.GA的文件路径
正常情况下接下来找到该文件夹下子文件夹bin双击运行该文件夹中的run.bat就可以
将JBOSS成功运行
正确情况应如下图(注意!
需要用管理员权限不然也有可能出错)
显示出startedin后面是时间多少
此时如果在浏览器地址中输入http:
//localhost:
8080/可以进入服务器的页面如下图
此时jboss服务器已经成功启动了
但是由于JBOSS5.x版本一个经常出现的BUG会导致开启服务器后出现
此问题即为该bug导致
解决方法为(参考博客
这个错误是配置文件profile.xml内的一个bug,文件路径为:
$JBOSS_HOME/server/<
serverName>
/conf/bootstrap/profile.xml
把其中的节点:
<
beanname="
AttachmentStore"
class="
org.jboss.system.server.profileservice.repository.AbstractAttachmentStore"
>
<
constructor>
parameter>
injectbean="
BootstrapProfileFactory"
property="
attachmentStoreRoot"
/>
/parameter>
/constructor>
修改为:
parameterclass="
java.io.File"
之后启动服务器即可
(2)安装配置apache-ant-1.8.2
首先在环境变量中加入ANT_HOME值为该文件夹路径
然后,在系统环境变量PATH中加入%ANT_HOME%\bin
之后在命令行窗口输入ant-version显示出其版本即为安装成功
(3)安装jbossesb-4.12
跟前两个相同首先配置环境变量JBOSS_HOME
然后找到文件夹E:
\jbossesb-4.12\install
找到里面的deployment.properties-example
复制这个文件并修改文件名为deployment.properties
打开它找到最后一行原本为org.jboss.esb.tomcat.home=/apache-tomcat-5.5.20
更改为org.jboss.esb.server.home=/E:
/jboss-5.1.0.GA
其中等号后面的是文件路径
要记住修改文件路径中的“\”为“/”两个都是“/”
(4)然后通过命令行进入jboss-esb的目录下的install文件夹
执行ant命令
运行结果截图为
至此完成了全部的环境配置
2.实例
(1)演示
使用实例fun_cbr
概述:
这个例子有三个队伍的顺序处理器。
所有新的订单流到系统中,可以评估通过XPath或Drools规则处理器。
这些路由规则将决定哪个队伍实际上收到订单处理。
预先打开JBOSS服务器
1.在命令终端窗口(“窗口1”),运行antdeploy
2.在此文件夹中(“窗口2”),键入一个命令终端窗口antreceiveBlue
3.在命令终端窗口(“窗口3”),在此文件夹类型antreceiveRed
4.在命令终端窗口(“窗口4”),在此文件夹类型antreceiveGreen
5.在“窗口1”,键入'
antruntestXPath的(或antruntestDrools)
获得order的先后取决于的StatusCode属性在SampleOrder.xml文件的预先设定
(预设为GREEN)
Receive等待窗口(窗口2,3,4)
得到order的窗口(最后的窗口四)
(2)部分主要代码
ReceiveJMSMessage.java
packageorg.jboss.soa.esb.samples.quickstart.funcbr.test;
importjavax.jms.Queue;
importjavax.jms.QueueConnection;
importjavax.jms.QueueConnectionFactory;
importjavax.jms.QueueReceiver;
importjavax.jms.QueueSession;
importjavax.jms.TextMessage;
importjavax.naming.InitialContext;
publicclassReceiveJMSMessage{
QueueConnectionconn=null;
QueueSessionreceiverSession=null;
QueuereceiverQueue=null;
QueueReceiverqueueReceiver=null;
InitialContextiniCtx=null;
QueueConnectionFactoryqcf=null;
StringreceiveQueueName="
queue/quickstart_funcbr_response"
;
privatebooleaninitialised;
publicReceiveJMSMessage(){
}
publicvoidreceiveOne(){
if(!
initialised){
initialise();
if(receiverQueue!
=null){
try{
TextMessagemsg=(TextMessage)queueReceiver.receive();
if(msg!
System.out.println("
*********************************************************"
);
System.out.println(msg.getText());
}catch(finalExceptionex){
cleanup();
System.out.println(ex.getMessage());
System.out.println("
Pausingbeforereinitialising"
);
Thread.sleep(5000);
}catch(finalInterruptedExceptionie){
//donothing
privatevoidinitialise()
{
if(iniCtx==null)iniCtx=newInitialContext();
if(qcf==null)qcf=(QueueConnectionFactory)iniCtx.lookup("
ConnectionFactory"
if(conn==null){
conn=qcf.createQueueConnection();
conn.start();
}
receiverQueue=(Queue)iniCtx.lookup(receiveQueueName);
receiverSession=conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
queueReceiver=receiverSession.createReceiver(receiverQueue);
initialised=true;
Initialised"
publicvoidcleanup(){
Closingconnections"
queueReceiver=null;
receiverSession=null;
receiverQueue=null;
if(receiverSession!
=null){
receiverSession.close();
//Donothing;
if(conn!
conn.close();
conn=null;
qcf=null;
iniCtx=null;
initialised=false;
Closingcompleted"
publicstaticvoidmain(String[]args){
finalReceiveJMSMessagereceiver=newReceiveJMSMessage();
if((args.length>
0)&
&
(args[0]!
=null)){
receiver.receiveQueueName=args[0];
Receivingon:
"
+receiver.receiveQueueName);
Runtime.getRuntime().addShutdownHook(newThread(){
publicvoidrun(){
receiver.cleanup();
});
while(true){//loopuntilI'
mkilled
receiver.receiveOne();
Thread.sleep(500);
}catch(InterruptedExceptione){break;
}
}else{
Usage<
queue-name>
"
MyJMSListenerAction.java
packageorg.jboss.soa.esb.samples.quickstart.funcbr;
importorg.jboss.soa.esb.helpers.ConfigTree;
importorg.jboss.soa.esb.message.Message;
importorg.jboss.soa.esb.actions.AbstractActionLifecycle;
publicclassMyJMSListenerActionextendsAbstractActionLifecycle
{
protectedConfigTree_config;
publicMyJMSListenerAction(ConfigTreeconfig){_config=config;
publicMessagenoOperation(Messagemessage){returnmessage;
publicMessagedisplayMessage(Messagemessage)throwsException{
logHeader();
System.out.println("
Body:
+message.getBody().get());
logFooter();
returnmessage;
publicvoidexceptionHandler(Messagemessage,Throwableexception){
logHeader();
!
ERROR!
System.out.println(exception.getMessage());
ForMessage:
System.out.println(message.getBody().get());
logFooter();
//Thismakesiteasiertoreadontheconsole
privatevoidlogHeader(){
\n&
privatevoidlogFooter(){
\n"
Build.xml
projectname="
Quickstart_fun_cbr"
default="
run"
basedir="
."
description>
${ant.project.name}
${line.separator}
/description>
propertyname="
additional.deploys"
value="
FunCBRRules-XPath.drl,regex-rules.properties,smooks-res.xml"
/>
deploy.exploded"
true"
--ImportthebaseAntbuildscript...-->
importfile="
../conf/base-build.xml"
targetname="
runtest"
depends="
runtestXPath"
description="
SendJMSmessagetotiggertheactionsintheESB"
compile"
echo>
RunsXPathExample<
/echo>
javafork="
yes"
classname="
org.jboss.soa.esb.samples.quickstart.funcbr.test.SendJMSMessage"
failonerror="
syspropertykey="
log4j.configuration"
${log4j.xml}"
classpathrefid="
exec-classpath"
argvalue="
quickstart_Fun_XPathCBR_Request_GW"
/java>
/target>
runtestRegex"
RunsRegexExample<
quickstart_Fun_RegexCBR_Request_GW"
runtestDrools"
RunsDroolsExample<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间件 技术 作业