- 浏览: 185073 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
springdata_spring:
java程序语言学习教程 地址http://www.zuida ...
JAVA开发者最常去的20个英文网站 -
love-_-java:
那么请问怎么单独导出jar包?我刚单独到处时:Unhandle ...
解决Eclipse中Java工程间循环引用而报错的问题 -
Hello_June:
...
使用Spring2.5的Autowired实现注释型的IOC -
两两ACE:
棒棒哒
使用Spring2.5的Autowired实现注释型的IOC -
liubang201010:
Foglight 监控OC4j 旧系统9.0.3/9.0.4等 ...
OC4J
jboss ESB 是企业服务总线,应用很广,但资料很少,而且仅有的很少的资料都是英文的。
最近研究了一下jboss esb的服务编排,直接进入主题了。
jboss ESB 的环境配置这里就不说了,jboss的服务编排要建三个项目
(1)jbpm的项目(编排服务的流转顺序,这里使用的是jbpm3)
(2)建一个web项目,提供webservice服务。
(3)建一个esb服务,作为企业服务总线使用。
一 建 jbpm项目,然后建一个流程实例
如图所示的流程实例,有一个开始节点、两个esb service 节点 、一个任务节点和一个结束节点
a 打开esb service节点的属性页面,编辑服务的名称,类别,输入、输出参数(这里的服务名称、类别、输入输出参数将和esb中的对应)
二 建一个动态的web项目,作为webservice服务使用。
这里使用cxf 提供的建立webservice的方法
1 webservice_1
package com.richfit.jbpmwebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class WebService_1java {
@WebMethod(operationName = "process")
public String process_1(@WebParam(name = "xml") String xml) {
System.out
.println("------------------start process_1--------------------");
System.out.println(xml);
System.out
.println("------------------start process_1--------------------");
return "webservice_1:" + xml;
}
}
2 webservice_2
package com.richfit.jbpmwebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class WebService_2java {
@WebMethod(operationName = "process")
public String process_1(@WebParam(name = "xml") String xml) {
System.out
.println("------------------start process_2--------------------");
System.out.println(xml);
System.out
.println("------------------start process_2--------------------");
return "webservice_1:" + xml;
}
}
三 建立esb服务
ProcessWebServiceParam 类
package com.richfit.jbpm;
import java.util.HashMap;
import java.util.Map;
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
public class ProcessWebServiceParam extends AbstractActionLifecycle{
public ProcessWebServiceParam(ConfigTree _tree) {
}
public Message processParam(Message msg) throws ActionProcessingException {
String order = (String)msg.getBody().get("xml");
Map<String, String> map = new HashMap<String, String>();
map.put("process.xml", order);
msg.getBody().add("xml",map);
return msg;
}
public Message processReturn(Message msg) throws ActionProcessingException {
Map order = (Map)msg.getBody().get("return");
msg.getBody().add("xml",order.get("processResponse.return"));
return msg;
}
}
jbm-queue-service.xml 文件 (为provider提供队列)
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>
jboss-esb.xml 文件 (esb的主要文件,配置服务、action,provider 等信息)
<?xml version="1.0"?>
<jbossesb parameterReloadSecs="5"
xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd">
<providers>
<jms-provider connection-factory="ConnectionFactory"
name="jboss message">
<jms-bus busid="bpm start channel">
<jms-message-filter dest-name="queue/bpmstart"
dest-type="QUEUE" />
</jms-bus>
</jms-provider>
</providers>
<services>
<service category="bpm" description="webservice_1" invmScope="GLOBAL"
name="webservice_1">
<actions>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processParam"
process="processParam" />
<action class="org.jboss.soa.esb.actions.soap.SOAPClient"
name="webservice_1">
<property name="wsdl"
value="http://127.0.0.1:8080/jbpmtest/webservice_1?wsdl" />
<property name="SOAPAction" value="process" />
<property name="get-payload-location" value="xml"></property>
<property name="responseAsognlMap" value="true"></property>
<property name="set-payload-location" value="return"></property>
</action>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processReturn"
process="processReturn" />
</actions>
</service>
<service category="bpm" description="webservice_2" invmScope="GLOBAL"
name="webservice_2">
<actions>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processParam"
process="processParam" />
<action class="org.jboss.soa.esb.actions.soap.SOAPClient"
name="webservice_2">
<property name="wsdl"
value="http://127.0.0.1:8080/jbpmtest/webservice_2?wsdl" />
<property name="SOAPAction" value="process" />
<property name="get-payload-location" value="xml"></property>
<property name="responseAsognlMap" value="true"></property>
<property name="set-payload-location" value="return"></property>
</action>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processReturn"
process="processReturn" />
</actions>
</service>
(这里是对jbpm的引用)
<service category="bpm" description="order bpmstart" name="bpmstart">
<listeners>
<jms-listener busidref="bpm start channel" name="bpm start listener" />
</listeners>
<actions mep="OneWay">
<action name="start order bpm"
class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor">
<property name="command" value="StartProcessInstanceCommand" />
<property name="process-definition-name" value="webservicebpm" />
<property name="esbToBpmVars">
<mapping esb="BODY_CONTENT" bpm="xml" />
</property>
</action>
</actions>
</service>
</services>
</jbossesb>
deployment.xml文件,发布服务的描叙文件
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>
到这里,所有的信息都建立完毕。
然后发布服务和流程实例,注意这里的服务器使用的是jboss
建立客户端测试,esb的服务编排是否成功
[img][http://hi.csdn.net/attachment/201010/9/0_1286635466C6cB.gif/img]
所需的jar包如上图所示。
客户端的目录说明,
SimpleWebServiceEsbClient 类信息
package org.jboss.simple.esbclient;
import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.couriers.FaultMessageException;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
import org.jboss.soa.esb.services.registry.RegistryException;
public class SimpleWebServiceEsbClient {
/**
* @param args
* @throws RegistryException
* @throws MessageDeliverException
* @throws FaultMessageException
*/
public static void main(String[] args) throws FaultMessageException,
MessageDeliverException, RegistryException {
System.setProperty("javax.xml.registry.ConnectionFactoryClass",
"org.apache.ws.scout.registry.ConnectionFactoryImpl");
// System.setProperty("org.jboss.soa.esb.propertyFile",
// "abs://D:/jbossesb-properties.xml");
Message esbMessage = MessageFactory.getInstance().getMessage();
// Map<String, String> map = new HashMap<String, String>();
// map.put("hello.username", "jboss soa");
esbMessage.getBody().add("simplewebservice");
new ServiceInvoker("jbpm", "bpmstart").deliverAsync(esbMessage);
}
}
uudi.xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
<reloadDelay>3600000</reloadDelay>
<manager name="esb-registry">
<nodes>
<node>
<!-- required 'default' node -->
<name>default</name>
<description>Main jUDDI node</description>
<!-- JAX-WS Transport -->
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://localhost:8080/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://localhost:8080/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://localhost:8080/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://localhost:8080/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://localhost:8080/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://localhost:8080/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://localhost:8080/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
<!-- In VM Transport Settings
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiInVMTransport</proxyTransport>
<custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
<inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
<subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
<subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
<juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl> -->
<!-- RMI Transport Settings
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiRMITransport</proxyTransport>
<custodyTransferUrl>/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
<inquiryUrl>/juddiv3/UDDIInquiryService</inquiryUrl>
<publishUrl>/juddiv3/UDDIPublicationService</publishUrl>
<securityUrl>/juddiv3/UDDISecurityService</securityUrl>
<subscriptionUrl>/juddiv3/UDDISubscriptionService</subscriptionUrl>
<subscriptionListenerUrl>/juddiv3/UDDISubscriptionListenerService</subscriptionListenerUrl>
<juddiApiUrl>/juddiv3/JUDDIApiService</juddiApiUrl>
<javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
<javaNamingFactoryUrlPkgs>org.jboss.naming</javaNamingFactoryUrlPkgs>
<javaNamingProviderUrl>jnp://localhost:1099</javaNamingProviderUrl>-->
</node>
<node>
<name>default-ws</name>
<description>jUDDI console node</description>
<!-- In VM Transport Settings -->
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiInVMTransport</proxyTransport>
<custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
<inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
<subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
<subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
<juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl>
</node>
</nodes>
</manager>
</uddi>
jbossesb-properties.xml 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
JBoss, Home of Professional Open Source
Copyright 2006, JBoss Inc., and others contributors as indicated
by the @authors tag. All rights reserved.
See the copyright.txt in the distribution for a
full listing of individual contributors.
This copyrighted material is made available to anyone wishing to use,
modify, copy, or redistribute it subject to the terms and conditions
of the GNU Lesser General Public License, v. 2.1.
This program is distributed in the hope that it will be useful, but WITHOUT A
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License,
v.2.1 along with this distribution; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
(C) 2005-2006,
@author JBoss Inc.
-->
<!-- $Id: jbossesb-unittest-properties.xml $ -->
<!--
These options are described in the JBossESB manual.
Defaults are provided here for convenience only.
Please read through this file prior to using the system, and consider
updating the specified entries.
-->
<esb
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="jbossesb-1_0.xsd">
<properties name="core">
<property name="org.jboss.soa.esb.jndi.server.context.factory" value="org.jnp.interfaces.NamingContextFactory"/>
<property name="org.jboss.soa.esb.jndi.server.url" value="${jboss.esb.bind.address}:1099"/>
<property name="org.jboss.soa.esb.persistence.connection.factory" value="org.jboss.internal.soa.esb.persistence.format.MessageStoreFactoryImpl"/>
<property name="org.jboss.soa.esb.loadbalancer.policy" value="org.jboss.soa.esb.listeners.ha.RoundRobin"/>
<property name="org.jboss.soa.esb.mime.text.types" value="text/*;application/xml;application/*+xml"/>
<property name="jboss.esb.invm.scope.default" value="NONE"/>
</properties>
<properties name="security">
<property name="org.jboss.soa.esb.services.security.implementationClass" value="org.jboss.internal.soa.esb.services.security.JaasSecurityService"/>
<property name="org.jboss.soa.esb.services.security.callbackHandler" value="org.jboss.internal.soa.esb.services.security.UserPassCallbackHandler"/>
<!-- Algorithm and key size for internal sealing of objects -->
<property name="org.jboss.soa.esb.services.security.sealAlgorithm" value="TripleDES"/>
<property name="org.jboss.soa.esb.services.security.sealKeySize" value="168"/>
<!-- Timeout in milliseconds. After which the context is considered invalid -->
<property name="org.jboss.soa.esb.services.security.contextTimeout" value="30000"/>
<property name="org.jboss.soa.esb.services.security.contextPropagatorImplementationClass" value="org.jboss.internal.soa.esb.services.security.JBossASContextPropagator"/>
<!-- Public keystore configuration used to hold keys for encryption/decryption -->
<property name="org.jboss.soa.esb.services.security.publicKeystore" value="/publicKeyStore"/>
<property name="org.jboss.soa.esb.services.security.publicKeystorePassword" value="testKeystorePassword"/>
<property name="org.jboss.soa.esb.services.security.publicKeyAlias" value="testAlias"/>
<property name="org.jboss.soa.esb.services.security.publicKeyPassword" value="testPassword"/>
<property name="org.jboss.soa.esb.services.security.publicKeyTransformation" value="RSA/ECB/PKCS1Padding"/>
</properties>
<properties name="registry">
<property name="org.jboss.soa.esb.registry.queryManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDIInquiryService#inquire"/>
<property name="org.jboss.soa.esb.registry.lifeCycleManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDIPublicationService#publish"/>
<property name="org.jboss.soa.esb.registry.securityManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDISecurityService#secure"/>
<property name="org.jboss.soa.esb.registry.implementationClass" value="org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl"/>
<property name="org.jboss.soa.esb.registry.factoryClass" value="org.apache.ws.scout.registry.ConnectionFactoryImpl"/>
<property name="org.jboss.soa.esb.registry.user" value="root"/>
<property name="org.jboss.soa.esb.registry.password" value="root"/>
<!-- the following parameter is scout specific to set the type of communication between scout and the UDDI (embedded, rmi, soap) -->
<property name="org.jboss.soa.esb.scout.proxy.transportClass" value="org.apache.ws.scout.transport.LocalTransport"/>
<property name="org.jboss.soa.esb.scout.proxy.uddiVersion" value="3.0"/>
<property name="org.jboss.soa.esb.scout.proxy.uddiNameSpace" value="urn:uddi-org:api_v3"/>
<!-- specify the interceptors, in order -->
<property name="org.jboss.soa.esb.registry.interceptors" value="org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor"/>
<!-- Example of specifying multiple registry interceptors
<property name="org.jboss.soa.esb.registry.interceptors"
value="org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor, org.jboss.internal.soa.esb.services.registry.CachingRegistryInterceptor"/>
-->
<!-- The following properties modify the cache interceptor behaviour -->
<property name="org.jboss.soa.esb.registry.cache.maxSize" value="100"/>
<property name="org.jboss.soa.esb.registry.cache.validityPeriod" value="600000"/>
<!-- Organization Category to be used by this deployment. -->
<property name="org.jboss.soa.esb.registry.orgCategory" value="org.jboss.soa.esb.:category"/>
</properties>
<properties name="transports" depends="core">
<property name="org.jboss.soa.esb.mail.smtp.host" value="localhost"/>
<property name="org.jboss.soa.esb.mail.smtp.user" value="jbossesb"/>
<property name="org.jboss.soa.esb.mail.smtp.password" value=""/>
<property name="org.jboss.soa.esb.mail.smtp.port" value="25"/>
<property name="org.jboss.soa.esb.mail.smtp.auth" value="true"/>
<property name="org.jboss.soa.esb.ftp.localdir" value="/tmp"/>
<property name="org.jboss.soa.esb.ftp.remotedir" value="/tmp"/>
<property name="org.jboss.soa.esb.jms.connectionPool" value="20"/>
<property name="org.jboss.soa.esb.jms.sessionSleep" value="30"/>
<!-- expiry of messages to temporary invm destinations (default replies)
expire after the following timeout, specified in milliseconds (5 mins) -->
<property name="org.jboss.soa.esb.invm.expiryTime" value="300000"/>
<!-- Uncomment this to return stack traces when exposing an ESB service through WS
<property name="org.jboss.soa.esb.ws.returnStackTrace" value="true"/>
-->
<!-- Uncomment this to specify the WS response timeout when exposing an ESB service through WS
<property name="org.jboss.soa.esb.ws.timeout" value="30000"/>
-->
</properties>
<properties name="connection">
<property name="min-pool-size" value="5"/>
<property name="max-pool-size" value="10"/>
<property name="blocking-timeout-millis" value="5000"/>
<property name="abandoned-connection-timeout" value="10000"/>
<property name="abandoned-connection-time-interval" value="30000"/>
</properties>
<properties name="jca">
<property name="org.jboss.soa.esb.jca.activation.mapper.jms-ra.rar" value="org.jboss.soa.esb.listeners.jca.JBossActivationMapper"/>
<property name="org.jboss.soa.esb.jca.activation.mapper.wmq.jmsra.rar" value="org.jboss.soa.esb.listeners.jca.WMQActivationMapper"/>
</properties>
<properties name="dbstore">
<!-- connection manager type -->
<!-- <property name="org.jboss.soa.esb.persistence.db.conn.manager" value="org.jboss.internal.soa.esb.persistence.manager.StandaloneConnectionManager"/> -->
<property name="org.jboss.soa.esb.persistence.db.conn.manager" value="org.jboss.internal.soa.esb.persistence.manager.J2eeConnectionManager"/>
<!-- this property is only used if using the j2ee connection manager -->
<property name="org.jboss.soa.esb.persistence.db.datasource.name" value="java:/JBossESBDS"/>
<!-- standalone connection pooling settings -->
<property name="org.jboss.soa.esb.persistence.db.connection.url" value="jdbc:hsqldb:hsql://localhost:9001/"/>
<property name="org.jboss.soa.esb.persistence.db.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="org.jboss.soa.esb.persistence.db.user" value="sa"/>
<property name="org.jboss.soa.esb.persistence.db.pwd" value=""/>
<property name="org.jboss.soa.esb.persistence.db.pool.initial.size" value="2"/>
<property name="org.jboss.soa.esb.persistence.db.pool.min.size" value="2"/>
<property name="org.jboss.soa.esb.persistence.db.pool.max.size" value="5"/>
<!--table managed by pool to test for valid connections - created by pool automatically -->
<property name="org.jboss.soa.esb.persistence.db.pool.test.table" value="pooltest"/>
<property name="org.jboss.soa.esb.persistence.db.pool.timeout.millis" value="5000"/>
</properties>
<properties name="filters">
<property name="org.jboss.soa.esb.filter.1" value="org.jboss.internal.soa.esb.message.filter.MetaDataFilter"/>
<!-- property name="org.jboss.soa.esb.filter.#" value="org.jboss.internal.soa.esb.message.filter.EntryExitTimeFilter"/ -->
<property name="org.jboss.soa.esb.filter.2" value="org.jboss.internal.soa.esb.message.filter.GatewayFilter"/>
</properties>
<properties name="rules">
<!-- change this to true if you wish to have the same behaviour as ESB4.6 and prior (including SOA 4.3) -->
<property name="org.jboss.soa.esb.services.rules.continueState" value="false"/>
</properties>
</esb>
如果控制台打印出了webservice总输出的信息,说明服务编排成功。还可以从jboss的控制台查看流程实例的节点是否运行到了end节点
最近研究了一下jboss esb的服务编排,直接进入主题了。
jboss ESB 的环境配置这里就不说了,jboss的服务编排要建三个项目
(1)jbpm的项目(编排服务的流转顺序,这里使用的是jbpm3)
(2)建一个web项目,提供webservice服务。
(3)建一个esb服务,作为企业服务总线使用。
一 建 jbpm项目,然后建一个流程实例
如图所示的流程实例,有一个开始节点、两个esb service 节点 、一个任务节点和一个结束节点
a 打开esb service节点的属性页面,编辑服务的名称,类别,输入、输出参数(这里的服务名称、类别、输入输出参数将和esb中的对应)
二 建一个动态的web项目,作为webservice服务使用。
这里使用cxf 提供的建立webservice的方法
1 webservice_1
package com.richfit.jbpmwebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class WebService_1java {
@WebMethod(operationName = "process")
public String process_1(@WebParam(name = "xml") String xml) {
System.out
.println("------------------start process_1--------------------");
System.out.println(xml);
System.out
.println("------------------start process_1--------------------");
return "webservice_1:" + xml;
}
}
2 webservice_2
package com.richfit.jbpmwebservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public class WebService_2java {
@WebMethod(operationName = "process")
public String process_1(@WebParam(name = "xml") String xml) {
System.out
.println("------------------start process_2--------------------");
System.out.println(xml);
System.out
.println("------------------start process_2--------------------");
return "webservice_1:" + xml;
}
}
三 建立esb服务
ProcessWebServiceParam 类
package com.richfit.jbpm;
import java.util.HashMap;
import java.util.Map;
import org.jboss.soa.esb.actions.AbstractActionLifecycle;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
public class ProcessWebServiceParam extends AbstractActionLifecycle{
public ProcessWebServiceParam(ConfigTree _tree) {
}
public Message processParam(Message msg) throws ActionProcessingException {
String order = (String)msg.getBody().get("xml");
Map<String, String> map = new HashMap<String, String>();
map.put("process.xml", order);
msg.getBody().add("xml",map);
return msg;
}
public Message processReturn(Message msg) throws ActionProcessingException {
Map order = (Map)msg.getBody().get("return");
msg.getBody().add("xml",order.get("processResponse.return"));
return msg;
}
}
jbm-queue-service.xml 文件 (为provider提供队列)
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>
jboss-esb.xml 文件 (esb的主要文件,配置服务、action,provider 等信息)
<?xml version="1.0"?>
<jbossesb parameterReloadSecs="5"
xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd">
<providers>
<jms-provider connection-factory="ConnectionFactory"
name="jboss message">
<jms-bus busid="bpm start channel">
<jms-message-filter dest-name="queue/bpmstart"
dest-type="QUEUE" />
</jms-bus>
</jms-provider>
</providers>
<services>
<service category="bpm" description="webservice_1" invmScope="GLOBAL"
name="webservice_1">
<actions>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processParam"
process="processParam" />
<action class="org.jboss.soa.esb.actions.soap.SOAPClient"
name="webservice_1">
<property name="wsdl"
value="http://127.0.0.1:8080/jbpmtest/webservice_1?wsdl" />
<property name="SOAPAction" value="process" />
<property name="get-payload-location" value="xml"></property>
<property name="responseAsognlMap" value="true"></property>
<property name="set-payload-location" value="return"></property>
</action>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processReturn"
process="processReturn" />
</actions>
</service>
<service category="bpm" description="webservice_2" invmScope="GLOBAL"
name="webservice_2">
<actions>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processParam"
process="processParam" />
<action class="org.jboss.soa.esb.actions.soap.SOAPClient"
name="webservice_2">
<property name="wsdl"
value="http://127.0.0.1:8080/jbpmtest/webservice_2?wsdl" />
<property name="SOAPAction" value="process" />
<property name="get-payload-location" value="xml"></property>
<property name="responseAsognlMap" value="true"></property>
<property name="set-payload-location" value="return"></property>
</action>
<action class="com.richfit.jbpm.ProcessWebServiceParam" name="processReturn"
process="processReturn" />
</actions>
</service>
(这里是对jbpm的引用)
<service category="bpm" description="order bpmstart" name="bpmstart">
<listeners>
<jms-listener busidref="bpm start channel" name="bpm start listener" />
</listeners>
<actions mep="OneWay">
<action name="start order bpm"
class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor">
<property name="command" value="StartProcessInstanceCommand" />
<property name="process-definition-name" value="webservicebpm" />
<property name="esbToBpmVars">
<mapping esb="BODY_CONTENT" bpm="xml" />
</property>
</action>
</actions>
</service>
</services>
</jbossesb>
deployment.xml文件,发布服务的描叙文件
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>
到这里,所有的信息都建立完毕。
然后发布服务和流程实例,注意这里的服务器使用的是jboss
建立客户端测试,esb的服务编排是否成功
[img][http://hi.csdn.net/attachment/201010/9/0_1286635466C6cB.gif/img]
所需的jar包如上图所示。
客户端的目录说明,
SimpleWebServiceEsbClient 类信息
package org.jboss.simple.esbclient;
import org.jboss.soa.esb.client.ServiceInvoker;
import org.jboss.soa.esb.couriers.FaultMessageException;
import org.jboss.soa.esb.listeners.message.MessageDeliverException;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
import org.jboss.soa.esb.services.registry.RegistryException;
public class SimpleWebServiceEsbClient {
/**
* @param args
* @throws RegistryException
* @throws MessageDeliverException
* @throws FaultMessageException
*/
public static void main(String[] args) throws FaultMessageException,
MessageDeliverException, RegistryException {
System.setProperty("javax.xml.registry.ConnectionFactoryClass",
"org.apache.ws.scout.registry.ConnectionFactoryImpl");
// System.setProperty("org.jboss.soa.esb.propertyFile",
// "abs://D:/jbossesb-properties.xml");
Message esbMessage = MessageFactory.getInstance().getMessage();
// Map<String, String> map = new HashMap<String, String>();
// map.put("hello.username", "jboss soa");
esbMessage.getBody().add("simplewebservice");
new ServiceInvoker("jbpm", "bpmstart").deliverAsync(esbMessage);
}
}
uudi.xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
<reloadDelay>3600000</reloadDelay>
<manager name="esb-registry">
<nodes>
<node>
<!-- required 'default' node -->
<name>default</name>
<description>Main jUDDI node</description>
<!-- JAX-WS Transport -->
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://localhost:8080/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://localhost:8080/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://localhost:8080/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://localhost:8080/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://localhost:8080/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://localhost:8080/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://localhost:8080/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
<!-- In VM Transport Settings
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiInVMTransport</proxyTransport>
<custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
<inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
<subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
<subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
<juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl> -->
<!-- RMI Transport Settings
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiRMITransport</proxyTransport>
<custodyTransferUrl>/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
<inquiryUrl>/juddiv3/UDDIInquiryService</inquiryUrl>
<publishUrl>/juddiv3/UDDIPublicationService</publishUrl>
<securityUrl>/juddiv3/UDDISecurityService</securityUrl>
<subscriptionUrl>/juddiv3/UDDISubscriptionService</subscriptionUrl>
<subscriptionListenerUrl>/juddiv3/UDDISubscriptionListenerService</subscriptionListenerUrl>
<juddiApiUrl>/juddiv3/JUDDIApiService</juddiApiUrl>
<javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
<javaNamingFactoryUrlPkgs>org.jboss.naming</javaNamingFactoryUrlPkgs>
<javaNamingProviderUrl>jnp://localhost:1099</javaNamingProviderUrl>-->
</node>
<node>
<name>default-ws</name>
<description>jUDDI console node</description>
<!-- In VM Transport Settings -->
<proxyTransport>org.jboss.internal.soa.esb.registry.client.JuddiInVMTransport</proxyTransport>
<custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
<inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
<subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
<subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
<juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl>
</node>
</nodes>
</manager>
</uddi>
jbossesb-properties.xml 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
JBoss, Home of Professional Open Source
Copyright 2006, JBoss Inc., and others contributors as indicated
by the @authors tag. All rights reserved.
See the copyright.txt in the distribution for a
full listing of individual contributors.
This copyrighted material is made available to anyone wishing to use,
modify, copy, or redistribute it subject to the terms and conditions
of the GNU Lesser General Public License, v. 2.1.
This program is distributed in the hope that it will be useful, but WITHOUT A
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License,
v.2.1 along with this distribution; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
(C) 2005-2006,
@author JBoss Inc.
-->
<!-- $Id: jbossesb-unittest-properties.xml $ -->
<!--
These options are described in the JBossESB manual.
Defaults are provided here for convenience only.
Please read through this file prior to using the system, and consider
updating the specified entries.
-->
<esb
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="jbossesb-1_0.xsd">
<properties name="core">
<property name="org.jboss.soa.esb.jndi.server.context.factory" value="org.jnp.interfaces.NamingContextFactory"/>
<property name="org.jboss.soa.esb.jndi.server.url" value="${jboss.esb.bind.address}:1099"/>
<property name="org.jboss.soa.esb.persistence.connection.factory" value="org.jboss.internal.soa.esb.persistence.format.MessageStoreFactoryImpl"/>
<property name="org.jboss.soa.esb.loadbalancer.policy" value="org.jboss.soa.esb.listeners.ha.RoundRobin"/>
<property name="org.jboss.soa.esb.mime.text.types" value="text/*;application/xml;application/*+xml"/>
<property name="jboss.esb.invm.scope.default" value="NONE"/>
</properties>
<properties name="security">
<property name="org.jboss.soa.esb.services.security.implementationClass" value="org.jboss.internal.soa.esb.services.security.JaasSecurityService"/>
<property name="org.jboss.soa.esb.services.security.callbackHandler" value="org.jboss.internal.soa.esb.services.security.UserPassCallbackHandler"/>
<!-- Algorithm and key size for internal sealing of objects -->
<property name="org.jboss.soa.esb.services.security.sealAlgorithm" value="TripleDES"/>
<property name="org.jboss.soa.esb.services.security.sealKeySize" value="168"/>
<!-- Timeout in milliseconds. After which the context is considered invalid -->
<property name="org.jboss.soa.esb.services.security.contextTimeout" value="30000"/>
<property name="org.jboss.soa.esb.services.security.contextPropagatorImplementationClass" value="org.jboss.internal.soa.esb.services.security.JBossASContextPropagator"/>
<!-- Public keystore configuration used to hold keys for encryption/decryption -->
<property name="org.jboss.soa.esb.services.security.publicKeystore" value="/publicKeyStore"/>
<property name="org.jboss.soa.esb.services.security.publicKeystorePassword" value="testKeystorePassword"/>
<property name="org.jboss.soa.esb.services.security.publicKeyAlias" value="testAlias"/>
<property name="org.jboss.soa.esb.services.security.publicKeyPassword" value="testPassword"/>
<property name="org.jboss.soa.esb.services.security.publicKeyTransformation" value="RSA/ECB/PKCS1Padding"/>
</properties>
<properties name="registry">
<property name="org.jboss.soa.esb.registry.queryManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDIInquiryService#inquire"/>
<property name="org.jboss.soa.esb.registry.lifeCycleManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDIPublicationService#publish"/>
<property name="org.jboss.soa.esb.registry.securityManagerURI" value="org.apache.juddi.v3.client.transport.wrapper.UDDISecurityService#secure"/>
<property name="org.jboss.soa.esb.registry.implementationClass" value="org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl"/>
<property name="org.jboss.soa.esb.registry.factoryClass" value="org.apache.ws.scout.registry.ConnectionFactoryImpl"/>
<property name="org.jboss.soa.esb.registry.user" value="root"/>
<property name="org.jboss.soa.esb.registry.password" value="root"/>
<!-- the following parameter is scout specific to set the type of communication between scout and the UDDI (embedded, rmi, soap) -->
<property name="org.jboss.soa.esb.scout.proxy.transportClass" value="org.apache.ws.scout.transport.LocalTransport"/>
<property name="org.jboss.soa.esb.scout.proxy.uddiVersion" value="3.0"/>
<property name="org.jboss.soa.esb.scout.proxy.uddiNameSpace" value="urn:uddi-org:api_v3"/>
<!-- specify the interceptors, in order -->
<property name="org.jboss.soa.esb.registry.interceptors" value="org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor"/>
<!-- Example of specifying multiple registry interceptors
<property name="org.jboss.soa.esb.registry.interceptors"
value="org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor, org.jboss.internal.soa.esb.services.registry.CachingRegistryInterceptor"/>
-->
<!-- The following properties modify the cache interceptor behaviour -->
<property name="org.jboss.soa.esb.registry.cache.maxSize" value="100"/>
<property name="org.jboss.soa.esb.registry.cache.validityPeriod" value="600000"/>
<!-- Organization Category to be used by this deployment. -->
<property name="org.jboss.soa.esb.registry.orgCategory" value="org.jboss.soa.esb.:category"/>
</properties>
<properties name="transports" depends="core">
<property name="org.jboss.soa.esb.mail.smtp.host" value="localhost"/>
<property name="org.jboss.soa.esb.mail.smtp.user" value="jbossesb"/>
<property name="org.jboss.soa.esb.mail.smtp.password" value=""/>
<property name="org.jboss.soa.esb.mail.smtp.port" value="25"/>
<property name="org.jboss.soa.esb.mail.smtp.auth" value="true"/>
<property name="org.jboss.soa.esb.ftp.localdir" value="/tmp"/>
<property name="org.jboss.soa.esb.ftp.remotedir" value="/tmp"/>
<property name="org.jboss.soa.esb.jms.connectionPool" value="20"/>
<property name="org.jboss.soa.esb.jms.sessionSleep" value="30"/>
<!-- expiry of messages to temporary invm destinations (default replies)
expire after the following timeout, specified in milliseconds (5 mins) -->
<property name="org.jboss.soa.esb.invm.expiryTime" value="300000"/>
<!-- Uncomment this to return stack traces when exposing an ESB service through WS
<property name="org.jboss.soa.esb.ws.returnStackTrace" value="true"/>
-->
<!-- Uncomment this to specify the WS response timeout when exposing an ESB service through WS
<property name="org.jboss.soa.esb.ws.timeout" value="30000"/>
-->
</properties>
<properties name="connection">
<property name="min-pool-size" value="5"/>
<property name="max-pool-size" value="10"/>
<property name="blocking-timeout-millis" value="5000"/>
<property name="abandoned-connection-timeout" value="10000"/>
<property name="abandoned-connection-time-interval" value="30000"/>
</properties>
<properties name="jca">
<property name="org.jboss.soa.esb.jca.activation.mapper.jms-ra.rar" value="org.jboss.soa.esb.listeners.jca.JBossActivationMapper"/>
<property name="org.jboss.soa.esb.jca.activation.mapper.wmq.jmsra.rar" value="org.jboss.soa.esb.listeners.jca.WMQActivationMapper"/>
</properties>
<properties name="dbstore">
<!-- connection manager type -->
<!-- <property name="org.jboss.soa.esb.persistence.db.conn.manager" value="org.jboss.internal.soa.esb.persistence.manager.StandaloneConnectionManager"/> -->
<property name="org.jboss.soa.esb.persistence.db.conn.manager" value="org.jboss.internal.soa.esb.persistence.manager.J2eeConnectionManager"/>
<!-- this property is only used if using the j2ee connection manager -->
<property name="org.jboss.soa.esb.persistence.db.datasource.name" value="java:/JBossESBDS"/>
<!-- standalone connection pooling settings -->
<property name="org.jboss.soa.esb.persistence.db.connection.url" value="jdbc:hsqldb:hsql://localhost:9001/"/>
<property name="org.jboss.soa.esb.persistence.db.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="org.jboss.soa.esb.persistence.db.user" value="sa"/>
<property name="org.jboss.soa.esb.persistence.db.pwd" value=""/>
<property name="org.jboss.soa.esb.persistence.db.pool.initial.size" value="2"/>
<property name="org.jboss.soa.esb.persistence.db.pool.min.size" value="2"/>
<property name="org.jboss.soa.esb.persistence.db.pool.max.size" value="5"/>
<!--table managed by pool to test for valid connections - created by pool automatically -->
<property name="org.jboss.soa.esb.persistence.db.pool.test.table" value="pooltest"/>
<property name="org.jboss.soa.esb.persistence.db.pool.timeout.millis" value="5000"/>
</properties>
<properties name="filters">
<property name="org.jboss.soa.esb.filter.1" value="org.jboss.internal.soa.esb.message.filter.MetaDataFilter"/>
<!-- property name="org.jboss.soa.esb.filter.#" value="org.jboss.internal.soa.esb.message.filter.EntryExitTimeFilter"/ -->
<property name="org.jboss.soa.esb.filter.2" value="org.jboss.internal.soa.esb.message.filter.GatewayFilter"/>
</properties>
<properties name="rules">
<!-- change this to true if you wish to have the same behaviour as ESB4.6 and prior (including SOA 4.3) -->
<property name="org.jboss.soa.esb.services.rules.continueState" value="false"/>
</properties>
</esb>
如果控制台打印出了webservice总输出的信息,说明服务编排成功。还可以从jboss的控制台查看流程实例的节点是否运行到了end节点
发表评论
-
spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2
2009-07-25 00:52 19491.首先我们要介绍 web.xml文件: <?xml ... -
jBPM相关概念
2009-06-18 10:54 1087jBPM相关概念 1. JPDL的流程定义元 ... -
jBPM相关概念
2008-11-25 16:53 1331jBPM相关概念2008-07-10 17:15关键字:jbp ... -
jbpm]在JSP页面中显示JBPM流程图
2008-11-25 16:50 6710[jbpm]在JSP页面中显示JBPM流程图2008-07-1 ... -
把jbpm流程图显示在jsp页面中2008-07-10 15:08把jbpm流程图显示在jsp页面中
2008-11-25 16:48 2544把jbpm流程图显示在jsp页面中2008-07-10 15: ...
相关推荐
### jbossesb开发手册知识点概述 #### 一、引言 JBoss ESB(Enterprise Service Bus)是一款开源的企业服务总线解决方案,旨在为应用程序之间的通信提供一个灵活且可扩展的基础架构。本手册旨在帮助初学者理解JBoss...
JBoss ESB(Enterprise Service Bus)是Red Hat公司开发的一款开源服务总线,它提供了一种中间件解决方案,用于构建松散耦合、灵活且可扩展的企业级应用。作为新手入门,理解JBoss ESB的基本概念、功能以及如何操作...
在构建基于JBoss ESB 4.6的应用程序时,SOA(面向服务的架构)平台配置是至关重要的第一步。正确的配置能够确保服务之间高效稳定地交互。 - **环境搭建**:安装必要的软件包,如Java环境、JBoss ESB等,并进行版本...
jboss esb 实例及讲解,我收集的资料整理做成书
**JBoss ESB 开发环境配置** ...这个过程对于开发者来说至关重要,因为它提供了构建和测试ESB服务的基础。在熟悉这些步骤后,开发者就可以着手构建自己的服务,利用ESB的强大功能来实现系统的集成和通信。
3.8. JBossESB和它与SOA的关系 11 4. 第二章 企业服务总线 13 4.1. 概述 13 4.2. 构建的必要条件 15 4.3. 注册和存储 16 4.4. 创建服务 16 4.5. 服务的版本化 16 4.6. 集成遗留系统 17 5. 第三章 什么时候使用JBoss...
JBoss ESB 入门例子。主要是一个Server和一个Client。
一、Jboss ESB的简介 1、 什么是ESB。 ESB的全称是Enterprise Service Bus,即企业服务总线。ESB是过去消息中间件的发展,ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放...
《JBoss ESB 开发指南》是一本专为开发者设计的详实教程,旨在提供关于最新版本JBoss ESB(企业服务总线)的全面编程和开发指导。JBoss ESB是一款开源的企业服务总线解决方案,它允许在分布式环境中集成各种服务和...
JBossTools实践系列:JBossESB服务开发入门
"JBossESB学习笔记"中可能涵盖了以下主题: - JBoss ESB的安装与配置 - 创建、部署和测试ESB服务 - 使用ESB进行消息路由和转换的实践 - AOP在JBoss ESB中的应用示例 - ESB的监控与故障排查 - 高级特性,如工作流...
JBossESB学习笔记 收集了网上1-16系列教程,笔记详细介绍了JBossESB各个组件的特性及配置文件的说明
JBoss ESB,即Enterprise Service Bus,是Red Hat JBoss家族中的一员,专注于企业级服务总线解决方案,旨在简化不同应用程序间的集成与通信。其核心功能包括消息传递、数据转换、事务管理以及监控等,为构建高度灵活...
1. **基础入门**:如《JBoss_ESB学习笔记5——第四个ESB应用Hello World File Action.doc》所示,初学者通常从“Hello World”程序开始,了解如何创建并运行一个简单的ESB服务。这一阶段会介绍ESB的基本概念,如服务...
JBoss ESB(Enterprise Service Bus)是一款开源的企业服务总线产品,旨在简化企业级应用程序之间的集成和服务交互。它提供了丰富的功能集来支持服务间的通信、数据转换、消息路由等关键需求。本篇文档将详细介绍...
1.JBossESB的总体要求和我们应采取的架构方法的纲要。2.JBossESB的主要目的是提供一个部署,运行和管理的SOA基础结构。 3.SOA原则将贯穿于整个架构,而传统意义上ESB可能是它所提供功能的一狭小部分
直市场解决方案(VMS)是NAVTEQ公司中的一个机构,负责为客户提供定制的解决方案,...在本文中,我将讨论如何使用JBoss中间件平台来构建这样的系统,尤其是使用JBoss ESB和jBPM(JBoss Business Process Management)。