汉化wso2 esb 视频教程esb怎样设置环境变量

WSO2&ESB随便看看2-控制台界面怎么出来的
想修改他的总控制台,所以才一点一点啃他的源码。
控制台在登录的时候需要输入服务器的URL。
https://192.168.1.201:9443/services/,看上去像是AXIS2的服务发布目录。猜想是不是控制台全部通过WebService管理总线的呢。
看到源码里面有一个service-stubs目录,里面有一百多个项目,晕,这么多,全是stubs,随便打开看了几个,都是调用WSDL2JAVA的项目,有WSDL文档。接着猜,org.wso2.carbon.service.mgt.stub项目似乎是管理服务的,呵呵
看WSO2的官网上说是基于carbon这个东东写的,没怎么看过,不过发现在源码的core/org.wso2.carbon.ui项目有大量页面。他的控制台的主体页面就在此处,呵呵。
wso2esb-4.0.0-src/core/org.wso2.carbon.ui/3.2.0/src/main/resources/web/admin,这个目录里面有控制台的框架页面,layout目录里面是布局和模板。template.jsp是主框架模板,里面定义个页面的区域和整体布局,其他的页面都是默认的各个区域放的内容。
/stg/gzpt/code/wso/wso2esb-4.0.0-src/core/org.wso2.carbon.ui/3.2.0/src/main/resources/web/WEB-INF/tiles/main_defs.xml文件定义了模板文件和各个页面区域的默认内容。
头疼医头,我的目的是汉化并修改控制台,所以具体他是怎么加载的这些模板和布局,我就不管了。
下一步是研究一下控制台里面各个功能是怎么组织的,以及他的I18n是怎么处理的,应该不是很复杂了,呵呵
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。16:03 提问
WSO2 ESB上面的服务如何调用?
用WSO2提供的ESB吧,把Web Service用代理的形式发布到ESB上面去,客户端怎么调用这个Web Service?
按赞数排序
其他相似问题您还可以使用以下方式登录
当前位置:&>&&>& > wso2Esb使用手册V1.0
wso2 esb 开发手册 wso2Esb使用手册V1.0
Wso2 Esb介绍 Wso2 ESB使用手册 基础平台组2014年05月 Wso2 Esb介绍 目录第1章 总体说明 .............................................................................................................................. 11.1 修订历史 ....................................................................................................................................... 11.2 用户范围 ....................................................................................................................................... 11.3 词汇表 ........................................................................................................................................... 1第2章 基本操作 .............................................................................................................................. 22.1 查看系统日志 ............................................................................................................................... 22.2 查看系统统计信息 ....................................................................................................................... 22.3 查看中介跟踪信息 ....................................................................................................................... 22.4 查看中介统计信息 ....................................................................................................................... 22.5 查看SOAP跟踪信息..................................................................................................................... 2第3章 服务代理 .............................................................................................................................. 33.1 简介 ............................................................................................................................................... 33.2 基本操作 ....................................................................................................................................... 43.2.1 查看已注册的代理服务 ............................................................................................... 43.2.2 添加代理服务 ............................................................................................................... 43.2.3 管理端点EndPoint ...................................................................................................... 43.2.4 管理序列Sequences ..................................................................................................... 43.2.5 管理本地注册信息Local Entries ................................................................................ 43.3 服务质量 ....................................................................................................................................... 43.3.1 安全配置 ....................................................................................................................... 43.3.2 消息可靠性配置 ........................................................................................................... 43.3.3 响应消息缓存配置 ....................................................................................................... 43.3.4 访问流量控制配置 ....................................................................................................... 53.3.5 附件MTOM配置 ........................................................................................................ 5第4章 主题订阅 .............................................................................................................................. 64.1 简介 ............................................................................................................................................... 64.2 基本操作 ....................................................................................................................................... 64.2.1 添加根主题 ................................................................................................................... 64.2.2 添加子主题 ................................................................................................................... 64.2.3 订阅主题 ....................................................................................................................... 64.2.4 主题管理 ....................................................................................................................... 64.2.5 主题事件触发 ............................................................................................................... 6第5章 使用JMS .............................................................................................................................. 75.1 配置ACTIVEMQ .............................................................................................................................. 75.1.1 拷贝相关jar包 ............................................................................................................ 75.1.2 修改配置文件启用Jms ................................................................................................ 75.1.3 启动ActiveMQ、wso2esb ........................................................................................... 8第6章 使用MYSQL ......................................................................................................................... 9IWso2 Esb介绍 6.1 配置MYSQL .................................................................................................................................... 96.1.1 拷贝相关jar包 ............................................................................................................ 9第7章 使用VFS ............................................................................................................................. 107.1 激活VFS传输协议 ..................................................................................................................... 107.1.1 激活VFS传输协议 .................................................................................................... 107.1.2 传输大文件 ................................................................................................................. 10第8章 使用TCP ............................................................................................................................. 118.1 启用TCP协议 ............................................................................................................................. 118.1.1 tcp发送和接收配置 .................................................................................................... 11第9章 FAQ(常见问题解答) ...................................................................................................... 129.1 如何修改WSO2ESB的域名? ......................................................................................................... 129.2 如何修改ESB上发布服务的WSDL中的WEBSERVICE地址中的域名及端口? .......................... 129.3 客户端调用WEBSERVICE出错 ....................................................................................................... 139.3.1 错误描述 ..................................................................................................................... 139.3.2 错误原因 ..................................................................................................................... 149.3.3 解决方案 ..................................................................................................................... 14第10章 使用范例 .......................................................................................................................... 16 10.1 代理服务 ................................................................................................................................... 1610.1.1 外部程序:WebService示例程序 .......................................................................... 1610.1.2 直接转发 ................................................................................................................... 1710.1.3 编排业务流程,处理消息内容 ............................................................................... 1710.1.4 编排业务流程,处理报文头内容............................................................................ 1910.1.5 增加xslt处理响应消息,并调用其他服务 ............................................................ 2010.1.6 增加数据缓存 ........................................................................................................... 24 10.2 服务质量 ................................................................................................................................... 2710.2.1 配置需要UserToken访问代理服务 ....................................................................... 2710.2.2 消息可靠性配置 ....................................................................................................... 2910.2.3 响应消息缓存配置 ................................................................................................... 3010.2.4 访问流量控制配置 ................................................................................................... 31 10.3 通过ACTIVEMQ使用JMS .......................................................................................................... 3210.3.1 外部程序:ActiveMQ演示程序 ............................................................................. 3210.3.2 ESB作为消费者 ........................................................................................................ 3410.3.3 ESB作为生产者 ........................................................................................................ 3510.3.4 ESB同时作为生产者和消费者 ................................................................................ 36IIWso2 Esb介绍 第1章 总体说明1.1 修订历史状态标识:C –Created
M - Modified
D - Deleted 1.2 用户范围需要使用wso2Esb的用户。1.3 词汇表 1Wso2 Esb介绍 第2章 基本操作首先启动wso2esb,并登录进入控制台。2.1 查看系统日志点击左侧Monitor & System Logs,可以看到所有控制台的日志2.2 查看系统统计信息点击Monitor & System Statistics2.3 查看中介跟踪信息点击 Monitor & Mediation Tracer ,可以看ESB中介处理消息的记录2.4 查看中介统计信息点击 Monitor & Mediation Statistics,可以看ESB中介处理消息的记录2.5 查看SOAP跟踪信息点击 Monitor & SOAP Tracer ,查看soap跟踪信息2Wso2 Esb介绍 第3章 服务代理3.1 简介顾名思义,代理服务充当了WSO2 ESB服务的代理,通常是一个已经存在的服务端点,代理服务可以使用不同的传输方式。客户可以直接发送请求代理服务的ESB,客户看到服务代理。默认情况下,代理服务,将使用HTTP和HTTPS传输。您也可以添加代理服务的服务参数。在ESB的启动过程中,它会启动所有代理服务,并需要获取代理服务关联的WSDL。如果ESB可以在statup这些找不到的WSDL,它会忽略这样的服务,并继续启动。代理服务是一个虚拟的服务,实际功能由外部的已存在的服务提供。跟真实的服务一样,代理服务也需要用一个wsdl文件来描述自己的服务内容;这个wsdl文件可以是针对当前代理服务专门编写的,也可以将外部的一个真实服务的wsdl文件作为自己wsdl。这两种方式在意义上有一些不一样也是显而易见的:1、 当代理服务需要把外部的多个服务整合到一起,任何一个外部服务的wsdl都不足以描述整合后的服务时,需要为代理服务专门编写一个wsdl文件。2、 外部的一个服务足以描述整合后的代理服务,其他外部服务只是为这一个外部服务提供支撑,这时可以用这个外部服务的wsdl作为代理服务的wsdl。代理服务中的其他一些功能:1、 获取请求消息中的属性,用以判定对请求消息的进一步处理(分发消息到不同的endpoint、生成新的请求消息、缓存请求消息...)。2、 获取响应消息中的属性,用以判定对响应消息的进一步处理(判定响应消息来源、修改响应消息、根据响应生成新的请求消息并发送到另一个服务以组成服务链...)。3Wso2 Esb介绍 3.2 基本操作3.2.1 查看已注册的代理服务点击左侧Main & Manage & Services & List,可以查看已注册的代理服务。3.2.2 添加代理服务点击左侧Main & Manage & Add & Proxy Service,可以根据需要选择合适的方式添加代理服务。3.2.3 管理端点EndPoint点击左侧Main & Manage & Service Bus & EndPoints,可以根据需要对EndPoint进行管理。3.2.4 管理序列Sequences点击左侧Main & Manage & Service Bus & Sequences,可以根据需要对Sequences进行管理。3.2.5 管理本地注册信息Local Entries点击左侧Main & Manage & Service Bus & Local Entries,可以根据需要对Local Entries进行管理。3.3 服务质量点击左侧Main & Manage & Services & List,可以查看已注册的代理服务。单击列表中需要进行管理的服务名称,进入服务面板仪表盘,仪表盘中的Quality of Service Configuration面板是对服务质量的管理配置。可单击各个名称进入详细配置。3.3.1 安全配置单击Security进入安全配置面板,根据需要配置保证安全方式。3.3.2 消息可靠性配置单击Reliable Messaging进入消息可靠性配置面板,根据需要配置保证消息可靠性的方式。3.3.3 响应消息缓存配置单击Response Caching进入响应消息缓存配置面板,根据需要配置缓存响应消息的相关参数。4Wso2 Esb介绍 3.3.4 访问流量控制配置单击Access Throttling进入3.3.4 访问流量控制配置面板,根据需要配置访问流量控制的相关参数。3.3.5 附件MTOM配置从MTOM旁边的下拉框选择是否启用MTOM消息传输优化机制,若要传输附件需要选择True启用此功能,否则可不启用。5Wso2 Esb介绍 第4章 主题订阅4.1 简介 4.2 基本操作4.2.1 添加根主题点击左侧Main & Manage & Topics & Add,进入添加根主题面板,输入主题名称、配置好权限后单击Add Topic按钮即完成配置。4.2.2 添加子主题点击左侧Main & Manage & Topics & Browser,进入主题面板,选中需要添加子主题的节点后,单击节点旁边的Add Subtopic,进入添加子主题面板,输入主题名称、配置好权限后单击Add Topic按钮即完成配置。4.2.3 订阅主题点击左侧Main & Manage & Topics & Browser,进入主题面板,选中需要订阅的主题的节点后,单击节点旁边的Subscribe,进入订阅主题面板,配置好订阅规则后单击Subscribe按钮即完成订阅。4.2.4 主题管理点击左侧Main & Manage & Topics & Browser,进入主题面板,选中需要管理的主题的节点后,单击节点旁边的Details,进入主题详情面板,可在此面板管理主题权限、此主题的订阅者、发布主题消息。4.2.5 主题事件触发可在序列Sequences中添加事件,指定主题名称,来发布主题消息。6Wso2 Esb介绍 第5章 使用JMS5.1 配置ActiveMQ5.1.1 拷贝相关jar包拷贝
&AMQ_HOME&/lib目录下的jar到&ESB_HOME&/repository/components/lib目录下: activemq-broker-5.9.1.jaractivemq-client-5.9.1.jargeronimo-jms_1.1_spec-1.1.1.jargeronimo-j2ee-management_1.1_spec-1.0.1.jarhawtbuf-1.9.jar5.1.2 修改配置文件启用Jms启用监听jms协议。对在&ESB_HOME&/repository/components/lib目录下的axis2.xml配置文件中注释掉的以下内容,取消注释。 &transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&
&parameter name="myTopicConnectionFactory" locked="false"&&parameter name="java.naming.factory.initial"locked="false"&org.apache.activemq.jndi.ActiveMQInitialContextFactory&/parameter&
&parameter name="java.naming.provider.url"locked="false"&tcp://localhost:61616&/parameter&&parameter name="transport.jms.ConnectionFactoryJNDIName"locked="false"&TopicConnectionFactory&/parameter&&parameter name="transport.jms.ConnectionFactoryType" locked="false"&topic&/parameter&&/parameter&&parameter name="myQueueConnectionFactory" locked="false"&&parameter name="java.naming.factory.initial" locked="false"&org.apache.activemq.jndi.ActiveMQInitialContextFactory&/parameter&
&parameter name="java.naming.provider.url"locked="false"&tcp://localhost:61616&/parameter&&parameter name="transport.jms.ConnectionFactoryJNDIName"locked="false"&QueueConnectionFactory&/parameter&&parameter name="transport.jms.ConnectionFactoryType"locked="false"&queue&/parameter&&/parameter& &parameter name="default" locked="false"&&parameter name="java.naming.factory.initial"locked="false"&org.apache.activemq.jndi.ActiveMQInitialContextFactory&/parameter&7Wso2 Esb介绍
&parameter name="java.naming.provider.url"locked="false"&tcp://localhost:61616&/parameter&&parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&QueueConnectionFactory&/parameter&&parameter name="transport.jms.ConnectionFactoryType"locked="false"&queue&/parameter&&/parameter&&/transportReceiver&启用jms消息发送功能。对在&ESB_HOME&/repository/components/lib目录下的axis2.xml配置文件中注释掉的以下内容,取消注释。&transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/&5.1.3 启动ActiveMQ、wso2esb先启动ActiveMQ,再启动wso2esb,启动后在添加代理服务的面板的协议栏中,能看见可以选择jms了。 8Wso2 Esb介绍 第6章 使用Mysql6.1 配置Mysql6.1.1 拷贝相关jar包拷贝
mysql的jdbc驱动jar包(mysql-connector-java-5.XX-bin.jar)到&ESB_HOME&/repository/components/lib目录下。例如:mysql-connector-java-5.1.0-bin.jar 9Wso2 Esb介绍 第7章 使用VFS7.1 激活VFS传输协议7.1.1 激活VFS传输协议编辑&ESB_HOME&/repository/conf/axis2/axis2.xml 配置文件,取消被注释掉的以下配置的 &transportreceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/& ...&transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/&7.1.2 传输大文件为了避免在传输大文件时,出现内存溢出的错误,需要按以下步骤配置:1、编辑&ESB_HOME&/repository/conf/axis2/axis2.xml配置文件,在messageBuilders章节,添加二进制消息编译(binary message builder )的配置: &messagebuilder contenttype="application/binary" class="org.apache.axis2.format.BinaryBuilder"/&2、在使用VFS传输协议的代理服务中,添加以下参数(parameter)来使用流(streaming): &parameter name="transport.vfs.Streaming"&true&/parameter&3、在使用VFS传输协议的代理服务中,在使用发送中介(Send mediator)之前,添加以下属性(property):&property name="ClientApiNonBlocking" value="true" scope="axis2" action="remove"/& 10Wso2 Esb介绍 第8章 使用TCP8.1 启用TCP协议8.1.1 tcp发送和接收配置修改&ESB_HOME&/repository/conf/axis2/axis2.xml文件,修改tcp协议的发送和接收配置。配置内容如下: &!-- Enable TCP message --&&transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportListener"&
&parameter name="transport.tcp.port"&6060&/parameter&&/transportReceiver& &transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/& 11Wso2 Esb介绍 第9章 FAQ(常见问题解答)9.1 如何修改wso2esb的域名?修改&ESB_HOME&\repository\conf\carbon.xml文件中的HostName标签内的内容,修改为要设置成的IP或域名,保存后重启esb。如下图所示: 修改成功后,首页的Host变成了设置的值。效果如下: 9.2 如何修改ESB上发布服务的WSDL中的webservice地址中的域名及端口?修改&ESB_HOME&\repository\conf\axis2\axis2.xml文件中的对应协议下的bind-address参数标签内的内容,修改为要设置成的IP或域名;WSDLEPRPrefix参数标签内的内容,修改为要设置成的地址上下文,保存后重新加载代理服务配置生效。如下图所示: 12Wso2 Esb介绍 修改成功后,WSDL中的webservice地址中的域名及端口变成了设置的值。效果如下: 查看服务面板中的EndPoint(端点)变成了设置的值,效果如下: 原文地址:https://docs.wso2.org/display/ESB481/Setting+Up+Host+Names+and+Ports9.3 客户端调用webservice出错9.3.1 错误描述临检中心PB的webservice客户端,调用Rcmcx组的webservice注册的服务端,报could not find matching RPC/Literal part的错误。异常如下: org.apache.cxf.interceptor.Fault: Found element {}but could not find matching RPC/Literal part
atorg.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(RPCInInterceptor.java:171)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:700)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2261)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2134)atorg.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1988)at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)13Wso2 Esb介绍
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)atorg.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)atorg.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:487)at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)9.3.2 错误原因WebService的编码格式有两种Literal、Encoded。其中Encoded是比较古老的编码方式,现在WebServcie标准官方已经不建议使用了。CXF不支持这种编码格式。9.3.3 解决方案在ESB上配置消息转换,将Encoded标签内部的type属性去掉。配置的实体及序列示例如下:本地实体:lisRq.xslt &xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"&&xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"&&/xsl:output&&xsl:template match="/"&&p:sendTestReport xmlns:p="http://rlisreport.ws./"&&xsl:element name="arg0"&&xsl:value-of select="/"&&/xsl:value-of&&/xsl:element&&/p:sendTestReport&&/xsl:template&&/xsl:stylesheet&序列配置:conf:/InSQ.Rcmcx.RlisReport&sequence xmlns="http://ws.apache.org/ns/synapse" trace="enable"&&property name="messageType" value="text/ charset=UTF-8" scope="axis2" type="STRING"&&/property&&property name="ContentType" value="text/xml" scope="axis2" type="STRING"&&/property&
&xslt key="lisRq.xslt"&&/xslt&14Wso2 Esb介绍
&send&&endpoint key="conf:/EP.Rcmcx.RlisReport"&&/endpoint&
&/send&&/sequence& 15Wso2 Esb介绍 第10章 使用范例10.1 代理服务10.1.1 外部程序:WebService示例程序10.1.1.1 WebService示例(Greet)示例WebService,Greet。@WebService(targetNamespace="http://service.hello./") @SOAPBinding(style=SOAPBinding.Style.RPC)public class Greet { @WebResult(name="msgRp") @WebMethod(action="GreetA")public String GreetA(@WebParam(name="msgRq")String msg) {System.out.println("GreetA: "+msg+" coming! return 'GreetA: Hello "+msg+"'");return "GreetA: Hello " +
} @WebResult(name="msgRp") @WebMethod(action="GreetB")public String GreetB(@WebParam(name="msgRq")String msg) {System.out.println("GreetB: "+msg+" coming! return 'GreetB: Hello "+msg+"'");return "GreetB: Hello " +
} @WebResult(name="msgRp") @WebMethod(action="GreetC")public String GreetC(@WebParam(name="msgRq")String msg) {System.out.println("GreetC: "+msg+" coming! return 'GreetC: Hello "+msg+"'");return "GreetC: Hello " +
}public static void main(String[] args){Endpoint.publish("http://localhost:8080/demo/ws/greet", new Greet());Endpoint.publish("http://localhost:8080/demo/ws/hello", new Hello());16Wso2 Esb介绍
System.out.println("WS Start!");} }10.1.2 直接转发直接将一个已有服务通过ESB暴露出来,服务客户端调用外部服务或代理服务所不同的只是url地址;在代理服务的输入流程中不做任何处理,客户的请求直接转发到target所指向的endpoint。10.1.2.1 配置EndPoint(greet)endpoint配置: greet &endpoint xmlns="http://ws.apache.org/ns/synapse" name="greet"&&address uri="http://127.0.0.1:8080/demo/ws/greet"&&suspendOnFailure&&progressionFactor&1.0&/progressionFactor&&/suspendOnFailure&&markForSuspension&&retriesBeforeSuspension&0&/retriesBeforeSuspension&&retryDelay&0&/retryDelay&&/markForSuspension&&/address&&/endpoint&10.1.2.2 配置代理服务(greet)Proxy Service配置: &?xml version="1.0" encoding="UTF-8"?&&proxy xmlns="http://ws.apache.org/ns/synapse"name="greet"transports="https,http"statistics="enable"trace="enable"startOnLoad="true"&&target endpoint="conf:/greet"/&&publishWSDL uri="http://127.0.0.1:8080/demo/ws/greet?wsdl"/&&description/&&/proxy&10.1.3 编排业务流程,处理消息内容在输入流程中判定请求的内容,并做标记;在输出流程中根据标记记录日志。17Wso2 Esb介绍 10.1.3.1 配置消息输入的处理序列(greetInSequence)greetInSequence: &sequence xmlns="http://ws.apache.org/ns/synapse" name="greetInSequence" trace="enable"&
&switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://service.hello./" source="$body//msgRq"&&case regex="GreetA"&&property name="STATE" value="GreetA" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetB"&&property name="STATE" value="GreetB" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetC"&&property name="STATE" value="GreetC" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&default&&/default&&/switch&&/sequence&10.1.3.2 配置消息输出的处理序列(greetOutSequence)greetOutSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetOutSequence" trace="enable"&&switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('STATE')"&&case regex="GreetA"&&log level="full"&&property name="Sequence" value="GreetA"&&/property&&/log&&send&&/send&&/case&&case regex="GreetB"&&log level="full"&18Wso2 Esb介绍
&property name="Sequence" value="GreetB"&&/property&&/log&&send&&/send&&/case&&case regex="GreetC"&&log level="full"&&property name="Sequence" value="GreetC"&&/property&&/log&&send&&/send&&/case&&default&&send&&/send&&/default&&/switch&&/sequence&10.1.3.3 配置代理服务(greet)代理服务greet: &?xml version="1.0" encoding="UTF-8"?& &proxy xmlns="http://ws.apache.org/ns/synapse"name="greet"transports="https,http"statistics="enable"trace="enable"startOnLoad="true"&&target inSequence="greetInSequence"outSequence="greetOutSequence"faultSequence="fault"endpoint="conf:/greet"/&&publishWSDL uri="http://127.0.0.1:8080/demo/ws/greet?wsdl"/&&description/&&/proxy&10.1.4 编排业务流程,处理报文头内容在输入流程中判定请求的服务ACTION,并做标记;在输出流程中根据标记判定响应来源。10.1.4.1 配置消息输入的处理序列(greetInSequence) greetInSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetInSequence" trace="enable"&&switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('Action')"&&case regex="GreetA"&19Wso2 Esb介绍
&property name="STATE" value="GreetA" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetB"&&property name="STATE" value="GreetB" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetC"&&property name="STATE" value="GreetC" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&default&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/default&&/switch&&/sequence& scope="default" scope="default" scope="default" 10.1.5 增加xslt处理响应消息,并调用其他服务增加xslt处理响应消息,并调用其他服务:GreetA--& GreetB--& GreetC--&client。 这个过程中需要做两次报文转换:1、将GreetA的response转换为到GreetB的request;2、将GreetB的response转换为GreetC的request。10.1.5.1 GreetA的response转换为到GreetB的request的xslt文件(greetARpToBRq.xslt) GreetA的response消息:&S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&&S:Body&&ns2:GreetAResponse xmlns:ns2="http://service.hello./"&&msgRp&Hello aaaa&/msgRp&20Wso2 Esb介绍
&/ns2:GreetAResponse&&/S:Body&&/S:Envelope& GreetB的request消息:&soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&&soapenv:Body&&p:GreetB xmlns:p="http://service.hello./"&&msgRq&aaaa&/msgRq&&/p:GreetB&&/soapenv:Body&&/soapenv:Envelope&GreetA的response转换为到GreetB的request的xslt:greetARpToBRq.xslt &xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:ns="http://service.hello./"version="2.0"exclude-result-prefixes="ns"&&xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"&&/xsl:output&&xsl:template match="/"&&xsl:apply-templates select="//ns:GreetAResponse"&&/xsl:apply-templates&&/xsl:template&&xsl:template match="ns:GreetAResponse"&&p:GreetB xmlns:p="http://service.hello./"&&msgRq&&xsl:value-of select="msgRp"&&/xsl:value-of&&/msgRq&&/p:GreetB&&/xsl:template&&/xsl:stylesheet&10.1.5.2 GreetB的response转换为到GreetC的request的xslt文件(greetBRpToCRq.xslt)GreetB的response消息:&S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&&S:Body&&ns2:GreetBResponse xmlns:ns2="http://service.hello./"&&msgRp&Hello aaaa&/msgRp&&/ns2:GreetBResponse&&/S:Body&&/S:Envelope&GreetC的request消息:&soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&21Wso2 Esb介绍
&soapenv:Body&&p:GreetC xmlns:p="http://service.hello./"&&msgRq&aaaa&/msgRq&&/p:GreetC&&/soapenv:Body&&/soapenv:Envelope&GreetB的response转换为到GreetC的request的xslt:greetBRpToCRq.xslt &xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:ns="http://service.hello./"version="2.0"exclude-result-prefixes="ns"&&xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"&&/xsl:output&&xsl:template match="/"&&xsl:apply-templates select="//ns:GreetBResponse"&&/xsl:apply-templates&&/xsl:template&&xsl:template match="ns:GreetBResponse"&&p:GreetC xmlns:p="http://service.hello./"&&msgRq&&xsl:value-of select="msgRp"&&/xsl:value-of&&/msgRq&&/p:GreetC&&/xsl:template&&/xsl:stylesheet&10.1.5.3 注册xslt文件将greetARpToBRq.xslt及greetBRpToCRq.xslt注册到Local Entries里面 22Wso2 Esb介绍 10.1.5.4 配置消息输出的处理序列(greetOutSequence)greetOutSequence: &sequence xmlns="http://ws.apache.org/ns/synapse" name="greetOutSequence" trace="enable"&&switch xmlns:ns="http://org.apache.synapse/xsd" source="get-property('STATE')"&
&case regex="GreetA"&&log level="full"&&property name="Sequence" value="GreetA"&&/property&&/log&&xslt key="greetARpToBRq.xslt"&&/xslt&&property name="to" value="http://127.0.0.1:8080/demo/ws/greet" scope="transport" type="STRING"&&/property&&property name="Action" value="GreetB" scope="transport" type="STRING"&&/property&&property name="STATE" value="GreetB" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetB"&&log level="full"&&property name="Sequence" value="GreetB"&&/property&&/log&&xslt key="greetBRpToCRq.xslt"&&/xslt&&property name="to" value="http://127.0.0.1:8080/demo/ws/greet" scope="transport" type="STRING"&&/property&&property name="Action" value="GreetC" scope="transport" type="STRING"&&/property&&property name="STATE" value="GreetC" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetC"&23Wso2 Esb介绍
&log level="full"&&property name="Sequence" value="GreetC"&&/property&&/log&&/case&&default&&/default&&/switch&&/sequence& 10.1.6 增加数据缓存将客户请求中的数据提取出来保存到一个property mediator中,并在需要使用的时候通过get-property函数或者其他方式获得该数据。10.1.6.1 GreetC response的xslt处理文件(greetCRpUseCache.xslt)GreetC的response消息:&S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&&S:Body&&ns2:GreetCResponse xmlns:ns2="http://service.hello./"&&msgRp&Hello aaaa&/msgRp&&/ns2:GreetCResponse&&/S:Body&&/S:Envelope& GreetC response的xslt处理文件:greetCRpUseCache.xslt&xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:ns="http://service.hello./"version="2.0"exclude-result-prefixes="ns"&&xsl:param name="clientInput" /&&xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"&&/xsl:output&&xsl:template match="/"&&xsl:apply-templates select="//ns:GreetCResponse"&&/xsl:apply-templates&&/xsl:template&&xsl:template match="ns:GreetCResponse"&&p:GreetCResponse xmlns:p="http://service.hello./"&&msgRp&&xsl:value-of select="msgRp"&&/xsl:value-of&&xsl:value-of select="$clientInput"/&&/msgRp&&/p:GreetCResponse&&/xsl:template&&/xsl:stylesheet&24Wso2 Esb介绍 10.1.6.2 注册xslt文件 将greetCRpUseCache.xslt注册到Local Entries里面 10.1.6.3 配置消息输入的处理序列(greetInSequence) greetInSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetInSequence" trace="enable"&
&property xmlns:ns="http://org.apache.synapse/xsd" name="GREET_INPUT" expression="//msgRq" scope="default" type="STRING"&&/property&&switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:p="http://service.hello./" source="get-property('Action')"&&case regex="GreetA"&&property name="STATE" value="GreetA" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetB"&&property name="STATE" value="GreetB" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetC"&25Wso2 Esb介绍
&property name="STATE" value="GreetC"type="STRING"&&/property&
&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&default&&/default&&/switch&&/sequence& scope="default" 10.1.6.4 配置消息输出的处理序列(greetOutSequence)greetOutSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetOutSequence" trace="enable"&
&switch xmlns:ns="http://org.apache.synapse/xsd" source="get-property('STATE')"&
&case regex="GreetA"&&log level="full"&&property name="Sequence" value="GreetA"&&/property&&/log&&xslt key="greetARpToBRq.xslt"&&/xslt&&property name="to" value="http://127.0.0.1:8080/demo/ws/greet" scope="transport" type="STRING"&&/property&&property name="Action" value="GreetB" scope="transport" type="STRING"&&/property&&property name="STATE" value="GreetB" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&&/case&&case regex="GreetB"&&log level="full"&&property name="Sequence" value="GreetB"&&/property&&/log&&xslt key="greetBRpToCRq.xslt"&&/xslt&&property name="to" value="http://127.0.0.1:8080/demo/ws/greet" scope="transport" type="STRING"&&/property&&property name="Action" value="GreetC" scope="transport" type="STRING"&&/property&&property name="STATE" value="GreetC" scope="default" type="STRING"&&/property&&send&&endpoint key="conf:/greet"&&/endpoint&&/send&26Wso2 Esb介绍
&/case&&case regex="GreetC"&&log level="full"&&property name="Sequence" value="GreetC"&&/property&&/log&&xslt key="greetCRpUseCache.xslt"&&property name="clientInput" expression="get-property('GREET_INPUT')"&&/property&&/xslt&&/case&&default&&/default&&/switch&&/sequence&10.2 服务质量10.2.1 配置需要UserToken访问代理服务10.2.1.1 单击Security进入安全配置面板 10.2.1.2 启用Security安全配置选择Yes启用安全配置模块 10.2.1.3 指定安全方案为UsernameToken选择UsernameToken27Wso2 Esb介绍 单击页面底端的next按钮 10.2.1.4 指定允许访问此服务的用户选择允许访问此服务的账户后,单击Finish按钮,完成配置 28Wso2 Esb介绍 10.2.2 消息可靠性配置10.2.2.1 单击Reliable Messaging进入消息可靠性配置面板 10.2.2.2 启用消息可靠性配置选择Yes启用消息可靠性配置模块 10.2.2.3 配置可靠性模块参数配置好可靠性模块参数后,单击页面底端的Finish按钮,完成配置。29Wso2 Esb介绍 10.2.3 响应消息缓存配置10.2.3.1 单击Response Caching进入响应消息缓存配置面板 10.2.3.2 启用缓存响应消息配置选择Yes启用缓存响应消息配置模块30Wso2 Esb介绍 10.2.3.3 配置缓存响应消息模块参数配置好缓存响应消息模块参数后,单击页面底端的Finish按钮,完成配置。 10.2.4 访问流量控制配置10.2.4.1 单击Access Throttling进入访问流量控制配置面板 10.2.4.2 启用访问流量控制配置选择Yes启用访问流量控制配置模块31Wso2 Esb介绍 10.2.4.3 配置访问流量控制策略配置好访问流量控制策略后,单击页面底端的Finish按钮,完成配置。 10.3 通过ActiveMQ使用JMS10.3.1 外部程序:ActiveMQ演示程序一个生产者示例程序,和一个消费者示例程序。10.3.1.1 生产者示例程序(GreetS) 生产者向Greet队列发送消息。 private static final int SEND_NUMBER = 5; public static void main(String[] args) {
ConnectionFactory connectionF Connection connection= S Des MessageP connectionFactory=new ActiveMQConnectionFactory(32 public class GreetS {Wso2 Esb介绍 ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616"); try { connection=connectionFactory.createConnection(); connection.start(); session=connection.createSession(Boolean.TRUE, destination=session.createQueue("Greet"); producer=session.createProducer(destination); // 不持久化,测试使用 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); sendMessage(session, producer); mit(); e.printStackTrace(); try {
if (null != connection)
connection.close(); Session.AUTO_ACKNOWLEDGE); } catch (JMSException e) { } finally {
} catch (Throwable ignore) {
public static void sendMessage(Session session,MessageProducer
} for (int i = 0; i & SEND_NUMBER; i++) {
} TextMessage message=session.createTextMessage("ActiveMq 发送System.out.println("发送消息:" + "ActiveMq 发送的消息" + i); producer.send(message); producer) throws JMSException { 的消息"+i);10.3.1.2 消费者示例程序(GreetR) 消费者从Greet队列获取消息。 public static void main(String[] args) {
ConnectionFactory connectionF Connection connection= S Des33 class GreetR {Wso2 Esb介绍 MessageC
connectionFactory=new ActiveMQConnectionFactory(
ActiveMQConnectionFactory.DEFAULT_USER,
ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616"); try { connection=connectionFactory.createConnection(); connection.start(); session=connection.createSession(Boolean.FALSE, destination=session.createQueue("Greet"); consumer=session.createConsumer(destination); System.out.println("开始接收消息"); while (true) {
} e.printStackTrace(); try {
if (null != connection)
connection.close(); TextMessage message=(TextMessage) if (message!=null) {
System.out.println("收到消息:"+message.getText()); }else {
} Session.AUTO_ACKNOWLEDGE); consumer.receive(3600000); } catch (JMSException e) { }finally {} catch (Throwable ignore) {
}} }10.3.2 ESB作为消费者10.3.2.1 配置JMS代理服务输入序列(greetJmsInSequence) greetJmsInSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetJmsInSequence" trace="enable"&&property name="OUT_ONLY" value="true" scope="default" type="STRING"&&/property& &/sequence&34Wso2 Esb介绍 10.3.2.2 配置JMS代理服务输出序列(greetJmsOutSequence)greetJmsOutSequence: &sequence xmlns="http://ws.apache.org/ns/synapse"trace="enable"&&send&&/send&&/sequence& name="greetJmsOutSequence"10.3.2.3 配置JMS代理服务(greetJms)greetJms: &?xml version="1.0" encoding="UTF-8"?&&proxy xmlns="http://ws.apache.org/ns/synapse"name="greetJms"transports="jms"statistics="enable"trace="enable"startOnLoad="true"&&target inSequence="greetJmsInSequence" outSequence="greetJmsOutSequence"/&
&parameter name="transport.jms.Destination"&Greet&/parameter&&description/&&/proxy&10.3.2.4 验证结果 在ActiveMQ控制台发送消息或执行生产者示例程序,消息会被Esb上的可添加EndPoint端点或在序列中设置发送端点,则从Jms获取到的信息会被greetJms代理服务获取到,并被丢掉。 转发到对应的EndPoint。实现JMS到Http的转换。10.3.3 ESB作为生产者10.3.3.1 配置JMS端点EndPoint(greetJms)配置ActiveMQ中的Greet队列为获取消息的端点。greetJms:&endpoint xmlns="http://ws.apache.org/ns/synapse"&&addressuri="jms:/Greet?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"&&suspendOnFailure&&progressionFactor&1.0&/progressionFactor&&/suspendOnFailure&&markForSuspension&&retriesBeforeSuspension&0&/retriesBeforeSuspension&35Wso2 Esb介绍
&retryDelay&0&/retryDelay&&/markForSuspension&&/address&&/endpoint&10.3.3.2 配置JMS代理服务输入序列(greetJmsInSequence)greetJmsInSequence: &sequence xmlns="http://ws.apache.org/ns/synapse" name="greetJmsInSequence" trace="enable"&&property name="OUT_ONLY" value="true" scope="default" type="STRING"&&/property&
&send&&endpoint key="conf:/greetJms"&&/endpoint&&/send&&respond&&/respond&&/sequence&10.3.3.3 配置JMS代理服务(greetJms)greetJms: &?xml version="1.0" encoding="UTF-8"?&&proxy xmlns="http://ws.apache.org/ns/synapse"name="greetJms"transports="https,http"statistics="enable"trace="enable"startOnLoad="true"&&target inSequence="greetJmsInSequence" outSequence="greetJmsOutSequence"/&
&publishWSDL uri="http://127.0.0.1:8080/demo/ws/greet?wsdl"/&&description/&&/proxy&10.3.3.4 验证结果使用TryIt测试,能看到信息发送到了JMS的Greet消息队列中。10.3.4 ESB同时作为生产者和消费者10.3.4.1 配置JMS端点EndPoint(greetJms)配置ActiveMQ中的Greet队列为获取消息的端点。greetJms:&endpoint xmlns="http://ws.apache.org/ns/synapse"&&addressuri="jms:/GreetFromEsb?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"&&suspendOnFailure&36Wso2 Esb介绍
&progressionFactor&1.0&/progressionFactor&&/suspendOnFailure&&markForSuspension&&retriesBeforeSuspension&0&/retriesBeforeSuspension&&retryDelay&0&/retryDelay&&/markForSuspension&&/address&&/endpoint&10.3.4.2 配置JMS代理服务输入序列(greetJmsInSequence)greetJmsInSequence:&sequence xmlns="http://ws.apache.org/ns/synapse" name="greetJmsInSequence" trace="enable"&&property name="OUT_ONLY" value="true" scope="default" type="STRING"&&/property&
&send&&endpoint key="conf:/greetJms"&&/endpoint&&/send&&/sequence&10.3.4.3 配置JMS代理服务(greetJms)greetJms: &?xml version="1.0" encoding="UTF-8"?&&proxy xmlns="http://ws.apache.org/ns/synapse"name="greetJms"transports="jms"statistics="enable"trace="enable"startOnLoad="true"&&target inSequence="greetJmsInSequence" outSequence="greetJmsOutSequence"/&
&parameter name="transport.jms.Destination"&Greet&/parameter&&description/&&/proxy&10.3.4.4 验证结果 执行生产者示例程序,能看到信息发送到了JMS的Greet消息队列中,并被消费了,再发送到了GreetFromEsb消息队列中。37
欢迎转载:
推荐:    

我要回帖

更多关于 wso2 esb 汉化 的文章

 

随机推荐