WebLogic Server 9.0 Beehive 統合ガイド
WebLogic Server には、Beehive アプリケーションをビルドおよびデプロイするための以下の Ant ファイルが付属しています。
<WEBLOGIC_HOME>
\beehive\weblogic-beehive\ant\weblogic-beehive-buildmodules.xml
<WEBLOGIC_HOME>
\beehive\weblogic-beehive\ant\weblogic-beehive-imports.xml
<WEBLOGIC_HOME>
\beehive\weblogic-beehive\ant\weblogic-beehive-tools.xml
weblogic-beehive-buildmodules.xml
には、Web アプリケーション モジュールをビルドするためのビルド マクロ (<macrodef>
要素) が含まれています。
weblogic-beehive-imports.xml
は、weblogic-beehive-tools.xml で必要になるビルド リソース JAR へのパスを定義するユーティリティ ファイルです。
weblogic-beehive-tools.xml
には、XMLBean スキーマや 3 種類の Beehive コンポーネント (Java コントロール、NetUI ページ フロー、および Web サービス) などのその他の Beehive 関連のソース アーティファクトをビルドするためのビルド マクロが含まれています。
これらのビルド リソースを使用するには、これら 3 つのファイルを Ant ビルド ファイルにインポートします。
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-imports.xml"/>
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-tools.xml"/>
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-buildmodules.xml"/>
その後、ビルド マクロを呼び出して、Beehive アプリケーションをビルドします。たとえば、次の Ant ターゲットは weblogic-beehive-buildmodules.xml
にある build-webapp
マクロ (<macrodef name=
"build-webapp
"/>
) を呼び出します。
<build-webapp
webapp.src.dir="${src.dir}/myWebApp"
webapp.build.dir="${dest.dir}/myWebApp"
app.build.classpath="myWebApp.build.classpath"/>
</target>
Ant ビルド ファイルのテンプレートは、「ビルド ファイルのテンプレート」にあります。「Beehive のチュートリアル」では、このテンプレート Ant ビルド ファイルが使用されます。
このテンプレート ビルド ファイルは、Beehive アプリケーションの myBeehiveApp\META-INF\weblogic-application.xml
で次のライブラリ参照が指定されていることを前提としています。
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<library-ref>
<library-name>weblogic-beehive-1.0</library-name>
</library-ref>
</weblogic-application>
Beehive アプリケーションに Web モジュールが含まれている場合、このテンプレート ビルド ファイルは、myBeehiveApp\myWebApp\WEB-INF\weblogic.xml
で次のライブラリ参照が指定されていることを前提としています。
<weblogic-web-app
xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<library-ref>
<library-name>beehive-netui-1.0</library-name>
</library-ref>
<library-ref>
<library-name>struts-1.2</library-name>
</library-ref>
<library-ref>
<library-name>jstl-1.1</library-name>
</library-ref>
</weblogic-web-app>
ディスク上では、これらの参照されるライブラリは <WEBLOGIC_HOME>
\common\deployable-libraries
の EAR ファイルおよび WAR ファイルにあります。参照される EAR ファイルおよび WAR ファイルの復元には、<libclasspath>
Ant タスクが使用されます。
以下の Ant マクロは、ビルド リソース ファイルに含まれる最も重要な Ant タスクを表しています。
Web アプリケーション モジュールをビルドおよびアセンブルします。この Ant タスクは、Web アプリケーション内のすべてのページ フローと Java コントロールをコンパイルします。
コントロールのソース Java ファイルは、[webAppDir]\WEB-INF\src にあると想定されています。
ページ フローのソース Java ファイルは、[webAppDir] にあると想定されています。
Java コントロールのソース ファイルのディレクトリから配布可能なコントロール JAR をビルドします。
1 つまたは複数の EJB コントロールから EJB JAR をビルドします。
ディレクトリ内にあるコントロールをアセンブルします。アセンブルは、Web サービス コントロール、JMS コントロール、および EJB コントロールをコンパイルするプロセスの一部として必要になります。コントロールのビルド プロセスの詳細については、「JMS コントロールおよび EJB コントロールのビルド」を参照してください。
WSDL ファイルから Java の型ライブラリを生成します。型は、JAR ファイルとしてパッケージ化されます。WSDL に複雑な Java の型が含まれている場合は、WSDL からサービス コントロールを生成するプロセスの一部としてこのターゲットを実行する必要があります。WSDL からサービス コントロールを生成する方法の詳細については、「Web サービス コントロールのビルド」を参照してください。
WSDL ファイルから Web サービス クライアントを生成します。
WSDL ファイルから Web サービス コントロールを生成します。
Beehive アプリケーションのビルドでは、まず最初に「ビルド ファイルのテンプレート」にあるテンプレート ビルド ファイルを使用します。ビルドする Beehive アプリケーションの各コンポーネントについて、テンプレート ビルド ファイルにビルド要素を追加してください。
各 Web アプリケーション (ページ フローと Java コントロールを含むすべてのコンポーネント) に対して、<build-webapp>
を呼び出します。
Web サービスは、<jwsc>
(weblogic.wsee.tools.anttasks.JwscTask
) ターゲットを使用してコンパイルする必要があります。
システム コントロールを含むアプリケーションをビルドする場合は、「Web サービス コントロールのビルド」および「JMS コントロールおよび EJB コントロールのビルド」を参照してください。
次の手順では、Web サービス コントロールを作成し、それを Beehive アプリケーションに統合し、作成されたアプリケーションをコンパイルする方法について説明します。この手順は、対象の Web サービスの WSDL ファイルに対するアクセス権が付与されていることを前提としています。
weblogic-beehive-tools.xml
で定義されている <build-type-library>
を呼び出します。これにより、型ライブラリ JAR ファイルが生成されます。このファイルは、アプリケーションの APP-INF\lib
ディレクトリに保存する必要があります。
<build-type-library
wsdl="${src.dir}/services/MyService.wsdl"
wsdlname="MyService.wsdl"
wsdlservicename="MyService"
tempdir="c:/temp/services"
destdir="${src.dir}/APP-INF/lib"
/>
<build-type-library>
の呼び出しは、Web サービスに複雑な Java の型が含まれる場合にのみ必要になります。Web サービスに標準の Java の型しか含まれない場合、この手順はスキップできます。
これにより、Web サービス コントロールの Java ソース ファイルが生成されます。
Web サービスに複雑な型が含まれない場合、typefamily 属性の値は no_complex_types でなければなりません。
<generate-webservice-control
wsdl="${src.dir}/services/MyService.wsdl"
wsdlservicename="MyService"
servicecontrolname="MyServiceControl"
destdir="${src.dir}/services"
appdir="${src.dir}"
package="pkg"
typefamily="no_complex_types"
classpathref="app.classpath"/>
作成される Java ソースは、セキュリティ注釈の追加以外の変更はできません。使用可能なセキュリティ注釈の詳細については、「コントロールのセキュリティ」を参照してください。
以下の Ant ターゲットでは、J2EE アプリケーション コンテキストで手順 4 および 5 を実行する方法が示されています。J2EE アプリケーション コンテキストでは、assemblerclass
属性の値は org.apache.beehive.controls.runtime.assembly.EJBAssemblyContext$Factory でなければなりません。Web アプリケーション コンテキストでは、assemblerclass
属性の値は org.apache.beehive.controls.runtime.assembly.WebAppAssemblyContext$Factory でなければなりません。
<!-- コントロールを一時ディレクトリにアセンブルした後、アセンブリ出力をコンパイルする -->
<assemble-controls
moduledir="${dest.dir}/myApp"
destdir="${assembly.build.tmp.dir}"
classpathref="myWeb.assembly.classpath" assemblerclass="org.apache.beehive.controls.runtime.assembly.EJBAssemblyContext$Factory"
/>
<javac srcdir="${assembly.build.tmp.dir}"
destdir="${dest.dir}/myWeb/WEB-INF/classes"
classpath="customerLoanWeb.assembly.classpath"
/>
JMS コントロールおよび EJB コントロールを生成するプロセスは、「Web サービス コントロールのビルド」の手順 4 および 5 と同じです。コントロールをアセンブルしてから、アセンブルの結果をコンパイルする必要があります。
Beehive アプリケーションをビルドおよびデプロイするには、次の Ant ビルド ファイルをテンプレートとして使用します。
このテンプレート ファイルでは、<wlcompile>
タスクが使用されています。これにより、分割ソースのコンパイルおよびデプロイメントの成功が保証されます。また <wlcompile>
は、アプリケーション内のすべての Java ファイルを自動的に検索してコンパイルします。<wlcompile>
は、アプリケーション内で Beehive 固有のクラスを検出すると失敗するので注意してください。このため、<wlcompile>
の検索から Beehive プロジェクトを除外する必要があります。たとえば次のように指定します。
<wlcompile srcdir="${src.dir}" destdir="${dest.dir}"excludes="myBeehiveProj1,myBeehiveProj2"
/>
<?xml version="1.0" encoding="UTF-8" ?>
<project default="build" basedir=".">
<property environment="env"/>
<!-- オーバーライドを提供する -->
<property file="build.properties"/>
<property name="src.dir" value="${basedir}"/>
<property name="dest.dir" value="${basedir}/../build"/>
<property name="dist.dir" value="${basedir}/../dist"/>
<property name="app.name" value="beehive_tutorial"/>
<property name="ear.path" value="${dist.dir}/${app.name}.ear"/>
<property name="tmp.dir" value="${java.io.tmpdir}"/>
<property name="weblogic.home" value="${env.WL_HOME}"/>
<property name="user" value="weblogic"/>
<property name="password" value="weblogic"/>
<fail unless="weblogic.home" message="WL_HOME not set in environment"/>
<property name="beehive.home" value="${weblogic.home}/beehive"/>
<!-- beehive-imports では beehive-tools.xml で必要になる依存関係パスを定義する -->
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-imports.xml"/>
<!-- build-schemas、build-controls、build-pageflows のマクロを定義する -->
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-tools.xml"/>
<!-- build-webapp のマクロを定義する -->
<import file="${beehive.home}/weblogic-beehive/ant/weblogic-beehive-buildmodules.xml"/>
<taskdef name="libclasspath" classname="weblogic.ant.taskdefs.build.LibClasspathTask"/>
<target name="init.app.libs">
<libclasspath basedir="${src.dir}" tmpdir="c:/tmp/wls_lib_dir" property="app.lib.classpath">
<librarydir dir="${weblogic.home}/common/deployable-libraries/" />
</libclasspath>
<echo message="app.lib.claspath is ${app.lib.classpath}" level="info"/>
</target>
<target name="init.dirs">
<mkdir dir="${dest.dir}/APP-INF/classes"/>
<mkdir dir="${dest.dir}/APP-INF/lib"/>
<mkdir dir="${dist.dir}"/>
</target>
<target name="init" depends="init.app.libs,init.dirs">
<path id="app.classpath">
<pathelement location="${src.dir}/APP-INF/classes"/>
<pathelement location="${dest.dir}/APP-INF/classes"/>
<pathelement path="${app.lib.classpath}"/>
<fileset dir="${src.dir}/APP-INF/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${dest.dir}/APP-INF/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${beehive.home}/apache-beehive-incubating-1.0m1/lib/netui">
<include name="**/*.jar"/>
<exclude name="**/beehive-netui-compiler.jar"/>
</fileset>
</path>
<wlcompile srcdir="${src.dir}" destdir="${dest.dir}"/>
</target>
<target name="build" depends="compile,appc"/>
<target name="compile" depends="init"/>
<target name="clean" depends="init.dirs,clean.dest,clean.dist"/>
<target name="clean.dest">
<echo message="deleting dest.dir:${dest.dir}"/>
<delete includeemptydirs="true" >
<fileset dir="${dest.dir}" excludes=".beabuild.txt" includes="**/*" />
</delete>
</target>
<target name="clean.dist">
<echo message="deleting dest.dir:${dest.dir}"/>
<delete includeemptydirs="true" >
<fileset dir="${dist.dir}" includes="**/*" />
</delete>
</target>
<target name="appc" depends="init" >
<wlappc source="${dest.dir}" librarydir="${weblogic.home}/common/deployable-libraries/"/>
</target>
<target name="pkg.exploded">
<antcall target="clean.dist"></antcall>
<wlpackage toDir="${dist.dir}" srcdir="${src.dir}" destdir="${dest.dir}" />
</target>
<target name="deploy.exploded" >
<wldeploy user="${user}" password="${password}" action="deploy" name="${app.name}" source="${dist.dir}"/>
</target>
<target name="deploy" >
<wldeploy user="${user}" password="${password}" action="deploy" name="${app.name}" source="${dest.dir}"/>
</target>
<target name="redeploy">
<wldeploy user="${user}" password="${password}" action="redeploy" name="${app.name}"/>
</target>
</project>