Monday, June 7, 2010
Change the password for the oc4jadmin user using jazn.jar utility
Steps:
1. cd $ORACLE_HOME/j2ee/home
2. export PATH=$ORACLE_HOME/jdk/bin/:$PATH
3. java –jar jazn.jar –setpassword jazn.com oc4jadmin <old_pwd> <new_pwd>
Once password is set it needs to be verfied.
java -jar jazn.jar -checkpasswd jazn.com oc4jadmin -pw <new_pwd>
If password is set as <new_pwd> then you will get message as "Successful verification of user/password pair." else you will get message "Unsuccessful verification of user/password pair.".
HTH,
Shantanu
Friday, June 4, 2010
OPMN - Issues and Resolution
[oracle@SOASERVER~]$ opmnctl startproc process-type=HTTP_Server
opmnctl: starting opmn managed processes...
================================================================================
opmn id=SOASERVER:6200
0 of 1 processes started.
ias-instance id=orasoa.SOASERVER
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--------------------------------------------------------------------------------
ias-component/process-type/process-set:
HTTP_Server/HTTP_Server/HTTP_Server/
Error
--> Process (index=1,uid=1582646508,pid=8990)
failed to start a managed process after the maximum retry limit
Log:
/oracle/orasoa/opmn/logs//HTTP_Server~1.log
Log says:
mod_oc4j: request to OC4J SOASERVER:12510 failed: Connect failed (errno=111)
Solution #1:
1. Login as superuser
2. cd $ORACLE_HOME/Apache/Apache/bin
3. chmod 6750 .apachectl
4. logout and login as ORACLE user
5. opmnctl startproc process-type=HTTP_Server
Issue #2:
HTTP Server failed to start. When checked in the log file default_group~
WARNING: OC4J will not send ONS ProcReadyPort messages to opmn for service: OC4JServiceInfo id: null protocol: jms hostname: null port: 12601 description: null
null hostname was null
Solution #2:
The SOA Suite was started as SuperUser i.e. root.
1. Shutdown Oracle SOA Suite
2. Login as ‘root’ user
3. chown -R oracle:oinstall /mount_point/app/oracle_sw_owner in my case, I installed SOA Suite on /oracle mountpoint and my ORACLE_HOME=/oracle/orasoa.
[oracle@hostname ~]$ chown oracle:oinstall /oracle
[oracle@hostname ~]$ chmod -R 775 /oracle
4. Goto $ORACLE_HOME/j2ee/
[oracle@hostname ~]$cd $ORACLE_HOME/j2ee/
5. Remove jms.state
[oracle@hostname ~]$rm jms.state
6. Logout of super user and login as oracle user.
7. Restart your server.
Issue #3:
opmn id=SOASERVER:6200
0 of 1 processes started.
ias-instance id=orasoa.SOASERVER
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--------------------------------------------------------------------------------
ias-component/process-type/process-set:
SOA_GROUP/oc4j_soa/SOA_GROUP/
Error
--> Process (index=1,uid=448358410,pid=23622)
time out while waiting for a managed process to start
Log:
/oracle/orasoa/opmn/logs//SOA_GROUP~oc4j_soa~SOA_GROUP~1.log
Nothing can be seen in the log file.
Solution #3:
1. Take backup of your existing opmn.xml file
2. Now increase the start timeout $ ORACLE_HOME/opmn/conf/opmn.xml file
3. Reload opmn services
$ORACLE_HOME/opmn/bin/opmnctl reload
4. Start oc4j_soa.
opmnctl startproc process-type=oc4j_soa
If still your oc4j instance is not coming up that means there is some other issue.
1. Database: Check your database log.
You might see errors there. You need to resolve this error and then try to start oc4j instance. (Try database restart if you are not able to find any error in the database log but you can see that there are connection request from your application server. I know no DBA will like this solution :D ) OC4J container does not come up if it is not able to create the database connection pool.
2. Applications: If there are many applications that this oc4j instance has to initialize then try increasing the timeout parameter further.
Kindly provide your encouraging comments if it helps you.
HTH,
Shantanu
Monday, May 31, 2010
SOA Cluster Environment – Consumer BPEL Processes and ESB Services Clustering – Singleton Adapters
When a consumer service is deployed on cluster environment then consumer service on each node keeps polling for data. This causes formation of instances equal to the number of nodes on which these services are available. To avoid this, a property (“clusterGroupId”) needs to be defined. This clustering is done at process level.
For BPEL Process:
For BPEL consumer service, bpel.xml of the process needs to be modified. Add this property under activationAgents tag.
<activationAgents>
<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="SalesOrderJMSConsumer">
<property name="clusterGroupId">ProcessNameCluster</property>
<property name="portType">Consume_Message_ptt</property>
</activationAgent>
</activationAgents>
For ESB Service:
To add this endpoint property, modify .esbsvc file as shown below.
</invocation>
<endpointProperties>
<property name="clusterGroupId" value="ProcessNameAdapter"/>
</endpointProperties>
</service>
You can also add it from ESB console as well.
Note: Make sure that all the consumer services have different clusterGroupId.
Tuesday, April 13, 2010
JCA Resource Adapter transaction management in BPEL
The JCA Resource Adapter can support transactions on systems with a BPEL client. When designing your BPEL processes, keep the following in mind:
- A good practice is to define a scope within BPEL processes where a sequence of opcodes called with a transaction are executed, and to add a catch block in this scope and call abort if any error occurs.
- The BPEL processes must abort all open transactions when any exception occurs, except for CommException. The JCA Resource Adapter throws CommException when the Portal Context closes or errors out but the transaction cannot be aborted.
- The transaction operations described in the base Web service must not be used in a BPEL section that can trigger process hibernation or parallel processing. Those transaction operations must be in a BPEL section that performs synchronous invoke.
Note | The JCA Resource Adapter does not support nested transactions. |
To set up JCA Resource Adapter transaction management in BPEL, perform the following:
- In the BPEL client, set these BPEL partnerLink properties:
- cacheConnections=false
When set to “false”, it releases connection right after completing the unit of work, and connection is available to OC4J connection pool.
- useJCAConnectionPool=true
If we set this to true then it will ensures single threading through JCA LocalTransactions.
- In the JCA Resource adapter, create a private connection pool for the connection factory.
Example :
1. Connection Pooling Scheme : Dynamic
2. Maximum Connections : 200
3. Minimum Connection : 50
4. Fixed Wait Timeout : 0
5. Expired Connection Cleanup: Periodically
6. Inactive Connection Timeout: 300
Maximum Connection= dm_n_fe * dm_max_per_fe
dm_n_fe and dm_max_per_fe entries in dm_oracle pin.conf. Increase the values if required.
You encounter the following exception when the above steps are not performed properly or when one of the BPEL processes fails to close a transaction.
§ java.lang.IllegalStateException: New ManagedConnection cannot be created for a thread which is already in BRM transaction
§ Adapter Framework unable to create outbound JCA connection.
Friday, April 9, 2010
SOA Cluster Installation - Issues & Resolutions
Issue#1:
XML Parsing Error: no element found on esb console
Resolution#1:
The cause of the error was cluster_name collision for esb-dt and esb-rt.
vi $ORACLE_HOME/j2ee/oc4j_soa/applications/esb-rt/META-INF/orion-application.xml
vi $ORACLE_HOME/j2ee/oc4j_soa/application-deployments/esb-rt/orion-application.xml
Change “cluster_name” value to “ESBCluster” from "esb". Update your esb systems with this name on esb console i.e. update Cluster Name of each system with "ESBCluster".
Issue#2:
You see message “You have more than one instance of the Application Server Control application running in this cluster. This is not a recommended configuration and could lead to unexpected problems. Please stop the additional instances of Application Server Control or disable routing to these instances.” on the enterprise manager console.
Resolution#2:
Execute below command on all the non primary nodes.
opmnctl stopproc process-type=admin application=ascontrol
Issue#3:
When replacing the existing OPatch with a new patch then on running command opatch –version below error might come:
-bash: $ORACLE_HOME/OPatch/opatch: Permission denied
Resolution#3:
cd $ORACLE_HOME
chmod -R 755 OPatch
Issue#4:
java.net.SocketTimeoutException: Read timed out or java.net.SocketTimeoutException: connection reset when trying to initiate a bpel process on the bpel console.
Resolution#4:
Modify httpd.conf available at $ORACLE_HOME/Apache/Apache/conf on all the nodes.
Set KeepAlive as ‘Off’. Restart HTTP Server using command
opmnctl startproc process-type=HTTP_Server
I also recommend to cross check your load balancer setting. Sometime incorrect setting also causes this issue.
Issue#5:
An unhandled exception has been thrown in the ESB system. The exception reported is: "java.lang.Exception: Failed to create "ejb/collaxa/system/DeliveryBean" bean; exception reported is: "javax.naming.NameNotFoundException: ejb/collaxa/system/DeliveryBean not found
Resolution#5:
Modified ant-orabpel.properties file available @ $ORACLE_HOME/bpel/utilities.
Cluster=true
oc4jinstancename = SOA_GROUP
local.oc4jinstancename = oc4j_soa
Please make sure there is no space after true,SOA_GROUP and oc4j_soa.
Issue#6:
During installation of Oracle Service Registry, the installation fails with “null
Installation failed. If accessible, see "/oracle/registry_10_1_3/log/install.log".
To correct installation parameters and resume installation click Recover.” error.
Resolution#6:
One cause of this error is incorrect java version.
[oracle@HOSTNAME ~]$ java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-44)
update the JAVA_HOME to point to the soa suite java
export JAVA_HOME=$ORACLE_HOME/jdk
Issue#7:
During installation of DB, swap space requirements availability check the expected result ie swap memory is less than the actual result.
Resolution#7:
You can resolve this issue by creating a swap file. If installer is expecting 7832 the swap should have 7832*1024 = 8019968
1. Login as root
2. dd if=/dev/zero of=/swapfile bs=1024 count=8019968
8019968+0 records in
8019968+0 records out
8212447232 bytes (8.2 GB) copied, 82.5765 seconds, 99.5 MB/s
3. mkswap /swapfile
Setting up swapspace version 1, size = 8212443 kB
4. swapon /swapfile
5. Edit /etc/fstab
/swapfile swap swap defaults 0 0
6. Verify by cat /proc/swaps
7. Exit from root
Monday, April 5, 2010
Cannot find service on current cluster
The various cause of this issue are:
1. Cluster setup issue -
a. Slide Repository not configured to use the Database as the Repository
b. JNDIs for the Topic and Topic Connection Factory not created for esb-dt and esb-rt.
If any or both of the above configuration is missing then you have to do it on all the nodes and for both esb-dt and esb-rt(oc4j_soa) containers.
2. On ESB Console, cluster name is not set to esb-rt cluster_name. Verify on all nodes that the cluster_name @ $ORACLE_HOME/j2ee/
3. The ESB Service is missing on the other nodes.
Run Opmnctl status -app|grep esb-rt
if for esb-rt, routable=false then update ohs-routing="false" to "true" at $ORACLE_HOME/j2ee/OC4J_SOA/config/default-web-site.xml where web-app application="esb-rt" name="provider-war" load-on-startup="true".
Hope this help ...
Saturday, January 23, 2010
Oracle BPEL & ESB - Error & Resolution - 2
Resolution: Same as that of Error 6 & 7.
Error 9: xref:lookupxref not found when compiling bpel process. This happens when we use xref:lookupxref in assign activity instead of transformation activity.
Resolution: Search for http://www.oracle.com/XSL/Transform/java/oracle.apps.aia.core.xpath.AIAFunctions in .bpel file and replace the namespace with xref. Eg if its
xmlns:ns14= http://www.oracle.com/XSL/Transform/java/oracle.apps.aia.core.xpath.AIAFunctions
then replace ns14 with xref ie
xmlns:xref= http://www.oracle.com/XSL/Transform/java/oracle.apps.aia.core.xpath.AIAFunctions
Error 10: "No WebService Provider is registered at this URL" when trying to open any service url on ESB Console.
Resolution: Workaround is to modify $Oracle_HOme/j2ee/oc4j_soa/config/default-web-site.xml file.
Remove 'ohs-routing=true' if its already present for esb-dt and esb-rt. If its absent then add it for esb-dt and esb-rt.
Restart the server.
Another workaround is to click on 'DISABLE' and then 'ENABLE' if the error is coming for few services only.
As a fix you have to apply MLR#18 on 10.1.3.3.
Error 11: XPath expression failed to execute.
Error while processing xpath expression, the expression is ""ora:getFaultAsString()"", the reason is Variant not found.
The variant ""__fault"" has not been declared in the current scope. All variants must be declared in the scope before being accessed.
Please check that the variant ""__fault"" is properly declared; otherwise there may be a misspelling in the name of the variant.
.
Please verify the xpath query.
Resolution: The cause of this error is assigning value to outofscope variable. When a fault is created such as remote fault, a variable is generated for it say SystemFaultMsg. Now if you try assign ora:getFaultAsString() to this variable then it will throw the above fault. So create a new global fault variable and then assign ora:getFaultAsString() to it.
Error 12: failed due to: null; nested exception is:
javax.resource.ResourceException when invoking an OPCODE of BRM.
Resolution:1. add
in the partnerlink binding in bpel.xml of the partnerlink invoking which this error is coming.
2. You can try clearing the wsdl cache also from your bpel console.
Error 13:Oracle BPEL Domain Initialization Failed
Reported Error:
Incorrect db schema version.
The database schema version '2.0.51' from the database does not match the
version '10.1.3.3.17' expected by the server.
The database schema currently in place has probably been configured for a
previous release please re-install the database schema and try to start the server again.
Resolution: This error may be caused because of MLR rollback.
1. Source DB env
2. Login to your DB as orabpel
sqlplus
Enter user-name: orabpel
Enter password:
3. SQL> select guid from version;
(Note down this value. It must be equal to 2.0.51 as shown in the error message)
4. SQL> UPDATE VERSION SET guid = '10.1.3.3.17';
5. SQL>exit
6. Restart your server
Tuesday, January 5, 2010
Oracle BPEL & ESB - Error & Resolution
Error 1: XML-22036: (Error) Cannot convert result tree fragment to NodeSet
Detail: This error comes in the transformation file. This is due to the version mismatch of stylesheet.
Resolution: Change the version of stylesheet from '1.0' to '2.0' . Now redeploy your process.
Error 2: Invalid xml document.
According to the xml schemas, the xml document is invalid.
Please make sure that the xml document is valid against your schemas.
Resolution: One cause of this error could be when you set “validateXML” property “true”.
Please make it false and then retry.
Goto BPELConsole-> ManageBPELDomain ->Set validateXML =false.
Error 3: oracle.xml.parser.v2.XMLParseException: PI with the name 'xml' can occur only in the beginning of the document.
Resolution: Check the transformation file and ensure that "<?xml version="1.0" encoding="UTF-8" ?>" is the first line in all the XSL file.
Error 4: failed due to: null; nested exception is: javax.resource.ResourceException
Resolution: Add <property name="cacheWSIFPort">false</property>
in the partnerlink binding in bpel.xml of the partnerlink invoking which this error is coming.
Another resolution is to try clearing the wsdl cache at BPELConsole->BPEL Process-> Clear the wsdl cache.
Error 5:The Method 'commit' Cant Be Called When a Global Transaction is Active Displayed in log.xml
Resolution: Amend ESBDataSource to local in the $ORACLE_HOME/j2ee/
i.e. <managed-data-source name="ESBDataSource" connection-pool-name="ESBPool"
jndi-name="jdbc/esb" tx-level="local" /><managed-data-source name="ESBDataSource" level="local">
Error 6:ESB Services disappeared
Check for "connection pool is full" in $OracleHome/opmn/logs/*soa*
Error 7:Unable to delete or register ESB on ESB console
Resolution: Login to EM console
Goto Cluster Topology -> Application Server ->oc4j_soa -> Application:default -> ResourceAdapter:OracleASjms ->Edit Connection Factory: OracleASjms/MyXATCF -> ConnectionPool:private
Increase Maximum Connections to 100.