We will explore Java Concurrent Program in Oracle Apps R12.We can do a lot of things with Java and lots of coding and sample scenarios are available on Google.If we want to use those kinds of java programming, we can use OAF or we can use the Java Concurrent Program in Oracle Apps.
Project Name: JavaConcurrentProgramDirectory Name: LocalDirectoryDefault Package: Generally we store Java files into $JAVA_TOP path. Since its custom we have create our own custom path in $JAVA_TOP based on the application shot name.Here we are using cus.oracle.apps.cus.javaconc (We will copy our Java files in this path in Oracle Server)
In Oracle EBS, majority of concurrent programs that we defined are pl/sql programs or reports. However, in order to meet some complex requirements, we need other types of concurrent programs such as java concurrent program or shell concurrent program.
P.S: In this tutorial, I will be using Netbeans because of the JAX-WS support. As far as i know, JAX-WS Web Service clients cannot be generated by JDeveloper which comes with E-Business Suite patches. Using Netbeans for implementing java concurrent program requires just one more additional step comparing to JDeveloper.
29. Upload your concurrent program java file to the application server $JAVA_TOP. Create a new custom folder in $JAVA_TOP. Upload your web service client jar to custom folder. Use the following command in order to compile your concurrent program java file. Please pay attention to -cp option in order to prevent NoClassDef error. -d option will create your .class file with the package that you specify in java file.
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at oracle.apps.fnd.cp.request.Run.main(Run.java:152)Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
I am doing the following now:1. If i extract jars getting .class files libraries, so i made all .class files libraries together into xxlibs.zip .2. I copied xxlibs.zip folder to the location which is same as appsberg.zip location.3. Now the classpath option as follows:-classpath java_top path:appsberg.zip path:xxlibs.zip pathIf i am doing above 3 steps my java concurrent program working fine, where as if i keep jars in xxlibs.zip instead of .class file library, java concurrent program was not finding classes which i imported from jars.
I have tried the same steps, but it is failing while running the java concurrent program and getting error likejava.lang.NoClassDefFoundError: oracle/adf/mds/metamodel/MMFactoryat oracle.apps.fnd.cp.request.Run.main(Run.java:126)..
When we compile the java program it is completing successfully and got the expected results but concurrent request failing with completed error with above issue, This is happening only after the upgrade. Seeded Java programs are working fine with out any issues.
The Java platform is designed from the ground up to support concurrent programming, with basic concurrency support in the Java programming language and the Java class libraries. Since version 5.0, the Java platform has also included high-level concurrency APIs. This lesson introduces the platform's basic concurrency support and summarizes some of the high-level APIs in the java.util.concurrent packages.
Concurrent processing provides an interface ' Javaconcurrentprogram ' with abstract Method Runprogram () which passes the con Current processing context ' cpcontext '. The concurrent program developer would implement all of their business logic for a concurrent program in Runprogram (). The main () method, implemented by AOL, would call Runprogram () after performing all of the required initialization for the Concurrent program, including establishing a database connection, initializing the required contexts, and setting up the L OG and output files. Cpcontext would have the request specific log and output file input methods. The class name with the main method is registered as the Java executable file name in the Register executable form or By using the PL/SQL API.Developer has-register the full package, path for the class in register executable form. For example, if WIP product creates a class in $WIP _top/java/shopfloor/server/backgroundprogram.class, then this class GoE s to apps.zip file with the package location ' Oracle/apps/wip/shopfloor/server/backgroundprogram.class '. Developer would register ' Backgroundprogram ' as the executable file name and ' Oracle.apps.wip.shopfloor.server ' as the pack Age path in the Register executable form. Developer have to follow the Java notation to register the package path location, '. ' to denote the directory instead of '/ ' In UNIX.Java Concurrent Program parameters must registers with tokens names in the parameter screens of the register Concurrent progr AMS form. Developer can get the value of the parameter for a given token name in the Java concurrent program. These token names'll be used in passing the parameter values as parameter string to the concurrent program from the Comm Testing the Java concurrent program.Developer should set the status and completion text for the Java program by using the Setcompletion () method provided by A Ol. The Runprogram () method should call Setcompletion () method for the program completion status to the Concurrent Manag Er. The program may set it completion status to Normal, Warning or Error. Completion text is optional.
You need to create the directory under $FND _top "manually First,e.g. $FND _top/java/cp/requestThen copy the Template.java from the coding block below.Copy the template Java Concurrent program to $FND _top/java/cp/request/template.java and start coding according to your REQ Uirement. Change file name and class name to your required name as Java Concurrent program name.
PO Output for Communication is a Java concurrent program which is triggered through a PO Approval workflow. This java program generates XML data whose XSD(XML Schema Definition) is defined as XML Publisher Data definition and output layout is defined in XSL-FO format as a template in XML Publisher.
I am facing another issue could You please suggest if::oracle.apps.fnd.cp.opp.PostProcessorException: oracle.apps.fnd.cp.opp.PostProcessorException: oracle.apps.xdo.XDOException: No corresponding LOB data found :SELECT L.FILE_DATA
Hi,Thanks for such a nice post.I have one issue in my BPEL process-I have created separate apps adapter for fnd_global.apps_initialize and for fnd_request.submit_request .Here my api having concurrent program WCIMLP.I found that my API fnd_request.submit_request does not calling CP WICMLP internally though my BPEL process is completed.However when I create apps adapter for CP WICMLP it get executed.What might be the cause that APPS adapter having CP getting executed and APPS adapter having API does not?
What kind of data source you are using for APPS adapter?You should use a data source enabled for global transaction(XA) in your apps adapter. Concurrent program will have its own transaction control and the process can complete. When you are using an api you can better use a db adpater to call the procedure using a local transaction. 2b1af7f3a8