`
ganen11
  • 浏览: 6680 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Commerce JMS

    博客分类:
  • Web
 
阅读更多

花了三天终于在Websphere commerce 7,实现了和activeMQ的JMS异步通行。

 

    业务流程如下:WCS作为前台商店,需要定时的往后台系统异步发送Order的数据。这里JMS Provider采用的是activeMQ(IBM Websphere MQ)买不起啊。其实和Websphere MQ的集成方式类似。

 

    记录下整个实现方式:

    1、在Websphere application server 管理控制台中配置:

       点击进入http://localhost:9060/ibm/console/login.do

       资源=》JMS 

        a.新建JMS提供程序

             选择“JMS提供程序”,选择作用域(节点=localhost,服务器=server1),点击“新建”

             

名称 ActiveMQ
外部初始上下文工厂 org.apache.activemq.jndi.ActiveMQWASInitialContextFactory
外部提供程序URL tcp://localhost:61616(这是activeMQ默认的连接地址)。

         

        b.然后,点击定制属性。新建

 

名称 java.naming.queue.jms.orderProvider
jms/orderProvider
类型 java.lang.String

 

        c.新建队列连接工厂 

              选择“队列连接工厂”,新建,JMS提供程序选择“ActiveMQ”。

             

名称 Queue Connection Factory
JNDI名称 QueueConnectionFactory
外部JNDI名称 QueueConnectionFactory

 

         d.新建队列

                选择“队列连接工厂”,新建

 

名称 OrderProvider
JNDI名称 jms/orderProvider
外部JNDI名称 jms/orderProvider

 

        对应资源文件:cells/localhost/nodes/localhost/servers/server1/resources.xml

        保存,重启AppServer.

 

    2、进入IBM WebSphere Commerce Administrator Console管理控制台,  选择“站点” 

         a.点击“配置”=> “传送”,选择“Websphere MQ”,点击“配置”。

 

 

工厂 QueueConnectionFactory
入站队列 jms/orderProvider
错误队列 jms/orderProvider
错误队列 jms/orderProvider

        

        这里我把inbound,outbound,errorbound都通过一个queue发送出去。也可以设置多个队列发送。

 

        对应配置文件,在wc-server.xml中

 

Xml代码  收藏代码
  1. <OutboundConnector default="true" enabled="true" id="3"  
  2.                 name="JMS" retries="3">  
  3.                 <JNDI JndiName="eis/JCAJMS" display="false"/>  
  4.                 <ConnectionSpec  
  5.                     ClassName="com.ibm.commerce.messaging.adapters.jcajms.JCAJMSConnectionSpec" default="true">  
  6.                     <EditableProperty Admin="factory" display="false"  
  7.                         editable="Yes" name="setConnectionFactory" value="QueueConnectionFactory"/>  
  8.                     <EditableProperty Admin="inQueue" display="false"  
  9.                         editable="Yes" name="setInboundQueue" value="jms/orderProvider"/>  
  10.                     <EditableProperty Admin="errorQueue" display="false"  
  11.                         editable="Yes" name="setErrorQueue" value="jms/orderProvider"/>  
  12.                     <EditableProperty Admin="outQueue" display="false"  
  13.                         editable="Yes" name="setOutboundQueue" value="jms/orderProvider"/>  
  14.                 </ConnectionSpec>  
  15.                 <InteractionSpec  
  16.                     ClassName="com.ibm.commerce.messaging.adapters.jcajms.JCAJMSInteractionSpec" default="true">  
  17.                     <EditableProperty Admin="timeOut" display="false"  
  18.                         editable="Yes" name="setTimeOut" value="60"/>  
  19.                     <EditableProperty Admin="mode" display="false"  
  20.                         editable="Yes" name="setMode" value="0"/>  
  21.                     <EditableProperty Admin="JMSExpiration"  
  22.                         display="false" editable="Yes"  
  23.                         name="setJMSExpiration" value="0"/>  
  24.                 </InteractionSpec>  
  25.             </OutboundConnector>  

 

         

          b.配置消息类型

               消息类型:可以定制,这里我选择已有功能“WebSphere Commerce XML 订单创建操作的出站消息”

               消息严重性:对应优先级别,1-9

               传输:Websphere MQ

               设备格式:Websphere MQ 适配器 (XML)

               错误队列:jms/orderProvider

               工厂:QueueConnectionFactory

               入站队列:jms/orderProvider

               出站队列:jms/orderProvider

 

               对应于表:PROFILE。

               这里可以新建消息类型。在MSGTYPES中。定义需要的消息数据。

               

    3、新建Command,名为ScheduledOrderProduceCmdImpl

 

Java代码  收藏代码
  1. package com.activemq.commerce.provider;  
  2.   
  3.   
  4. import com.ibm.commerce.command.CommandFactory;  
  5. import com.ibm.commerce.command.ControllerCommandImpl;  
  6. import com.ibm.commerce.datatype.TypedProperty;  
  7. import com.ibm.commerce.exception.ECException;  
  8. import com.ibm.commerce.messaging.commands.SendMsgCmd;  
  9. import com.ibm.commerce.ras.ECTrace;  
  10. import com.ibm.commerce.ras.ECTraceIdentifiers;   
  11.   
  12. import com.ibm.websphere.command.CacheableCommand;  
  13.   
  14.   
  15. public class ScheduledOrderProduceCmdImpl extends ControllerCommandImpl  
  16.         implements ScheduledOrderProduceCmd,CacheableCommand {  
  17.   
  18.     public final static String COPYRIGHT = com.ibm.commerce.copyright.IBMCopyright.SHORT_COPYRIGHT;  
  19.   
  20.     private static final String CLASS_NAME = "com.activemq.commerce.provider.ScheduledOrderProduceCmdImpl";  
  21.   
  22.     public void performExecute() throws ECException {  
  23.   
  24.         final String methodName = "performExecute()";  
  25.   
  26.         ECTrace.entry(ECTraceIdentifiers.COMPONENT_EXTERN, CLASS_NAME,  
  27.                 methodName);  
  28.   
  29.         super.performExecute();  
  30.           
  31.         SendMsgCmd senMsgCmdTask = (SendMsgCmd) CommandFactory  
  32.         .createCommand(SendMsgCmd.class.getName(),this.getStoreId());  
  33.         //对应的调用MSG的Command或者View  
  34.         senMsgCmdTask.setMsgType("OrderCreateXMLFormat");  
  35.           
  36.         senMsgCmdTask.setCommandContext(getCommandContext());  
  37.         senMsgCmdTask.setStoreID(this.getStoreId());  
  38.         //设置优先级别,必须在最高和最低级别之间  
  39.         senMsgCmdTask.setPriority(3);  
  40.           
  41.         TypedProperty tp = new TypedProperty();  
  42.         //设置订单ID  
  43.         tp.put("OrderRefNumber",11501);  
  44.         //设置语言类型  
  45.         tp.put("LANGUAGE_ID", getCommandContext().getLanguageId());  
  46.         //从JSP组装输出内容  
  47.         //viewName设置为null,默认从MSGTYPES表中取出对应view  
  48.         senMsgCmdTask.compose(null,getCommandContext(),tp);  
  49.         //直接输入字符来设置输出内容  
  50.         //senMsgCmdTask.setContent(3,"-7","hello world");  
  51.         senMsgCmdTask.sendImmediate();  
  52.           
  53.         senMsgCmdTask.execute();  
  54.           
  55.         ECTrace.exit(ECTraceIdentifiers.COMPONENT_EXTERN, CLASS_NAME,  
  56.                 methodName);  
  57.   
  58.     }  
  59.   
  60. }  

                    

    4、在struts-config.xml中配置view.

 

 

Xml代码  收藏代码
  1. <forward className="com.ibm.commerce.struts.ECActionForward"  
  2.             name="OrderCreateXMLFormatView/10001/-4" path="/OrderCreateXML.jsp">  
  3.             <set-property property="direct" value="true"/>  
  4.             <set-property property="resourceClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>  
  5.             <set-property property="interfaceName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommand"/>  
  6.             <set-property property="properties" value="storeDir=no"/>  
  7.             <set-property property="implClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>  
  8. </forward>  
Xml代码  收藏代码
  1. <action path="/OrderCreateXMLFormatView" type="com.ibm.commerce.struts.BaseAction">  
  2.             <set-property property="https" value="0:0"/>  
  3. </action>  

 

    这里:

             10001表示storeId,站点级别设置为0。

             -4 表示设备格式。对应格式所代表的数字如下:

SOAP XML data transmitted via HTTP = -1
HTTP Browser = Reserved for IBM 
Standard Device Format = -3
WebSphere MQ Adapter for XML = -4
WebSphere MQ Adapter for WCS (Legacy message) = -5

          

   5、启动acitveMq,调用上面的command,即会已XML格式发送一个orderId=11501的订单信息,到activeMQ broker,consumer即可消费该消息。   

分享到:
评论

相关推荐

    JavaEE E-Commerce Application.zip

    JavaEE E-Commerce Application是一个基于Java企业版(JavaEE)技术构建的电子商务应用程序。这个压缩包可能包含了所有必要的源代码、配置文件以及相关的资源,用于搭建一个完整的在线购物平台。让我们深入探讨一下...

    commerce final_java_horse1ix_

    它包含一系列标准和API,如Servlet、JSP、EJB、JMS、JPA等,用于构建分布式、多层的企业级应用。在本项目中,JavaEE提供了一个稳定的运行环境和一套服务,如数据库连接池、事务管理、安全控制等。 3. **Model-View-...

    电子商务系统(commerce) Java

    J2EE(Java 2 Platform, Enterprise Edition)是Java的服务器端开发平台,包含了众多服务和API,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)和JDBC(Java Database Connectivity)等。在电子商务...

    Commerce:Commerce javaj2ee 测试文件

    在IT行业中,Java和J2EE(Java 2 Platform, Enterprise Edition)是企业级应用开发的重要平台,尤其在电子商务(Commerce)领域。本文件“Commerce:Commerce javaj2ee 测试文件”似乎是一个用于测试Java和J2EE技术在...

    E-commerce site using javaEE.zip

    4. **JMS与WebSocket**:Java Message Service (JMS) 可以实现消息队列,用于异步处理,例如处理大量并发的订单提交,确保系统的稳定性和响应速度。WebSocket则可以实现双向通信,用于实时更新,比如库存变化通知、...

    Java开源电商系统BroadLeaf文档

    4. 通过Spring JMS和现代的JMS代理交互,实现了应用消息的异步处理,这有助于提高应用性能和用户体验。 5. 提供整合的搜索功能,使用Compass和Lucene项目进行对象到搜索引擎的映射,便于用户通过关键词快速找到想要...

    Java开源电商系统BroadLeaf

    Broadleaf Commerce 是一款国外的开源电商解决方案,基于Java语言及Spring框架开发而成。它提供了一种可靠且高度可扩展的架构,支持深度定制与快速开发。BroadLeaf拥有清晰的结构与高度模块化的特性,并采用了国内...

    WAS6_Handbook_sg246446.pdf

    - WebSphere Commerce - WebSphere Process Server - WebSphere Enterprise Service Bus (ESB) 这些产品共同构建了一个全面的企业级解决方案,覆盖了应用程序服务器、门户服务、商务应用及业务流程管理等多个方面。...

    J2EE一些已经实现的项目

    2. **E-Commerce**:这是一个电子商务平台,涵盖了商品展示、购物车、订单处理、支付接口集成等常见功能。可能使用了Spring框架进行依赖注入,Hibernate进行对象关系映射,以及MyBatis作为SQL映射工具。 3. **Sales...

    WEBSPHERE 教程

    3. **JMS和WS-Security**:支持Java消息服务(JMS),实现异步处理;支持Web服务安全标准(WS-Security),保证Web服务的安全交互。 4. **企业服务总线(ESB)**:WebSphere ESB提供了一种集成不同系统和服务的方式...

    毕业论文外文翻译

    的Total-e-Server、IBM的WebSphere以及iPlanet E-Commerce Solutions的iPlanet Application Server等。 #### 五、市场接受度 随着这些应用服务器的推出,J2EE迅速成为首选的中间件标准。根据分析师的说法,J2EE已...

    基于javaee的水果4S店营销管理系统的设计与实现论文.docx

    JavaEE平台提供了多种技术规范和API,包括Servlet、JSP、EJB、JMS等。JavaEE技术广泛应用于企业级的应用程序开发,具有良好的可扩展性、可维护性和高性能。 知识点2:JSP技术 JSP(JavaServer Pages)是一种基于...

    jsp网上蛋糕销售系统论文最终版.doc

    J2EE 技术包括 Servlet、JSP、EJB、Java Mail、JMS 等。 Knowledge Point 2: JSP 技术 JSP(Java Server Pages)是一种基于 Java 的动态网页技术。JSP 技术允许开发者将 Java 代码嵌入到 HTML 代码中,生成动态网页...

    learning rabbitmq

    RabbitMQ is an ideal candidate for large-scale projects ranging from e-commerce and finance to Big Data and social networking because of its ease of use and high performance. Managing RabbitMQ in ...

    J2EE与.NET平台的相似点

    5. **消息队列**:.NET的MSMQ和J2EE的JMS(Java Message Service)都实现了消息队列,允许异步通信和解耦的应用程序组件。 6. **数据库访问**:ADO.NET是.NET平台的关系型数据库API,而J2EE则采用JDBC(Java ...

    WebSphere快速入门

    WebSphere架构由多个组件组成,主要包括Application Server、Integration Server、Commerce Server等。其中,Application Server是最基础的部分,它提供运行Java EE应用程序所需的环境。在WebSphere Application ...

    WebLogic9[1].2安装配置

    WebLogic Server 与 BEA WebLogic Commerce Server 结合,可以为电子商务应用提供全面的解决方案。 在安装配置 WebLogic Server 9.1.2 版本时,首先需要确保你的计算机上已经安装了合适的 JDK。WebLogic 9.1.2 需要...

    java资源

    电子商务(E-Commerce)是指通过互联网进行的商业交易活动,包括在线购物、电子支付、供应链管理等。Java由于其安全性、稳定性和可扩展性,成为构建电子商务系统的重要技术。 在电子商务系统中,Java可以用于以下几...

    山大WebSphere考试题

    - WAS支持各种服务,包括Servlet、JSP、EJB、JMS、JTA、JNDI等,为企业级应用提供了全面的运行环境。 - WebSphere还包含了集成开发环境(IDE),如IBM Eclipse Tools for WebSphere,便于开发者创建、调试和部署...

    电子商务系统

    电子商务系统(E-commerce System)是利用互联网技术进行商业交易的平台,它涵盖了网上购物、在线支付、订单处理、库存管理等多个环节,实现了商家与消费者之间的无地域限制的交易。在这个系统中,用户可以浏览商品...

Global site tag (gtag.js) - Google Analytics