Got it working.

Procedure, as follows :-

In order to have Apache ActiveMQ as a valid JMS target, the following steps
need to be done. 


I have taken the Resource Adapter archive from an ActiveMQ installation
lib\optional\activemq-rar-5.2.0.rar 

This is the activeMQ resource adapter archive - for client as well as
embedded server. Personally, I don't think we need to include all this if we
just want a client, only if we want an embedded server. Still, it worked,
time to fine tune later.

I Created a directory on the Oracle_SOA VM called e:\activemq-rar-5.2.0\
which contains the extracted content of the activemq-rar-5.2.0.rar archive
(and contrary to file suffix, it is a jar archive, you don't need winrar to
unpack it). 

Placed the following XML segment 

<shared-library name="apache.jmsprovider.mq" version="5.2.0">
   <code-source path="e:\activemq-rar-5.2.0\activation-1.1.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\activeio-core-3.1.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\activemq-core-5.2.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\activemq-ra-5.2.0.jar"/>
   <code-source
path="e:\activemq-rar-5.2.0\backport-util-concurrent-2.1.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\broker-config.xml"/>
   <code-source path="e:\activemq-rar-5.2.0\camel-core-1.5.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\derby-10.1.3.1.jar"/>
   <code-source
path="e:\activemq-rar-5.2.0\geronimo-j2ee-management_1.0_spec-1.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\jaxb-api-2.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\jaxb-impl-2.0.3.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\jsr173_api-1.0.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\log4j-1.2.14.jar"/>
   <code-source path="e:\activemq-rar-5.2.0\xbean-spring-3.4.jar"/>
   <import-shared-library name="apache.commons.logging"/>
</shared-library>

into e:\SOASuite10131\j2ee\home\config\server.xml 

(there where about 7 server.xml files on the machine, this appeared to be
the appropriate one) 

I then edited E:\SOASuite10131\j2ee\home\config\application.xml 

changing 

<orion-application>
   ...
  <imported-shared-libraries>
     <import-shared-library name="adf.oracle.domain"/>
  </imported-shared-libraries>

to 

<orion-application>
   ...
  <imported-shared-libraries>
     <import-shared-library name="adf.oracle.domain"/>
     <import-shared-library name="apache.jmsprovider.mq"/>
  </imported-shared-libraries>

I then added 

<connector-factory location="eis/activemq/Queue" connector-name="Jms
Adapter">
 <config-property name="connectionFactoryLocation"  
value="org.apache.activemq.ActiveMQConnectionFactory"/>
 <config-property name="factoryProperties"
value="BrokerURL=tcp://<xxx.xxx.xxx.xxx>:61616"/>
 <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
 <config-property name="isTopic" value="false"/>
 <config-property name="isTransacted" value="true"/>
 <config-property name="username" value="system"/>
 <config-property name="password" value="manager"/>
 <connection-pooling use="none">
 </connection-pooling>
 <security-config use="none">
 </security-config>
</connector-factory>


as the last entry in
E:\SOASuite10131\j2ee\home\application-deployments\default\JmsAdapter\oc4j-ra.xml.
I obtained the username/passwords from an activeMQ instance
c:\apache-activemq-5.2.0conf\credentials.properties file. Once again, not
sure if needed.

It should be noted, that according to the ActiveMQ Resource Adapter
Documenation, the BrokerURL property is optional, but I have coded it to
point to our running ActiveMQ broker, for the sake of a quiet life (which I
never seem to have). 

Once the above steps had been done, it is possible to create a JMS Partner
link in JDeveloper, entirely using the GUI tools

Procedure as follows :-

Create a Synchronous BPEL application using the JDeveloper
Create a partner link for ActiveMQ of type JMS Adapter

Wizard settings as follows :-
Page 1
* Third Party
Page 2
* Factory Properties - Set the following properties - ALL of these are
optional, really, so long as you set ONE of them or you won't be able to
proceed to the next page. Maybe username/password you will be ok (the
defaults are set in the Application Server, as per the instructions above -
still, I figure it's best to specify everything, thus, making the defaults
superfluous)
NOTE: A bug in the Adapter configuration wizard will not parse the
factoryProperties=BrokerURL=tcp://ip.add.res.ss:port part correctly, on
subsequent passes through the wizard. You will need to re-enter that
property.
* connectionFactoryLocation=org.apache.activemq.ActiveMQConnectionFactory
* factoryProperties=BrokerURL=tcp://<xxx.xxx.xxx.xxx>:61616
* isTopic=false
* isTransacted=true
* username=system       (found in credentials.properties of ActiveMQ
installation - optional)
* password=manager      (found in credentials.properties of ActiveMQ 
installation
- optional)
* acknowledgeMode=AUTO_ACKNOWLEDGE
* JMS Connection Factory = ConnectionFactory
* Transacted = true
* Desintation Type = Queue
* User Name = blank
* Password = blank
* JMS Connection JNDI Name = eis/activemq/Queue (corresponds to install
instructions, above)

Page 3
* Operation Type = Produce Message
* Operation Name = Produce_Message

Page 4
* Destination Name = target ActiveMQ Queue - say Testing.Queue
* Message Body Type = TextMessage
* Delivery Mode = Persistent
* Priority = Default
* TimeToLive = 0

Page 5
* Choose a WSDL that reflects the message type expected - in my test case, I
simply chose the incoming message WSDL

Setup the Invoke step
* Populate the Input and Output variables appropriately, using an assign

Deploy

Test

Check the queue in http://<xxx.xxx.xxx.xxx>:8161/admin/queues.jsp to see if
your message has arrived.


-- 
View this message in context: 
http://www.nabble.com/Oracle-BPEL-%3C-%3E-ActiveMQ---Howto--tp22449017p22572359.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to