oracle java并发程序_Oracle EBS新建Java 并发程序(Java Concurrent Program)

Goal

How to create a Java Concurrent Program?

Applied To

Oracle eBusiness Suite (EBS) R11/R12

Solution

Most of us write Concurrent Programs using the following Technologies:

Oracle Reports

PL/SQL Stored Procedure

SQL*PLUS

But there are times when we require Java instead of Oracle native PL/SQL programming language. We require Java Programming especially (but not limited to) in the following cases:

File handling (More efficient using Java instead of PL/SQL )

Secure FTP of files between servers

Networking

Connecting to other non Oracle Databases

First of all let me assure you that writing a Java Concurrent Program is an easy task, just need some basic skills of Java Programming.

Oracle EBS provides many java classes to support Java Concurrent Programming.The most important and common classes are as follows:

JavaConcurrentProgram.class

CpContext.class

LogFile.class

OutFile.class

You can find full list of Java classes related to Java Concurrent Programming under Oracle EBS Application server at$JAVA_TOP/oracle/apps/fnd/cp/request.

Most of the newbies raise the following common questions related to Java Concurrent Program:

What is the starting point

Where should I keep the Java file

How to compile the Java class

I know how to resister a concurrent program in EBS, but in case of Java Concurrent Program what should be the Execution File Path

The starting point is to create your own package where you will keep you custom Java Classes. In order to create your package, you should follow the Oracle Standards. As per the Oracle Standard, you should create the package using the following structure:

oracle.apps.yourcustomappname.packagename.subpackage.....

Let us presume the name of your custom application is

xxcust

and the directory where we will keep your new custom Java class is

request

directory

. And the request

directory

is under

cp

directory

. This means the fully qualified path for our custom Java Class is oracle.apps.xxcust.cp.request.

Now you will be wondering where to create this above mentioned directory/package structure. You have to create this structure in the EBS Application Server under $JAVA_TOP. Since our directory structure starts withoracle followed by apps, both of these directories already exist. So to create our directory structure, follow the below steps:

$cd $JAVA_TOP/oracle/apps

$mkdir -p xxcust/cp/request

$cd xxcust/cp/request

$pwd

....../oracle/apps/xxcust/cp/request

And this is directory where you write your Java Class.

Structure of your Java Class

Oracle EBS provides an interface Class "JavaConcurrentProgram" with abstract method runProgram()which passes the concurrent processing context "CpContext". And you will write you business logic in the runProgram() method. The CpContext will feed log and output file specific information to the runProgram method.The name of the custom class which will implement the JavaConcurrentProgram interface will be used in EBS to register it as a Java concurrent program Executable.

The basic structure of the Java Class (to be used as a concurrent program) is given below:

//**************Template.java****************************//

package oracle.apps.xxcust.cp.request;

import oracle.apps.fnd.cp.request.*;

public class Template implements JavaConcurrentProgram{

public void runProgram(CpContext ctx){

// Write your Business Logic here

//This line will signal successful end of the program to the concurrent manager.

ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL, "Completed");

}

}

//**************End of Template.java********************//

Example

Let us start writing a Java Concurrent program "Test.java" to do the following tasks:

Write text to Output File

Write Test to Log File

Get userName of the concurrent Program run requester and write to Output File

Send success message to the Concurrent Manager

Make sure you are inside " $JAVA_TOP/oracle/apps/xxcust/cp/request" location, and create the following Test.java file.

//*************************Test.java****************************/

package oracle.apps.xxadfd.cp.request;

import oracle.apps.fnd.cp.request.*;

public class Test implements JavaConcurrentProgram{

public void runProgram(CpContext ctx){

// get reference to Out and Log files

OutFile out = ctx.getOutFile();

LogFile log = ctx.getLogFile();

out.writeln("This is my Output file ! ");

log.writeln("This is my Log file",LogFile.STATEMENT);

//get concurrent program Request Details

ReqDetails rDet = ctx.getReqDetails();

String userName = rDet.getUserInfo().getUserName();

// write username to the Out File

out.writeln("User Name = "+userName);

// Success message to the Concurrent Manager

ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL, "Completed");

}

}

//***********************End of Test.java****************************/

Compile the Java Program Test.java

Make sure you are inside "

$JAVA_TOP/oracle/apps/xxcust/cp/request

" location, and run the following command:

$java Test [without extension]

It will generate Test.class file in the current directory i.e.

"

$JAVA_TOP/oracle/apps/xxcust/cp/request

".

Program Registration in EBS

Registration of Executable

Executable:                      TestJavaProg[Any Meaningful Name]

Short Name:                     T

estJavaProg

[Any Meaningful short Name]

Application:                      Application Name[Select (Custom or any other) Application Name]

Execution Method:            Java Concurrent Program

Execution File Name:        Test   [Name of our Java Class Compiled above]

Execution File Patch:

oracle.apps.xxadfd.cp.request  [Our Java Class Package Name]

Registration of Program

Program:                         Test Java Prog

Short Name:                    TESTJAVAPROG

Application:                     Application Name [Select any Application name]

Executable:                     TestJavaProg  [Name of the Executable registered above]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值