3 DBWS デザインタイムAPIの高度なアクセス方法

この章では、EclipseLink DBWSデザインタイムAPIの高度なアクセス方法について説明します。

この章の内容は次のとおりです。

JDeveloperとの統合

保留中の情報、TBD

DBWSBuilderとAntの使用

EclipseLink DBWSを使用して、Apache Ant (http://ant.apache.org/)からDBWSBuilderを起動して必要なファイルを生成、コンパイルし、他のAntターゲットとともにアプリケーションをパッケージ化できます。

この例は、Antを使用してデプロイ可能なWebアーカイブを生成する方法を示しています。この例では、次のファイル配置を考えてみます。

<example-root>

dbws-builder.xml (例3-1を参照) build.xml (例3-2を参照) build.properties (例3-3参照)

  jlib     eclipselink.jar     eclipselink-dbwsutils.jar     javax.servlet.jar     javax.wsdl.jar     ojdbc6.jar     org.eclipse.persistence.oracleddlparser.jar

  stage    生成されるすべてのアーティファクトがここに保存されます。最も重要なのはsimpletable.warです。

この例でDBWS Builderを実行するには、<example-root>ディレクトリにantを入力します。Builderによって、生成されたアーティファクトがstageディレクトリのWebアーカイブ(simpletable.war)にパッケージされます。この .warファイルを、WebLogicにデプロイできます。

例3-1 DBWS Builderファイル(dbws-builder.xml)の例

<?xml version="1.0" encoding="UTF-8"?>
<dbws-builder xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <properties>
    <property name="projectName">simpletable</property>
    ... database properties
  </properties>
 
  <table
    schemaPattern="SCOTT"
    tableNamePattern="SIMPLETABLE"
  />
</dbws-builder>

例3-2 ビルドXMLファイル(build.xml)の例

<?xml version="1.0"?>
<project name="simpletable" default="build">
  <property file="${basedir}/build.properties"/>
 
  <path id="build.path">
    <fileset
      dir="${jlib.dir}"
      includes="eclipselink.jar 
                eclipselink-dbwsutils.jar 
                org.eclipse.persistence.oracleddlparser.jar 
                javax.wsdl.jar 
                javax.servlet.jar 
                ojdbc6.jar"
      >
    </fileset>
  </path>
 
  <target name="build">
    <java
      classname="org.eclipse.persistence.tools.dbws.DBWSBuilder"
      fork="true"
      classpathRef="build.path"
      >
      <arg line="-builderFile ${dbws.builder.file} -stageDir ${stage.dir} -packageAs ${server.platform} ${ant.project.name}.war"/>
    </java>
  </target>
</project>

例3-3 ビルド・プロパティ・ファイル(build.properties)の例

custom = true
build.sysclasspath=ignore
 
stage.dir=${basedir}/stage
jlib.dir=${basedir}/jlib
server.platform=wls
dbws.builder.file=dbws-builder.xml

javacでの使用

現在はサポートされていません。https://bugs.eclipse.org/bugs/show_bug.cgi?id=386860を参照してください

2.4.1および2.5で修正済

EclipseLink 2.4.1以降では、javacからDBWSBuilderを呼び出して、必要なファイルを生成し、アプリケーションをコンパイルして、アクティブなWebLogicインスタンスにデプロイできるWebアーカイブにパッケージ化できます。

OXMプロジェクトorg.eclipse.persistence.tools.dbws.DBWSBuilderModelProjectでは、ビルダーXMLファイル(dbws-bulider.xml)を解析し、プロパティ、表およびプロシージャ操作を表すモデル・オブジェクトを生成します。また、プロパティ・セッター(setDriver()およびsetUrl()など)および操作セッターaddOperation(OperationModel operation)を介して、パブリック・クラスorg.eclipse.persistence.tools.dbws.DBWSBuilderをプログラムによって移入することもできます。

例3-4に、DBWSBuilderの構成方法を示します。

例3-4 javacでのDBWSBuilderの使用

DBWSBuilder builder = new DBWSBuilder();
 
    // set properties
    builder.setProjectName("simpleSP");
    builder.setLogLevel("fine");
    builder.setUsername("SCOTT");
    builder.setPassword("TIGER");
    builder.setUrl("jdbc:oracle:thin:@localhost:1521:ORCL");
    builder.setDriver("oracle.jdbc.OracleDriver");
    builder.setPlatformClassname("org.eclipse.persistence.platform.database.oracle.Oracle11Platform");
 
    // set table and procedure operations
    ProcedureOperationModel procOpModel = new ProcedureOperationModel();
    procOpModel.setName("VarcharTest");
    procOpModel.setCatalogPattern("TOPLEVEL");
    procOpModel.setProcedurePattern("VarcharSP");
    procOpModel.setReturnType("xsd:int");
    builder.addOperation(procOpModel);
 
    TableOperationModel tableOpModel = new TableOperationModel();
    tableOpModel.setSchemaPattern("%");
    tableOpModel.setTablePattern("SIMPLESP");
    // add nested procedure operation
    procOpModel = new ProcedureOperationModel();
    procOpModel.setName("GetAllTest");
    procOpModel.setCatalogPattern("TOPLEVEL");
    procOpModel.setProcedurePattern("GetAll");
    procOpModel.setIsCollection(true);
    procOpModel.setReturnType("simplespType");
    tableOpModel.addOperation(procOpModel);
    builder.addOperation(tableOpModel);
 
    // setup the web service packager
    XRPackager xrPackager = new JSR109WebServicePackager();
    xrPackager.setDBWSBuilder(builder);
    builder.setPackager(xrPackager);
    xrPackager.setSessionsFileName(builder.getSessionsFileName());
    xrPackager.setStageDir(new File("."));
 
    // generate the web archive
    builder.start();