Pre-requisites:
- You have a running clustered Oracle 10g SOA Suite. If not, follow my article on Oracle SOA Suite 10g Cluster installation.
The AIA cluster installation is executed in 5 steps:
- Step 1: Ensure that the SOA cluster is setup correctly
- Step 2: AIA Software only install
- Step 3: AIA Deployment and configuration preparation
- Step 4: AIA Deployment and configuration execution
- Step 5: AIA post configuration
Step 1: Ensure that the SOA cluster is setup correctly
The following are basic verification steps to ensure that your SOA cluster is setup correctly.
- Navigating to the BPEL, ESB consoles successfully using the external Load Balancer URL as well as each of the internal virtual host.
- Ensuring that the EM console shows all participating nodes in active state. There must be only one Active Design time.
- Ensure that ESB Design-time is completely up and running by accessing the following URL:
- http://node1.vijfhuizen.com:7777/esb/dtStatus.jsp
- http://node2.vijfhuizen.com:7777/esb/dtStatus.jsp
- These pages should return a true. Test this via both nodes.
- Deploying a sample BPEL process and a sample ESB process. And verify via the consoles on each node that the deployments exists.
- Change the state of the BPEL process on one node, e.x. Set state to retired. Verify on the other console that the state has been changed.
- Undeploy the BPEL process from this node. Verify on the other console that the BPEL process does not exists anymore.
Install on both nodes the AIA Software only! Just run the AIA installer ant install the software only! It is recommened to install the software in a different directory as the Oracle SOA 10g software, for example:
- ORACLE_HOME: /app/oracle/products/10g/soa
- AIA_HOME: /app/oracle/products/10g/aia
Add for each node the following java option, make sure all servers are down (opmnctl shutdown). Add the java option in the 'oc4j_soa' container.
vi $ORACLE_HOME/opmn/conf/opmn.xml ... -Daia.home=/fs01/app/oracle/esbacc01/aia ...
Make sure indexing is enabled on th both Apache HTTP servers, apply this setting twice.
vi $ORACLE_HOME/Apache/Apache/conf/httpd.conf ... <Directory /> Options FollowSymLinks MultiViews Indexes ... <Directory "/app/app/oracle/product/10g//soa/Apache/Apache/htdocs"> Options FollowSymLinks MultiViews Indexes ...
Check the AIA configuration. With the AIA software only install, not all settings are correct:
vi $AIA_HOME/bin/aiaenv.sh ... AIA_HOME=aia.home ORACLE_HOME=oracle.home AIA_INSTANCE=aiaapp.deploy.home PLATFORM=platforminto
AIA_HOME=/app/oracle/product/oracle/10g/aia ORACLE_HOME=/app/oracle/product/oracle/10g/soa JAVA_HOME=$ORACLE_HOME/jdk AIA_INSTANCE=/app/oracle/product/oracle/10g/soa/j2ee/oc4j_soa/applications PLATFORM=ias_10g
Execute a chmod 775 on the ANT_HOME/bin/* oon beide nodes, to make the files executable.
chmod 755 $AIA_HOME/bin/*
Execute the following script on both nodes to enable the new settings.
source aiaenv.sh
Add heartbeat parameters to teh ESB config directory at the end of the file on both nodes:
vi $ORACLE_HOME/integration/esb/config/esb_config.ini ... PingInterval=30 PingCount=30
Restart both nodes, first node1 then node2.
$ORACLE_HOME/opmn/bin/opmnctl shutdown $ORACLE_HOME/opmn/bin/opmnctl startup
Now we need to prepare the deployment properties of AIA. This is done on both nodes.
cp $AIA_HOME/config/deploy.properties $AIA_HOME/config/deploy.properties.org cp $AIA_HOME/Infrastructure/install/templates/deploy.properties.tmpl $AIA_HOME/config/deploy.properties
Open this deploy.properties file, on each node, to check parameters. Make sure the hostnames are correct for each node (j2ee.hostname, iasinstancename):
vi $AIA_HOME/config/deploy.properties FPVersion=2.5.0.0.0 aia.home=/fs01/app/oracle/esbacc01/aia oracle.home=/fs01/app/oracle/esbacc01/soa http.hostname=node1.vijfhuizen.com j2ee.hostname=node1.vijfhuizen.com http.port=80 admin.user=oc4jadmin iasinstancename=AS.vijfhuizen.com oc4jinstancename=oc4j_soa opmn.port=6003 rmi.port=12401 db.hostname=node1.vijfhuizen.com db.port=1521 dbuser=sys SID=esbacr011 #admin.password.encrypted= admin.password=welcome1 #dbpwd.encrypted= dbpwd=esbacr01
Check on both nodes the paramterea of BPEL. Note, that we set the option cluster to false! And the hostnames are different:
vi $ORACLE_HOME/bpel/utilities/ant-orabpel.properties ... platform = ias_10g hostname = node1.vijfhuizen.nl http.hostname = ${hostname} http.port = 80 cluster = false oc4jinstancename = oc4j_soa j2ee.hostname = node1.vijfhuizen.nl asinstancename =
Before we can start with the the AIA configuration, we need to make a jms error topic. Otherwise the ant script for creating the FPErrorHandlingInstall will fail.
- Login to EM
- Click on soa_group link
- Click on Administration
- Click on JMS Destinations
- Click on Create New
- Destination Type: Topic
- Desination Name: ESB_ERROR
- In memory: checked
- JNDI Location: jms/topic/ESB_ERROR
- Click on OK
Step 4: AIA Deployment and configuration execution
Now we are able to start in configuration of AIA into Oracle SOA Suite 10g. The approach is as follows. FIrst we do some manual install scripts on node #2 (while node #1 is down!). Then we do a full install on node #1, while node#2 is down. After this we can bring up #2.
Stop node #1
$ORACLE_HOME/opmn/bin/opmnctl shutdown
Check if node #2 is up and running (oc4j_soa, HTTP, esbdt)
$ORACLE_HOME/opmn/bin/opmnctl status
Start the first scripts:
cd $AIA_HOME/Infrastructure/install/scripts/ ant --noconfig -buildfile FPCommonConfig.xml replaceFPInstallProperties Buildfile: FPCommonConfig.xml ...log information... BUILD SUCCESSFUL ant --noconfig -buildfile FPConfiguration.xml CommonConfigurations Buildfile: FPConfiguration.xml ...log information... BUILD SUCCESSFULThe first step is done of AIA. Just for checking, you should be able to view the AIA compontens:
http://loadbalancer.vijfhuizen.com:7777/AIAComponents/
The out-of-the-box URI is incorrect when is is executing a deployment. Change the URI as well the password!
vi $AIA_HOME/Infrastructure/install/scripts/FPInstall.properties ... #deployer.uri=deployer:oc4j:opmn://node1.vijfhuizen.nl:6003/oc4j_soa deployer.uri=deployer:cluster:opmn://node1.vijfhuizen.nl:6003/soa_group oc4j.admin.user = oc4jadmin oc4j.admin.password = welcome1 ...
Execute the next AIA scripts.
ant --noconfig -buildfile FPCommonConfig.xml CreateCommonDatasources Buildfile: FPCommonConfig.xml
CreateCommonDatasources:
...log information... BUILD SUCCESSFUL
ant --noconfig -buildfile FPCAVSInstall.xml createSchedulerDataSource Buildfile: FPCAVSInstall.xml
createSchedulerDataSource:
...log information...
BUILD SUCCESSFUL ant --noconfig -buildfile FPErrorHandlingInstall.xml DeployESBErrorListenerMDB Buildfile: FPErrorHandlingInstall.xml DeployESBErrorListenerMDB: ...log information... BUILD SUCCESSFUL
ant --noconfig -buildfile FPCAVSInstall.xml DeployAIAUI Buildfile: FPCAVSInstall.xml ...log information... BUILD SUCCESSFUL
Check that the AIA data-sources are created in the oc4j_soa container of node #2.
vi $ORACLE_HOME/j2ee/oc4j_soa/config/data-sources.xml ... <managed-data-source connection-pool-name="JMSConnectionPool" jndi-name="jdbc/AIA_JMS_DS" name="AIA_JMS_DS" tx-level="local"/> <managed-data-source connection-pool-name="AIAXAConnectionPool" jndi-name="jdbc/xref" name="XREFDataSource"/> <managed-data-source connection-pool-name="AIAConnectionPool" jndi-name="scheduler/OracleManagedDS" name="SchedulerOracleManagedDS"/> <connection-pool name="Example Connection Pool"> ...
Shutdown node #2!
$ORACLE_HOME/opmn/bin/opmnctl shutdown
Startup node #1!
$ORACLE_HOME/opmn/bin/opmnctl startall
Now we can execute a full install of AIA on the first node. This step can take a while. Verify that the deployment properties is correct in $AIA_HOME/config. A follow the log file that is created. It it fails you can re-run this step.
Note: I had an issue on a project when we used a Oracle RAC database. DUe to sime unknown reasons, we had to restart the database, because the script could not make user. It was 'hanging'. It tries to create two user schema's:
create user aia identified by aia;
grant connect,resource to aia;
grant CREATE VIEW to aia;
grant aq_administrator_role to aia;
grant execute on dbms_aqadm to aia;
grant execute on dbms_aq to aia;
grant execute on dbms_aqin to aia;
grant execute on dbms_aqjms to aia;
create user jmsuser identified by jmsuser;
GRANT connect,resource,AQ_ADMINISTRATOR_ROLE TO jmsuser IDENTIFIED BY jmsuser;
GRANT execute ON sys.dbms_aqadm TO jmsuser;
GRANT execute ON sys.dbms_aq TO jmsuser;
GRANT execute ON sys.dbms_aqin TO jmsuser;
GRANT execute ON sys.dbms_aqjms TO jmsuser;
cd $AIA_HOME/Infrastructure/install/scripts ant --noconfig -buildfile FPInstall.xml Buildfile: FPInstall.xml ...log information... BUILD SUCCESSFUL
Check that the AIA data-sources are created in the oc4j_soa container of node #1.
vi $ORACLE_HOME/j2ee/oc4j_soa/config/data-sources.xml ... <managed-data-source connection-pool-name="JMSConnectionPool" jndi-name="jdbc/AIA_JMS_DS" name="AIA_JMS_DS" tx-level="local"/> <managed-data-source connection-pool-name="AIAXAConnectionPool" jndi-name="jdbc/xref" name="XREFDataSource"/> <managed-data-source connection-pool-name="AIAConnectionPool" jndi-name="scheduler/OracleManagedDS" name="SchedulerOracleManagedDS"/> <connection-pool name="Example Connection Pool"> ...
Startup node #2.
$ORACLE_HOME/opmn/bin/opmnctl startall
Step 5: AIA post configuration
Now we have almost finished the AIA cluster setup, we need to make a few post configuration steps.
Go to node #2, and install the taskform application.
cd $AIA_HOME/Infrastructure/ErrorHandling/AIAErrorTaskAdministrationProcess ant --noconfig deployTaskForm Buildfile: build.xml deployTaskForm: ... log info... BUILD SUCCESSFULL
On node #1 and #2, add durable subscriber for the JMS topic
cd $AIA_HOME/Infrastructure/ErrorHandling/AIAReadJMSNotificationProcess/bpel vi consumeFaultMsg.wsdl ... <jca:operation ActivationSpec="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec" DestinationName="java:comp/resource/AIA_ERROR_JMS/Topics/AIA.AIA_ERROR_TOPIC" DurableSubscriber="AIAReadJMSNotificationAgent" UseMessageListener="false" MessageSelector="JMSCorrelationID LIKE '%AIA_EH_DEFAULT%'" PayloadType="TextMessage" OpaqueSchema="false"> </jca:operation>
Add cluster-id to the Error notification agent. This makes that only one JMS service will dequeue a message, and not both nodes.
cd $AIA_HOME/Infrastructure/ErrorHandling/AIAReadJMSNotificationProcess/bpel vi bpel.xml ... <activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="consumeFaultMsg"> <property name="portType">Consume_Message_ptt</property> <property name="clusterGroupId">AIAClusterERRORJMS</property> </activationAgent> ...
Verify that the ESB systems points to the correct cluster-id and load balancer. Check the flowwing ESB systems
- DefaultSystem
- AIASystem
- BPELSystem
Each system should have the following values:
- Cluster Name: esb
- Virtual Host: loadbalancer.vijfhuizen.com
- Port: 80
- Topic Location: ESBTopics/Topics/ESB_JAVA_DEFERRED
- Connection Factory Location: OracleOJMS/XATCF
I would thank Michel Schildmeijer for giving feedback and recommendations for this article.
Done
QED