jboss ESB 服务编排

jboss ESB 是企业服务总线,应用很广,但资料很少,而且仅有的很少的资料都是英文的。

 

最近研究了一下jboss esb的服务编排,直接进入主题了。

 

 

  jboss ESB 的环境配置这里就不说了,jboss的服务编排要建三个项目

                         (1)jbpm的项目(编排服务的流转顺序,这里使用的是jbpm3)

                         (2)建一个web项目,提供webservice服务。

                         (3)建一个esb服务,作为企业服务总线使用。

 

 

 

一   建 jbpm项目,然后建一个流程实例

            jboss ESB 服务编排_第1张图片

   如图所示的流程实例,有一个开始节点、两个esb service 节点 、一个任务节点和一个结束节点

 

 a 打开esb service节点的属性页面,编辑服务的名称,类别,输入、输出参数(这里的服务名称、类别、输入输出参数将和esb中的对应)

jboss ESB 服务编排_第2张图片

 

 

     

二 建一个动态的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服务 

jboss ESB 服务编排_第3张图片

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 map = new HashMap();
         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提供队列)



      name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
    xmbean-dd="xmdesc/Queue-xmbean.xml">
    jboss.messaging:service=ServerPeer
    jboss.messaging:service=PostOffice
 



jboss-esb.xml  文件 (esb的主要文件,配置服务、action,provider 等信息)


    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">
   
                    name="jboss message">
           
                                    dest-type="QUEUE" />
           

       

   

   
                    name="webservice_1">
           
                                    process="processParam" />
                                    name="webservice_1">
                                            value="http://127.0.0.1:8080/jbpmtest/webservice_1?wsdl" />
                   
                   
                   
                   
               

                                    process="processReturn" />
           

       

                    name="webservice_2">
           
                                    process="processParam" />
                                    name="webservice_2">
                                            value="http://127.0.0.1:8080/jbpmtest/webservice_2?wsdl" />
                   
                   
                   
                   
               

                                    process="processReturn" />
           

       

      (这里是对jbpm的引用)
       
           
               
           

           
                                    class="org.jboss.soa.esb.services.jbpm.actions.BpmProcessor">
                   
                   
                   
                       
                   

               

           

       

   



deployment.xml文件,发布服务的描叙文件


      name="jboss.esb.demo.destination:service=Queue,name=bpmstart"
    xmbean-dd="xmdesc/Queue-xmbean.xml">
    jboss.messaging:service=ServerPeer
    jboss.messaging:service=PostOffice
 



到这里,所有的信息都建立完毕。


然后发布服务和流程实例,注意这里的服务器使用的是jboss

建立客户端测试,esb的服务编排是否成功
jboss ESB 服务编排_第4张图片

所需的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 map = new HashMap();
//        map.put("hello.username", "jboss soa");
        esbMessage.getBody().add("simplewebservice");
        new ServiceInvoker("jbpm", "bpmstart").deliverAsync(esbMessage);
    }

}

uudi.xml文件





    3600000
   
       
           
               
                default
                Main jUDDI node
               
                org.apache.juddi.v3.client.transport.JAXWSTransport
                http://localhost:8080/juddiv3/services/custody-transfer?wsdl
                http://localhost:8080/juddiv3/services/inquiry?wsdl
                http://localhost:8080/juddiv3/services/publish?wsdl
                http://localhost:8080/juddiv3/services/security?wsdl
                http://localhost:8080/juddiv3/services/subscription?wsdl
                http://localhost:8080/juddiv3/services/subscription-listener?wsdl
                http://localhost:8080/juddiv3/services/juddi-api?wsdl
              
               
               
               
           

           
                default-ws
                jUDDI console node
               
                org.jboss.internal.soa.esb.registry.client.JuddiInVMTransport
                org.apache.juddi.api.impl.UDDICustodyTransferImpl
                org.apache.juddi.api.impl.UDDIInquiryImpl
                org.apache.juddi.api.impl.UDDIPublicationImpl
                org.apache.juddi.api.impl.UDDISecurityImpl
                org.apache.juddi.api.impl.UDDISubscriptionImpl
                org.apache.juddi.api.impl.UDDISubscriptionListenerImpl
                org.apache.juddi.api.impl.JUDDIApiImpl
           

       

   




jbossesb-properties.xml 文件






  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="jbossesb-1_0.xsd">
   
       
       
       
       
       
       
   

   
       
       
       
       
       
       
       
       
       
       

       
       
       
       
       
       

   

   
       
       
   
       
       
       
       
       
       
   
   

       
       
       

       
       
       

       
       
   

   
       
       
       
       
       
       
       
       
       
       
       
       
       
       
   

   
       
       
       
       
       
   

   
       
       
   


   
       
       
           
        
       
       
       
       
       
       
       
       
               
       
       
       
       
               
       
       
   
   
   
       
       
       
   


   
       
       
   








如果控制台打印出了webservice总输出的信息,说明服务编排成功。还可以从jboss的控制台查看流程实例的节点是否运行到了end节点

jboss ESB 服务编排_第5张图片

你可能感兴趣的:(java)