Tuesday, August 4, 2009

java.sql.SQLException: ORA-20005: Task is modified ORA-06512: at "ORABPEL.WFTASKPKG", line 92

I was frequently getting the following error while running my sample BPEL process which contains two human tasks,
java.sql.SQLException: ORA-20005: Task is modified ORA-06512: at "ORABPEL.WFTASKPKG", line 92



My BPEL process looks like the one as shown. It consists of two human tasks Approvals 1 & Approvals 2.


Approval 1 Human Task looks like the one as shown. There are two approvers dynamically picked up at Runtime from the payload






Approval 2 Human Task looks like the one as shown above. It has one approver "Approver 3".
The task history of Approval1 human task was included.
If i provide an input similar to one as shown, i was getting an error.



java.sql.SQLException: ORA-20005: Task is modified
ORA-06512: at "ORABPEL.WFTASKPKG", line 92
ORA-20005:
ORA-06512: at line 1

The reason why i got an error is because the process flow expects a valid Approver 3 username but it was not able to obtain it. The moment i provided a valid username to the Approver3, the error vanished.

Monday, August 3, 2009

How to configure email settings in SOA Suite 10.1.3.1?

Navigate yourself to $ORACLE_HOME/bpel/system/config directory. Note the file ns_emails.xml.
The default contents would be like the one as shown below. Change the GeneralSettings & OutgoingServerSettings to correct values. Thats it!

Wednesday, May 27, 2009

A Note on proxy jar

We all know that after you have deployed a web service archive (typically webservices.war) to OC4J, the WSDL of the web service and the client side stubs can be generated on demand. 
To access the WSDL of the web service you have deployed, just point your browser to 
http://host:port//?wsdl. 
To access the client side proxy stubs, point your browser to 
http://host:port//?proxy_jar (proxy_source for source code). 
value is the element value you specified in the META-INF/application.xml of your web service archive
value is the element value you specified in the WEB-INF/web.xml of your web module in the web service archive. 

There is proxy jar file which contains a Java class to serve as a proxy of the web service implementation reside in the server, it must be included in the CLASSPATH of your client application. The OC4J web services proxy jar file handles the construction of the soap request, marshal and unmarshal the parameters,etc . For each method exposed on the web service, there is a correspondent method in this proxy class, all you need to do is creating a client proxy and invoke the methods as follows: 
MyWebServiceProxy proxy = new MyWebServiceProxy(); 
proxy.myMethod(); 

Sunday, May 17, 2009

Managing Log Files in Collaboration Suite

How to handle the log files to free disk space?
Make sure you shut down both the infra-tier & mid-tier instances before proceeding ahead.
I. Infrastructure Tier
a) Clear the Oracle Internet Directory Logs from the following folders
$ORACLE_HOME/ldap/log
$ORACLE_HOME/ldap/odi/log

b) Clear Apache Logs from 
$ORACLE_HOME/Apache/Apache/logs

c) Clear OC4J_SECURITY logs from
$ORACLE_HOME/j2ee/OC4J_SECURITY/application-deployments/APPLICATIONS_FOLDER/OC4J_SECURITY_default_island_1/application.log 

II. Mid-Tier Instance

a) The Apache logs are at the similar location as in Infra Tier
b) The Webcache logs are generated under:
$ORACLE_HOME>/webcache/logs
c) The Mail application log files are generated under:
$ORACLE_HOME/oes/log/um_system/

You can delete all the folders under:
  • $ORACLE_HOME/oes/log/um_system/admin/
  • $ORACLE_HOME/oes/log/um_system/backup/
  • .....
  • $ORACLE_HOME/oes/log/um_system/smtp_in/
You must not delete the folders: admin, backup, ..., smtp_in...etc. Only the subfolders of these folders.

d) The Web Access Client (WAC) logs are generated under:
$ORACLE_HOME/ocsclient/log/

e) The OC4J logs are generated under:
$ORACLE_HOME/j2ee/OC4J_Container/application-deployments/APPLICATIONS_FOLDER/OC4J_Container_default_island/application.log

f) The Calendar log files are generated under:
  • $ORACLE_HOME/ocal/log for Calendar server
  • $ORACLE_HOME/ocas/logs for Calendar application

How to check if Oracle Database instance is up?

I. Log into infrastructure instance  & login as sysdba;

bash-3.00$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> select status from v$instance;

STATUS
------------------------------------
OPEN

II. Log into infrastructure instance & issue the following command

bash-3.00$ ps -ef | grep pmon
ocsinfra 11021     1   0 09:15:15 ?           0:09 ora_pmon_orcl
ocsinfra 17960 17592   0 10:47:15 pts/2       0:00 grep pmon

If DB instance is running, then the above command returns the pmon process running 

Saturday, March 14, 2009

How to configure rotating log files in Oracle Application Server?

Most of the log files of an out of the box installation of Oracle Application Server are configured to be rotated i.e when a log file reaches a particular size, it is copied and a new log files gets created. But one log file called standard output / standard err(print output to console) ,is not configured to be rotated by default. The log file is available under $ORACLE_HOME/opmn/logs.

How to make this log file rotatable?
In java command line options of the OC4J, provide the following 
-Dstdstream.filesize=20 

The above configuration, rotates the respective log file every 20 MB. 

Wednesday, March 4, 2009

What is 64-bit computing and what are its benefits?

A 64-bit CPU system is the one, which has a 64-bit microprocessor & can directly address physical memory with a 64-bit address.

The key benefits of 64-bit computing are that it can perform high-precision computations faster than 32-bit systems, and it can directly address huge amount of physical memory.

64-bit microprocessors process 64-bit data in one clock cycle. All the registers associated with the microprocessors are 64-bit. This enables High- precision computations and 64-bit arithmetic to be performed in fewer clock-cycles as compared to 32-bit microprocessors. In certain cases like 64-bit multiplication, it is twice as fast.

32-bit microprocessors can directly address a maximum of 232 ~= 4 GB of memory, while 64-bit microprocessors have pushed this limit further and can directly address up to a maximum of 264 bytes = ~16 Exabytes = ~17.2 billion GB of physical memory. Practically speaking, this means that applications running on a 64-bit microprocessors have unlimited memory available to them. However, most of the 64-bit systems and operating systems available today pose a limit on the amount of RAM that they can recognize.

Sun first introduced a 64-bit version of Java for their Solaris operating system on SPARC processors with Java Development Kit (JDK) 1.4. The JDK 1.5 and JDK 1.6 releases introduced support for the x86-64 processors made by Intel, these processors are widely used by Windows, Linux, and Mac OS× operating systems today. The main implication of 64-bit in Java relates to the heap space used by Java applications and the algorithm used for garbage collection of the objects created on the heap.

When a Java application executes and creates objects, the objects are stored in a place called heap. The amount of heap space an application can use depends on the operating system, the amount of RAM available in the system, and the amount of memory that the hardware can address. A 32-bit system, as discussed earlier, can support a maximum of 4GB memory. But not all 4GB RAM space is available for use by a single Java application. For instance, an OS uses some of the RAM space. Assuming that the hardware has 4 GB RAM, the maximum heap space a typical application can use would be 1.2 GB to 2 GB. However, this limit is not true for Java applications on a 64-bit CPU system. The value that you can set for the maximum java heap space on a 64-bit CPU system is only limited by the limitations of hardware and the OS (as discussed in the previous section).

You can increase or decrease heap space for Java applications by changing the Xmx value in your Java command line arguments.