Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • Java Standard Edition 5.0
  • Ant - http://ant.apache.orgImage Removed
  • PXE - We support WS-BPEL via the PXE BPEL Engine from FiveSight.

    Warning
    titleWarning

    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.

...

  1. From a command shell, go to the BPEL example directory:
    Code Block
    cd [servicemix_install_dir]\examples\bpel
    
    where servicemix_install_dir is the directory in which ServiceMix was installed.
  2. Then type:
    Code Block
    [servicemix_install_dir]\bin\servicemix servicemix.xml
    
    OR
    
    ..\..\bin\servicemix servicemix.xml
    

  3. 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
    titleHandy 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.

...

  1. The JMSClient, through ActiveMQConnectionFactory, connects to the topic named "demo.org.servicemix.source" and sends a text message containing the message.soap file.
  2. myComponent, being a subscriber of the topic "demo.org.servicemix.source," receives the message.
  3. 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.
  4. PxeBpelEngine sends a response back to myComponent through the ServiceMix bus, the NMR.
  5. myComponent uses the jmsTemplate bean to publish the message.
  6. 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.
  7. JMSClient, being a subscriber of topic "demo.org.servicemix.source," receives the message.
  8. 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: