基于J2EE 的电子商务开发模型及其实现.pdf
《基于J2EE 的电子商务开发模型及其实现.pdf》由会员分享,可在线阅读,更多相关《基于J2EE 的电子商务开发模型及其实现.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于基于 J2EE 的电子商务开发模型及其实现的电子商务开发模型及其实现 学习如何使用 Publish 和 Subscribe MDB、IBM Rational Application Developer、IBM WebSphere Enterprise Service Bus、Application Server Unit Test Engine,以及 IBM WebSphere Network Deployment 进行设计和开发随需应变的 J2EE 应用程序。这篇详细的指南包括了如何创建 MDB 并向其他 MDB 发布信息,并详细说明了如何从 IDE 直接将应用程序部署到应用程序服务器网
2、络基础结构中。介绍 介绍 在 这样一个不断成长的 Java 世界中,期望与挑战日复一日的不断增加。每个人都希望站在不断变化的前沿,但是技术文章常常不能为我们提供开发者所需的细节内容。因此,本指南为您详尽展 示了如何开发、部署与运行随需应变的 Java 2 Platform Enterprise Edition(J2EE)应用程序。在这个过程中,您还会学到如何完成以下相关任务:使用发布订阅(PubSub)消息 创建消息驱动 Bean(MDB)向其他 MDB 发布信息 使用 IBM WebSphere Enterprise Service Bus 在 IDE 中开发 Java Message Se
3、rvice(JMS)代码 把来自您的 IDE 中的 IBM WebSphere Application Server 升级到 WebSphere Application Server network 直接从 IDE 中将应用程序部署到 WebSphere Application Server network 仅用 IDE(而不需要消息软件的许可证)开发、部署与测试 JMS 应用 场景和设计概述 场景和设计概述 我们已设计了一种基于实际生活的场景,这个场景易于理解并且易于关联到技术。它使用随需应变的方式在不同应用程序服务器之间交换信息。虽然有很多方法来编写软件,但是为了交换信息的目的,我们选择了
4、发送消息的方式来加以实现,因为它本身就拥有同步与异步的优势。在这个实践场景中,分布在不同区域的一家公司需要完成用户实际货物订单的要求。如果某个地点不能完成一个订单,则需要其他地方代替它完成。由于安全原因,不同地点的员工不能查看其他地点的数据库。每一地点的应用程序运行于本地的应用服务器,且仅对本地职员开放。本场景只包括三个地点,但是您可以把这种设计应用于任何多的地点中。这种设计的美妙之处在于所有地点都可以通过不同项目名称使用相同代码库。设计细节 设计细节 在 下面的例子中,公司的三个地点通过 WebSphere Application Server Network Deployment netw
5、ork 的通用总线架构共享数据。图 1 使用不同颜色标记沿着信息路由的三个目的地,箭头表示信息流的方向。例如,来自 Region 1 的 Transfer Process bean 发送数据至 DESTINATION1,它在所有地点发送对于 Check Inventory MDB 的请求信息。图 1描述的设计有如下假设:每一地点拥有同一代码库的不同实例。每一地点拥有自己的数据库。每一地点拥有唯一的 Region ID,因此如果存货清单满足请求消息来自于相同的地点,则 MDB 不会处理此信息。图 1.消息流图图 1.消息流图 如果 Region 1 想将一个订单传送给另一地点来执行,它需要发送
6、Java Message Service 消息至通用总线目的地,此目的地基于 WebSphere Enterprise Service Bus 技术,并运行于应用服务网络。所有监测通用总线目的地的 MDB 会采用 PubSub 技术报警或进行触发。在响应链中每个被触发的 MDB 会触发下一个 MDB。消息使用标准语言,如 XML(您可以使用任何形式的语言作为标准,它取决于您的需要)。我们为每个功能分别创建了一个 topictopic,一个 destinationdestination,以及相应的 MDB:一个被称为 TransferProcessBeanTransferProcessBean
7、的会话 bean,发送消息至 DESTINATION1 以下为所触发的 3 种 PubSub MDB:1.CheckInventoryMDBCheckInventoryMDB 监测或 监听 DESTINATION1 并发送消息至DESTINATION2 2.CompleteRRTransferMDBCompleteRRTransferMDB(RR 表示 Requesting Region)监听 DESTINATION2 并发送消息至 DESTINATION3 3.CompleteARTransferMDBCompleteARTransferMDB(AR 表示 Accepting Region)
8、监听 DESTINATION3 在本例中,TransferProcessBean 消息使用如下格式(您的消息格式与内容可以不同,这取决于您的业务):表 1.消息格式举例表 1.消息格式举例 01 ALL TRANSFER-REQUEST .add more tags as per your business needs 当然,您可以根据您的业务需求增加更多不同的标签。一旦 CheckInventoryMDB CheckInventoryMDB 消息被发送,那么每个监听 DESTINATION1 的地点都会被触发响应。如果一个地点已有足够多的存货来满足用户订单,它会自动保留必需的条目,并发送一个
9、其有足够存货满足此订单的响应。这些响应被发送 至 DESTINATION2,并且 标签告知每一个地点的接受者,此消息是否为它们的地点所想要的。消息看起来基本上类似如下:表 2.消息格式举例表 2.消息格式举例 02 01 TRANSFER-RESPONSE Fill in your info/data whether you can accept or not 一旦前一个消息在 DESTINATION2 中被发送,那么 CompleteRRTransferMDBCompleteRRTransferMDB 指令就会在每个地点中被触发。只有处于请求地点的 MDB 处理这个消息,因为它是基于 Reg
10、ion 标签值的。如果有多个地点可以满足此订单,那么请求地点的 MDB 只选择一个,并且相应地发送一个消息至 DESTINATION3。紧接着,监听 DESTINATION3 的 CompleteARTransferMDBCompleteARTransferMDB 被触发。它在存货存在的新地点中,根据其订单创建逻辑完成订单的创建。现在,订单传输完成了。此设计的重要优势 此设计的重要优势 在此设计中存在一些很关键的考虑事项:单一应用程序可以通过在不同地点的最小改变进行开发与部署。当您增加了一个新地点,它就成为应用服务网络中的一部分,并且可以与其他地点以零代价交换消息。无论其他地点发生什么,每个地
11、点都会独立工作。每个地点不需要知道网络中存在多少个其他地点。每个地点不需要知道是否其他地点正在运行。如果一个地点部署了 IBM WebSphere MQ,即使它不在线,消息也会在它再次上线时传递给它。实践训练 实践训练 现 在您已经理解了基本设计,您可以开始关注如何在 IDE 和应用服务器上使用它了。为了证明的需要,本例子使用 IBM Rational Application Developer 作为 IDE,IBM WebSphereApplication Server Version 6.1 Unit Test Environment 作为应用程序服务器。在您成功测试之后,您要使用 IBM
12、 WebSphere Application Server Network Deployment V6.1 作为应用程序服务网络。两者之间的区别是 WebSphere Application Server Unit Test Environment Unit Test Environment 只能运行一个应用程序服务器,而 WebSphere Application Server Network Deployment Network Deployment 可运行支持多地点的多个应用程序服务器。您应能够在其他 IDE 和支持相似技术的应用程序服务器中实现相同的结果。WebSphere Appli
13、cation Server V6.1 拥有基本消息功能。当您完成测试准备部署到生产环境时,一般的您会使用 JMS 产品作为生产环境,如 WebSphere MQ。创建会话 bean 和 MDB 开始时创建一个会话 bean 和三个 MDB。为创建会话 bean:1.打开 Rational Application Developer。2.创建一个 J2EE 1.4 应用程序的 2.1 Enterprise JavaBeans(EJB)项目。3.在 EJB 项目中,创建一个被称为 TransferProcessBean 的会话 bean。您可以用来进行此项工作的方法之一是 publishMessa
14、ge1。它被编码以发送主题消息。您可以在看到 writeYourLogicInThisMethod1 的地方增加您的逻辑。表 3.对会话 bean 的编码表 3.对会话 bean 的编码 public void publishMessage1()TopicConnectionFactory topicConnectionFactory=null;TopicConnection topicConnection=null;Topic topic=null;TopicPublisher topicPublisher=null;TopicSession topicSession=null;String
15、 connectionFactoryName=java:comp/env/TCF1IdeRef;String topicName=java:comp/env/Topic1IdeRef;/Add your try,catch blocks Context ctx=new InitialContext();topicConnectionFactory=(TopicConnectionFactory)ctx .lookup(connectionFactoryName);topicConnection=topicConnectionFactory.createTopicConnection();boo
16、lean transacted=false;topicSession=topicConnection.createTopicSession(transacted,TopicSession.AUTO_ACKNOWLEDGE);topic=(Topic)ctx.lookup(topicName);topicPublisher=topicSession.createPublisher(topic);Message myOutgoingMessage1=null;/Add your logic in writeYourLogicInThisMethod1 String myOutgoingTmpMes
17、sage1=writeYourLogicInThisMethod1();myOutgoingMessage1=topicSession.createTextMessage(myOutgoingTmpMessage1.trim();/Publish the Topic topicPublisher.publish(myOutgoingMessage1);topicPublisher.close();topicSession.close();topicConnection.close();接着,创建三个 MDB:CheckInventoryMDB CompleteRRTransferMDB Com
18、pleteARTransferMDB 当您创建每个 MDB 时,选择:JMS type:javax.jms.MessageListenerjavax.jms.MessageListener Transaction type:ContainerContainer Activation configuration of destinationType:javax.jms.Topicjavax.jms.Topic Activation configuration of acknowledgeMode:Auto-acknowledgeAuto-acknowledge 当触发 MDB 时,被激活的方法是
19、 onMessageonMessage。在 writeYourLogicInThisMethod2 中根据您的需要为每个 MDB 增加您的逻辑。以下是 onMessage 方法的内容:Listing 4.The onMessage methodListing 4.The onMessage method public void onMessage(javax.jms.Message msg)String myIncomingMessage1;/Add your try,catch blocks./Similar to Session Bean,make sure to declare JMS
20、related stuffs and Close them once done /Read the incoming Message myIncomingMessage1=(TextMessage)msg).getText();/Add your logic in writeYourLogicInThisMethod2 String myOutgoingMessage2=writeYourLogicInThisMethod2(myIncomingMessage1);/Publish the Message.Code publishMessage2 similar to SessionBean
21、publishMessage2(myOutgoingMessage2);部署 JNDI 引用 Java Naming 和 Directory Interface(JNDI)属于 Java 平台的一部分。它给基于 Java 技术的应用程序提供一个多重命名与目录服务的统一接口。您需要一些 JNDI 来声明 MDB 监听器,这些是现在您需要做的。按照如下步骤编辑您的 EJB DD(配置描述符):1.在 BeanBean 页签下,选择 CheckInventoryMDBCheckInventoryMDB。2.在 WebSphere BindingsWebSphere Bindings 页签下,选择 J
22、CA AdapterJCA Adapter。3.对于 ActivationSpec JNDIActivationSpec JNDI,输入 jms/AS1。4.对于 Destination JNDI nameDestination JNDI name,输入 jms/Topic1。5.对于 CompleteRRTransferMDBCompleteRRTransferMDB,输入 jms/AS2 和 jms/Topic2。6.对于 CompleteARTransferMDBCompleteARTransferMDB,输入 jms/AS3 和 jms/Topic3。这意味着当一个消息在 jms/To
23、pic1 中发送时,CheckInventoryMDB 会自动运行。相同的情况发生在 jms/Topic2 与 CompleteRRTransferMDB、jms/Topic3 与 CompleteARTransferMDB 中。声明消息目的地 现在您准备为会话 bean 和 MDB 指定消息目的地。对于会话 bean:1.在 EJB DD 中,进入 References References 标签,选择会话 bean。2.按照如下步骤增加一个新的资源引用(Resource Reference):o Name:Name:TCF1IdeRef o Type:Type:javax.jms.Topi
24、cConnectionFactory o Auth:Auth:Application o Share scope:Share scope:Shareable 3.还要按照以下步骤为主题消息增加一个新的资源参数:o Name:Name:Topic1IdeRef o Type:Type:javax.jms.Topic o Auth:Auth:Application o Share scope:Share scope:Shareable 4.然后,选择 Topic1IdeRefTopic1IdeRef。5.在 WebSphere BindingsWebSphere Bindings 下,通过键入 j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于J2EE 的电子商务开发模型及其实现 基于 J2EE 电子商务 开发 模型 及其 实现
限制150内