| Oracle® Fusion Middleware Oracle Java CAPS Migration Toolユーザーズ・ガイド 11g リリース1 (11.1.1.6.0) B66433-01 |
|
![]() 前 |
![]() 次 |
この付録では、スタンドアロンのJavaコラボレーション定義(JCD)がどのようにSOA Suiteに変換されるか、およびビジネス・プロセスから呼び出されるJCDがどのように変換されるかを示すコード・サンプルを紹介します。
この付録のトピックは、次のとおりです。
JCDの移行の詳細は、1.2.2.1項「Javaコラボレーション定義の移行のサポート」を参照してください。
次の例は、ファイル・インバウンド接続、およびファイルとJMS両方のアウトバウンド接続を持つJCDがどのようにSOA SuiteのSpring Beanクラスに変換されるかを示しています。
スタンドアロンのJCDのサンプル・ソースJCDコード
package CAPSProject1;
public class Collaboration_1
{
public com.stc.codegen.logger.Logger logger;
public com.stc.codegen.alerter.Alerter alerter;
public com.stc.codegen.util.CollaborationContext collabContext;
public com.stc.codegen.util.TypeConverter typeConverter;
public void receive( com.stc.connector.appconn.file.FileTextMessage input,
com.stc.connector.appconn.file.FileApplication FileClient_1,
com.stc.connectors.jms.JMS JMS_1,employees.EmployeesOTD Employees_1 )
throws Throwable
{
logger.info( "inside receive." );
com.stc.connectors.jms.Message msg =
JMS_1.createTextMessage( input.getText() );
employees.EMPLOYEES emp = Employees_1.getEMPLOYEES();
logger.info( emp.getLAST_NAME() );
JMS_1.send( msg );
FileClient_1.setText( input.getText() );
FileClient_1.write();
}
}
スタンドアロンのJCDの場合にSOA Suite用に生成されるサンプル出力
package CAPSProject1;
public class Collaboration_1 implements
FILEIN_Collaboration_1_input.capsproject1.file.adapter.pcbpel.com.oracle.xmlns.Read_ptt {
private JMSOUT_Collaboration_1_JMS_
1.capsproject1.jms.adapter.pcbpel.com.oracle.xmlns.Produce_Message_ptt
JMSOUT_Collaboration_1_JMS_1;
private FILEOUT_Collaboration_1_FileClient_
1.capsproject1.file.adapter.pcbpel.com.oracle.xmlns.Write_ptt
FILEOUT_Collaboration_1_FileClient_1;
public void read(byte opaque[]) {
com.stc.connector.appconn.file.FileTextMessage input = new
com.stc.connector.appconn.file.FileTextMessageImpl();
input.setByteArray(opaque);
com.stc.connector.appconn.file.FileApplication FileClient_1 = new
com.stc.connector.appconn.file.FileApplication();
com.stc.connectors.jms.JMS JMS_1 = new com.stc.connectors.jms.JMS();
employees.EmployeesOTD Employees_1 = new employees.EmployeesOTD();
try {
this.receive(input, FileClient_1, JMS_1, Employees_1);
} catch (Throwable exp_0) {
throw new java.lang.RuntimeException(exp_0);
} finally {
}
//JMSOUT_Collaboration_1_JMS_1.produceMessage(opaque);
//FILEOUT_Collaboration_1_FileClient_1.write(opaque);
}
public com.stc.codegen.logger.Logger logger;
public com.stc.codegen.alerter.Alerter alerter;
public com.stc.codegen.util.CollaborationContext collabContext;
public com.stc.codegen.util.TypeConverter typeConverter;
public void receive(com.stc.connector.appconn.file.FileTextMessage input,
com.stc.connector.appconn.file.FileApplication
FileClient_1, com.stc.connectors.jms.JMS JMS_1, employees.EmployeesOTD
Employees_1) throws Throwable {
logger.info("inside receive.");
com.stc.connectors.jms.Message msg = JMS_1.createTextMessage(input.getText());
employees.EMPLOYEES emp = Employees_1.getEMPLOYEES();
logger.info(emp.getLAST_NAME());
JMS_1.send(msg);
FileClient_1.setText(input.getText());
FileClient_1.write();
}
public final void setJMSOUT_Collaboration_1_JMS_1(JMSOUT_Collaboration_1_JMS_
1.capsproject1.jms.adapter.pcbpel.com.oracle.xmlns.Produce_Message_ptt
JMSOUT_Collaboration_1_JMS_1) {
this.JMSOUT_Collaboration_1_JMS_1 = JMSOUT_Collaboration_1_JMS_1;
}
public final JMSOUT_Collaboration_1_JMS_1.capsproject1.jms.adapter.pcbpel.com.
oracle.xmlns.Produce_Message_ptt getJMSOUT_Collaboration_1_JMS_1() {
return this.JMSOUT_Collaboration_1_JMS_1;
}
public final void setFILEOUT_Collaboration_1_FileClient_1(FILEOUT_Collaboration_
1_FileClient_1.capsproject1.file.adapter.pcbpel.com.
oracle.xmlns.Write_ptt FILEOUT_Collaboration_1_FileClient_1) {
this.FILEOUT_Collaboration_1_FileClient_1 = FILEOUT_Collaboration_1_
FileClient_1;
}
public final FILEOUT_Collaboration_1_FileClient_1.capsproject1.file.adapter.
pcbpel.com.oracle.xmlns.Write_ptt getFILEOUT_Collaboration_1_FileClient_1() {
return this.FILEOUT_Collaboration_1_FileClient_1;
}
public final void setLogger(com.stc.codegen.logger.Logger logger) {
this.logger = logger;
}
public final com.stc.codegen.logger.Logger getLogger() {
return this.logger;
}
public final void setAlerter(com.stc.codegen.alerter.Alerter alerter) {
this.alerter = alerter;
}
public final com.stc.codegen.alerter.Alerter getAlerter() {
return this.alerter;
}
public final void setCollabContext(com.stc.codegen.util.CollaborationContext
collabContext) {
this.collabContext = collabContext;
}
public final com.stc.codegen.util.CollaborationContext getCollabContext() {
return this.collabContext;
}
public final void setTypeConverter(com.stc.codegen.util.TypeConverter
typeConverter) {
this.typeConverter = typeConverter;
}
public final com.stc.codegen.util.TypeConverter getTypeConverter() {
return this.typeConverter;
}
}
前述のサンプルを見ると、移行後のJCDクラスではSOA Suiteファイル・アダプタ・インタフェースが実装され、実装されたインタフェース・メソッドpublic void read(byte opaque[])で元のJCDの次のメソッドが置換されていることが確認できます。
public void receive(com.stc.connector.appconn.file.FileTextMessage input,
com.stc.connector.appconn.file.FileApplication FileClient_1,
com.stc.connectors.jms.JMS JMS_1, employees.EmployeesOTD Employees_1)
これは、入力ディレクトリに入力ファイルが存在する場合のトリガー・メソッドです。SOA Suiteファイル・アダプタの構成は、移行ツールによって生成されたJCAファイル内に定義されます。この構成は、Oracle JDeveloperで変更できます。
このインタフェース・メソッドでは、元のJCDのメソッドが呼び出されます。次の2つのクラス・フィールドは、アウトバウンドSOA Suiteファイル・アダプタおよびJMSアダプタを表します。
private JMSOUT_Collaboration_1_JMS_1.capsproject1.jms.adapter.pcbpel.com.oracle.xmlns.Produce_Message_ptt JMSOUT_Collaboration_1_JMS_1; private FILEOUT_Collaboration_1_FileClient_1.capsproject1.file.adapter.pcbpel.com.oracle.xmlns.Write_ptt FILEOUT_Collaboration_1_FileClient_1;
前述の2つのクラス・フィールドは、元のJCDの次のクラス・フィールドと同様にインスタンス化されませんが、それらのgetterおよびsetterメソッドは生成されます。これにより、SOA Suiteのコンテキスト・インジェクションを使用して、それらをインスタンス化できます。
public com.stc.codegen.logger.Logger logger; public com.stc.codegen.alerter.Alerter alerter; public com.stc.codegen.util.CollaborationContext collabContext; public com.stc.codegen.util.TypeConverter typeConverter;
次の例は、ビジネス・プロセスから呼び出されるJCDがどのようにSOA SuiteのSpring Beanクラスに変換されるかを示しています。
ビジネス・プロセスから呼び出されるJCDのサンプルJCDソース・コード
package Jcd_Bpel_Project;
public class Collaboration_3
{
public com.stc.codegen.logger.Logger logger;
public com.stc.codegen.alerter.Alerter alerter;
public com.stc.codegen.util.CollaborationContext collabContext;
public com.stc.codegen.util.TypeConverter typeConverter;
public void op1_vikas( dtd.otdInputDTD_2111422138.DBemployee input,
dtd.otdOutputDTD_1854792262.DBemployee output )
throws Throwable
{
output.setEmpNo( input.getEmpNo() );
output.setLastname( input.getLastname() );
output.setFirstname( input.getFirstname() );
output.setRate( input.getRate() );
output.setLastDate( input.getLastDate() );
Thread.sleep( 120000 );
}
}
ビジネス・プロセスから呼び出されるJCDの場合に生成されるサンプル出力コード
package Jcd_Bpel_Project;
import oracle.migrationtool.migration.caps.runtime.OTDUtil;
public class Collaboration_3 implements urn_stc_egate_jce_collaboration_1wsdl.ExecutePortType {
private stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee output;
public stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee
op1Vikas(stc.egate.otd.dtd.otdinputdtd_2111422138.DBemployee DBemployee)
throws urn_stc_egate_jce_collaboration_1wsdl.JavaExceptionMessage {
this.output = new stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee();
try {
this.op1_vikas(DBemployee, this.output);
} catch (Throwable exp_0) {
throw new urn_stc_egate_jce_collaboration_1wsdl.JavaExceptionMessage
(exp_0.getMessage(), null, exp_0);
} finally {
}
return this.output;
}
public com.stc.codegen.logger.Logger logger;
public com.stc.codegen.alerter.Alerter alerter;
public com.stc.codegen.util.CollaborationContext collabContext;
public com.stc.codegen.util.TypeConverter typeConverter;
public void op1_vikas(stc.egate.otd.dtd.otdinputdtd_2111422138.DBemployee input,
stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee output) throws Throwable {
output.setEmpNo(input.getEmpNo());
output.setLastname(input.getLastname());
output.setFirstname(input.getFirstname());
output.setRate(input.getRate());
output.setLastDate(input.getLastDate());
Thread.sleep(120000);
}
public final void setOutput(stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee
output) {
this.output = output;
}
public final stc.egate.otd.dtd.otdoutputdtd_1854792262.DBemployee getOutput() {
return this.output;
}
public final void setLogger(com.stc.codegen.logger.Logger logger) {
this.logger = logger;
}
public final com.stc.codegen.logger.Logger getLogger() {
return this.logger;
}
public final void setAlerter(com.stc.codegen.alerter.Alerter alerter) {
this.alerter = alerter;
}
public final com.stc.codegen.alerter.Alerter getAlerter() {
return this.alerter;
}
public final void setCollabContext(com.stc.codegen.util.CollaborationContext
collabContext) {
this.collabContext = collabContext;
}
public final com.stc.codegen.util.CollaborationContext getCollabContext() {
return this.collabContext;
}
public final void setTypeConverter(com.stc.codegen.util.TypeConverter
typeConverter) {
this.typeConverter = typeConverter;
}
public final com.stc.codegen.util.TypeConverter getTypeConverter() {
return this.typeConverter;
}
}
変換後のクラスではJAXBプロキシ・インタフェースが実装され、JCDの元のOTDクラスはJAXBオブジェクトに置換されます。Springコンテキスト・インジェクション用にgetterおよびsetterが生成されます。
元のJCD内のコメントのほとんどは、移行後のSOA Spring Beanクラス内に保持されます。後ろにJava文が続かないコメントは、移行時に保持されません。コメントが保持されるようにするには、元のJCD内の後ろにJava文が続かないコメントの後にセミコロン(;)を追加します。