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();