...
This document describes how to run ServiceMix's BPEL example and provides details about what it does. For information on the business use case, please refer to: Use Case for BPEL.
The BPEL example illustrates the following:
...
- Java Standard Edition 5.0
- Ant - http://ant.apache.org
- PXE - We support WS-BPEL via the PXE BPEL Engine from FiveSight.
Warning title Warning NOTE: ServiceMix works on any Java SE 1.4 or later environment; however to use PXE a Java SE 5 or later platform is required. Before running this example, use Java 1.5 to start up ServiceMix.
...
- From a command shell, go to the BPEL example directory:
whereCode Block cd [servicemix_install_dir]\examples\bpel
servicemix_install_dir
is the directory in which ServiceMix was installed. - Then type:
Code Block [servicemix_install_dir]\bin\servicemix servicemix.xml OR ..\..\bin\servicemix servicemix.xml
- To trigger the BPEL business process, send it some messages. To do this, compile and run a simple JMS client. The client is built and run from source code using Ant. Execute Ant from the BPEL directory:
servicemix_install_dir\examples\bpel
. To run the JMS client type:Code Block ant
Ant will compile and run the simple JMS client, JMSClient, which performs a JMS based request-response into the ServiceMix container before returning the results to the console.Tip title Handy Hint Add $SERVICEMIX_HOME\bin directory to $PATH variable to simplify execution of the example.
Stopping the BPEL Example
To terminate the BPEL example type "CTRL-C" in the command shell in which it is running and answer "y" to the "Terminate batch job (y/n)?" question.
...
- The JMSClient, through ActiveMQConnectionFactory, connects to the topic named "demo.org.servicemix.source" and sends a text message containing the
message.soap
file. - myComponent, being a subscriber of the topic "demo.org.servicemix.source," receives the message.
- The myComponent implementation class, JmsServiceComponent, sends the message over the ServiceMix bus to the PxeBpelEngine by executing its onMessage() method. The destinationService property defines the destination of the message. NOTE: the destinationService property is found in the
servicemix.xml
file. - PxeBpelEngine sends a response back to myComponent through the ServiceMix bus, the NMR.
- myComponent uses the jmsTemplate bean to publish the message.
- jmsTemplate uses the jmsFactory bean to get a connection to the port associated with the JMS topic called "demo.org.servicemix.source." The message is published on the "demo.org.servicemix.source" topic.
- JMSClient, being a subscriber of topic "demo.org.servicemix.source," receives the message.
- The response is printed on the console.
Logging information is written to the console as files are transmitted. Typical output looks like the following:
Code Block |
---|
ServiceMix ESB: 1.0 Loading ServiceMix from file: servicemix.xml [INFO] XmlBeanDefinitionReader - -Loading XML bean definitions from file C:\exist\servicemix\servicemix-1.0.1\examples\bpel\servicemix.xml] [INFO] CollectionFactory - -JDK 1.4+ collections available [INFO] CollectionFactory - -Commons Collections 3.x available [INFO] FileSystemXmlApplicationContext - -Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=110 2920]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [jndi,broker,transactionManager,jmsFactory,jbi]; root of BeanFactory hierarchy[INFO] FileSystemXmlApplicationContext - -5 beans defined in application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=1102920] [INFO] FileSystemXmlApplicationContext - -Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@18e2b22] [INFO] FileSystemXmlApplicationContext - -Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@13caecd] [INFO] DefaultListableBeanFactory - -Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [jndi,broker,transactionManager,jmsFactory,jbi]; root of BeanFactory hierarchy] [INFO] DefaultListableBeanFactory - -Creating shared instance of singleton bean'jndi' [INFO] DefaultListableBeanFactory - -Creating shared instance of singleton bean 'broker' [INFO] SpringBrokerContainerFactory - -Loading ActiveMQ broker from configuration: class path resource [activemq.xml] [INFO] ActiveMQBeanDefinitionReader - -Loading XML bean definitions from class path resource [activemq.xml] [INFO] ActiveMQBeanFactory - -Creating shared instance of singleton bean 'broker' [INFO] ActiveMQBeanFactory - -Creating shared instance of singleton bean 'memoryManager' [INFO] ActiveMQBeanFactory - -Creating shared instance of singleton bean 'derby-ds' [INFO] ActiveMQBeanFactory - -Creating shared instance of singleton bean 'mysql-ds' [INFO] BrokerContainerImpl - -ActiveMQ 3.1-M6 JMS Message Broker (ID:el2tong-1095-1129854563062-0:0) is starting [INFO] BrokerContainerImpl - -For help or more information please see: http://www.logicblaze.com [INFO] JDBCPersistenceAdapter - -Database driver recognized: [apache_derby_embedded_jdbc_driver] [INFO] DefaultJDBCAdapter - -Could not create JDBC tables; they could already exist. Failure was: CREATE TABLE ACTIVEMQ_MSGS(ID INTEGER NOT NULL, CONTAINER VARCHAR(250), MSGID VARCHAR(250), MSG BLOB, PRIMARY KEY ( ID ) ) Message: Table/View 'ACTIVEMQ_MSGS' already exists in Schema 'APP'. SQLState: X0Y32 Vendor code: 20000 [INFO] DefaultJDBCAdapter - -Could not create JDBC tables; they could already exist. Failure was: CREATE TABLE ACTIVEMQ_TXS(XID VARCHAR(250) NOT NULL, PRIMARY KEY ( XID )) Message: Table/View 'ACTIVEMQ_TXS' already exists in Schema 'APP'. SQLState: X0Y32 Vendor code: 20000 [INFO] DefaultJDBCAdapter - -Could not create JDBC tables; they could already exist. Failure was: CREATE TABLE ACTIVEMQ_ACKS(SUB VARCHAR(250) NOT NULL, CONTAINER VARCHAR(250) NOT NULL, LAST_ACKED_ID INTEGER, SE_ID INTEGER, SE_CLIENT_ID VARCHAR(250), SE_CONSUMER_NAME VARCHAR(250), SE_SELECTOR VARCHAR(250), PRIMARY KEY ( SUB, CONTAINER )) Message: Table/View 'ACTIVEMQ_ACKS' already exists in Schema 'APP'. SQLState: X0Y32 Vendor code: 20000 [INFO] DefaultJDBCAdapter - -Could not create JDBC tables; they could already exist. Failure was: ALTER TABLE ACTIVEMQ_MSGS ADD EXPIRATION BIGINT Message: Column 'EXPIRATION' already exists in Table/View 'APP.ACTIVEMQ_MSGS'. SQLState: X0Y32 Vendor code: 20000 [INFO] JournalPersistenceAdapter - -Opening journal. [INFO] JournalPersistenceAdapter - -Opened journal: Active Journal: using 2 x 20.0 Megs at: ..\var\journal [INFO] JournalPersistenceAdapter - -Journal Recovery Started. [INFO] JournalPersistenceAdapter - -Journal Recovered: 0 message(s) in transactions recovered. [INFO] TcpTransportServerChannel - -Listening for connections at: tcp://el2tong:61616 [INFO] BrokerConnectorImpl - -ActiveMQ connector started: TcpTransportServerChannel@tcp://el2tong:61616 [INFO] BrokerContainerImpl - -ActiveMQ JMS Message Broker (ID:el2tong-1095-1129854563062-0:0) has started [INFO] DefaultListableBeanFactory - -Creating shared instance of singleton bean 'transactionManager' [INFO] DefaultListableBeanFactory - -Creating shared instance of singleton bean 'jmsFactory' [INFO] DefaultListableBeanFactory - -Creating shared instance of singleton bean 'jbi' [INFO] ActiveMQConnection - -channel status changed: Channel: TcpTransportChannel: Socket[addr=localhost/127.0.0.1,port=61616,localport=1096] has connected [INFO] BrokerContainerImpl - -Adding new client: ID:el2tong-1095-1129854563062-5:0 on transport: TcpTransportChannel: Socket[addr=/127.0.0.1,port=1096,localport=61616] [INFO] JBIContainer - -ServiceMix JBI Container (http://servicemix.org/) name: defaultJBI running version: ServiceMix. [INFO] JBIContainer - -Activating component for: [container=defaultJBI,name=myComponent,id=myComponent] with service: {uri:fivesight.com/examples/AsyncProcessJBI}JmsService component: org.servicemix.components.jms.JmsServiceComponent@1b82d69 [INFO] ComponentContextImpl - -Component: myComponent activated endpoint: {uri:fivesight.com/examples/AsyncProcessJBI}JmsService : myComponent |
...
For a brief explanation of the XML tags in the servicemix.xml
file, please see: