ナビゲーションをスキップ

WebLogic Server 9.0 Beehive 統合ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

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 マクロは、ビルド リソース ファイルに含まれる最も重要な Ant タスクを表しています。

weblogic-beehive-buildmodules.xml

build-webapp-module

Web アプリケーション モジュールをビルドおよびアセンブルします。この Ant タスクは、Web アプリケーション内のすべてのページ フローと Java コントロールをコンパイルします。

このタスクは、以下のパラメータを取ります。

名前

定義

webapp.src.dir

必須。Web アプリケーションのベース ディレクトリ。

webapp.build.dir

必須。Web アプリケーションのビルド ディレクトリ。

app.build.dir

必須。アプリケーションのビルド ディレクトリ。

app.build.classpath

必須。コンパイルに使用されるクラスパス。

temp.dir

必須。一時ディレクトリ。

コントロールのソース Java ファイルは、[webAppDir]\WEB-INF\src にあると想定されています。

ページ フローのソース Java ファイルは、[webAppDir] にあると想定されています。

build-control-module

Java コントロールのソース ファイルのディレクトリから配布可能なコントロール JAR をビルドします。

このタスクは、以下のパラメータを取ります。

名前

定義

srcdir

必須。Java ソースを格納しているディレクトリ。

destjar

必須。生成される JAR の名前。

tempdir

必須。生成されたソースおよびクラスを格納する一時ディレクトリ。

classpathref

必須。コンパイルに使用されるクラスパス。

build-ejb-module

1 つまたは複数の EJB コントロールから EJB JAR をビルドします。

このタスクは、以下のパラメータを取ります。

名前

定義

srcdir

必須。EJB ソースを格納しているディレクトリ。

destjar

必須。EJB コントロールを含む、生成される JAR の名前。

tempdir

必須。生成されたソースおよびクラスを格納する一時ディレクトリ。

classpathref

必須。コンパイルに使用されるクラスパス。

weblogic-beehive-tools.xml

assemble-controls

ディレクトリ内にあるコントロールをアセンブルします。アセンブルは、Web サービス コントロール、JMS コントロール、および EJB コントロールをコンパイルするプロセスの一部として必要になります。コントロールのビルド プロセスの詳細については、「JMS コントロールおよび EJB コントロールのビルド」を参照してください。

このタスクは、以下のパラメータを取ります。

名前

定義

moduledir

必須。モジュールの展開された内容を格納しているディレクトリ。

destdir

必須。コンパイルされたクラス ファイルの送り先ディレクトリ。

classpathref

必須。コンパイルに使用されるクラスパス。

assemblerclass

必須。

EJB モジュールの場合は、次の値でなければならない。

org.apache.beehive.controls.runtime.assembly.EJBAssemblyCo ntext$Factory

Web アプリケション モジュールの場合は、次の値でなければならない。

org.apache.beehive.controls.runtime.assembly.WebAppAssembl yContext$Factory

generate-type-library

WSDL ファイルから Java の型ライブラリを生成します。型は、JAR ファイルとしてパッケージ化されます。WSDL に複雑な Java の型が含まれている場合は、WSDL からサービス コントロールを生成するプロセスの一部としてこのターゲットを実行する必要があります。WSDL からサービス コントロールを生成する方法の詳細については、「Web サービス コントロールのビルド」を参照してください。

このタスクは、以下のパラメータを取ります。

名前

定義

wsdl

必須。型ライブラリの生成元になる WSDL ファイル。

wsdlname

必須。WSDL の配置されているプロジェクトからの相対パス (.wsdl 拡張子は除く)。

wsdlservicename

必須。型ライブラリの生成元になる、複雑な型を含む WSDL 内のサービス名。

tempdir

必須。一時ディレクトリ。

destdir

必須。型ライブラリ JAR が配置されるディレクトリ。

typefamily

省略可能。型ファミリ。デフォルト値は tylar

generate-webservice-client

WSDL ファイルから Web サービス クライアントを生成します。

このタスクは、以下のパラメータを取ります。

名前

定義

wsdl

必須。クライアントの生成元になる WSDL ファイル。

tempdir

必須。生成されたソースを格納する一時ディレクトリ。

destjar

必須。クライアントが配置されるディレクトリ。

package

必須。生成されたソースのパッケージ。

generate-webservice-control

WSDL ファイルから Web サービス コントロールを生成します。

このタスクは、以下のパラメータを取ります。

名前

定義

wsdl

必須。サービス コントロールの生成元になる WSDL ファイル。

wsdlservicename

必須。WSDL サービス名。

servicecontrolname

必須。サービス コントロール クラスの名前。

destdir

必須。Web サービス コントロール クラスと WSDL が配置されるディレクトリ。

appdir

必須。アプリケーション ディレクトリ。

package

必須。

typefamily

省略可能。型ファミリ。デフォルト値は no_complex_types

classpathref

必須。コンパイルに使用されるクラスパス。

 


Beehive アプリケーションのビルド

Beehive アプリケーションのビルドでは、まず最初に「ビルド ファイルのテンプレート」にあるテンプレート ビルド ファイルを使用します。ビルドする Beehive アプリケーションの各コンポーネントについて、テンプレート ビルド ファイルにビルド要素を追加してください。

各 Web アプリケーション (ページ フローと Java コントロールを含むすべてのコンポーネント) に対して、<build-webapp> を呼び出します。

Web サービスは、<jwsc> (weblogic.wsee.tools.anttasks.JwscTask) ターゲットを使用してコンパイルする必要があります。

システム コントロールを含むアプリケーションをビルドする場合は、「Web サービス コントロールのビルド」および「JMS コントロールおよび EJB コントロールのビルド」を参照してください。

Web サービス コントロールのビルド

次の手順では、Web サービス コントロールを作成し、それを Beehive アプリケーションに統合し、作成されたアプリケーションをコンパイルする方法について説明します。この手順は、対象の Web サービスの WSDL ファイルに対するアクセス権が付与されていることを前提としています。

  1. 対象の Web サービスの WSDL ファイルを取得します。
  2. 対象の Web サービスによって渡される複雑な Java の型がある場合は、weblogic-beehive-tools.xml で定義されている <build-type-library> を呼び出します。
  3. これにより、型ライブラリ 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 の型しか含まれない場合、この手順はスキップできます。

  4. weblogic-beehive-tools.xml で定義されている <generate-webservice-control> を呼び出します。
  5. これにより、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 ソースは、セキュリティ注釈の追加以外の変更はできません。使用可能なセキュリティ注釈の詳細については、「コントロールのセキュリティ」を参照してください。

  6. Web サービス コントロールの Java ソース ファイルと型ライブラリ JAR ファイル (型ライブラリ JAR ファイルは存在する場合のみ) をクライアント アプリケーションに配置します。クライアントがその Web サービス コントロールを使用するには、その前にそのコントロールをアセンブルする必要があります。それにより、クライアントと Web サービス コントロールの間に適切なバインディングが作成されます。
  7. <assemble-controls> タスクを呼び出します。

  8. <assemble-controls> を呼び出すことにより、Java ソース コードが作成され、一部のデプロイメント記述子が変更されます。次に、この 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 コントロールのビルド

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>

 

フッタのナビゲーションのスキップ  ページの先頭 前 次