3 DBWS デザインタイムAPIの高度なアクセス方法
この章の内容は次のとおりです。
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();