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文が続かないコメントの後にセミコロン(;)を追加します。