サーバー環境について

プロジェクトサーバー

JavaEE7 サーバー(WildFly)

J2EEサーバー(旧資料)

WebSocketサーバー(旧資料)

目次

  1. はじめに
  2. J2EEサーバーとは?
  3. J2EEサーバーの構築
    1. JBossのインストール
    2. Weblogicのインストール
  4. ドライバ系ライブラリの配置
  5. J2EEサーバーとデータベースの接続
    1. 例:JBossのデータソース設定
    2. 例:Weblogicのデータソース設定
  6. J2EEサーバーにQueueとTopicを登録
    1. JBoss5のJMS設定
    2. JBoss6のJMS設定
  7. J2EEサーバーにメールセッションを登録
    1. JBossのMail設定
  8. J2EEアプリケーションのJavaWebStart設定
    1. JNLPファイルの作成
    2. jarファイルに電子署名する
    3. 画面起動HTMLの作成
  9. PEXA印刷フレームワークの設定
    1. JBoss4の印刷フレームワーク設定
    2. JBoss5の印刷フレームワーク設定
    3. JBoss6の印刷フレームワーク設定
  10. J2EEアプリケーションのビルドとデプロイ
    1. EARによるデプロイ
    2. EJBの単独デプロイ
    3. WARの単独デプロイ
    4. JavaWebStartで参照するライブラリ
      1. JBoss5のClientライブラリ
      2. JBoss6のClientライブラリ
      3. JBoss6(EJB3)のClientライブラリ
  11. J2EEサーバー起動時の実行時パラメータ
    1. JavaWebStartによる画面起動のための実行時パラメータ
    2. Windows環境におけるJBoss6の起動パラメータについて
  12. J2EEアプリのビルド時に設定する環境変数
    1. JBoss使用時に設定するビルド用環境変数
    2. Weblogic使用時に設定するビルド用環境変数


はじめに

このドキュメントは、J2EEサーバーの構築ガイドです。
構築例を以下で解説します。


J2EEサーバーとは?

J2EEサーバーは、J2EEの規格に従って作成されたJ2EEアプリケーションを動作させるためのアプリケーションサーバーです。
PEXAのアプリケーション実行エンジンの上に開発された業務システムアプリケーションはJ2EEアプリケーションの形をとりますので、これを実行するためにはJ2EEサーバーが必要となります。

プロジェクトの各作業者のローカル開発環境にもこのJ2EEサーバーはインストールして使用しますが、それとは別にシナリオテスト環境や本番環境などにもインストールします。 このガイドでは、後者のテスト環境や本番環境向けのJ2EEサーバーインストール及び各種設定について説明します。


J2EEサーバーの構築

J2EEアプリケーションを実行するミドルウェアであるアプリケーションサーバーは、以下のようにフリーの物もあれば有償の物もあります。

  • JBoss
  • Apache Geronimo
  • GlassFish
  • Weblogic
  • WebSphere
PEXAのアプリケーション実行エンジンはJ2EEの標準的な仕様の上にEJBとして実装されており、特定のアプリケーションサーバーに依存していません。 そのため、どのアプリケーションサーバーを使用しても論理的には動作するはずとなっています。

しかし、EJBは各アプリケーションサーバー毎のDeploymentDescriptorを含めてビルドする必要があるため、 実際にはアプリケーションサーバー毎にEJBのjarファイルをPEXAが提供する必要があります。

また、業務アプリケーションをビルドして最終的にearファイルを生成するするために以下のような対応をPEXA側がアプリケーションサーバー毎に行う必要があります。
  • 各アプリケーションサーバー毎のEJBコンパイラを使用したEJBビルドツールの追加
  • 各アプリケーションサーバー毎のearファイル構造に対応したearビルドツールの追加
  • 各アプリケーションサーバー毎のwarファイル構造に対応したwarビルドツールの追加
これらはPEXAが提供するantビルドターゲットとして提供する必要があるので、今まで使用実績のないアプリケーションサーバーを使用する場合は ビルドツールおよびantビルドターゲットの追加と動作検証が必要となります。

現状では、PEXAが提供する実行エンジンのEJBおよびビルドツールが対応しているのはJBoss及びWeblogicとなっています。
それ以外のアプリケーションサーバーを使用する予定がある場合は、PEXA開発担当にその旨を伝えてPEXAのEJBおよびantビルドターゲットの対応を依頼してください。

以下で、アプリケーションサーバー毎にインストールについて説明します。

JBossのインストール

JBossはフリーソースのアプリケーションサーバーです。ソースコードが公開されており、LGPLで提供されています。
JBossは以下のサイトからダウンロードすることが出来ます。

http://www.jboss.org/

ダウンロードしてきたアーカイブファイルを、任意のディレクトリに展開すればインストール自体は完了です。
特にインストーラーなどを使用する必要はありません。

以降の解説で、JBossをインストールしたディレクトリを環境変数JBOSS_HOMEとします。
また、JBossを使用した場合の例でのJBOSS_HOMEを以下のディレクトリとします。

  /opt/jboss
テストもしくは本番環境を想定した解説なので、OSはUnix/Linux系とした構築例とします。


Weblogicのインストール

Weblogicは有償のアプリケーションサーバーです。元はBEA社が提供していましたが、現在はOracle社が提供しています。
開発者向けに、同時接続数が5までとなる以外はフル機能を使用できるバージョンを無償ダウンロードすることが出来ます。

http://www.oracle.com/technology/global/jp/products/weblogic/index.html

ダウンロードしてきたファイルを実行するとインストーラーが起動しますので、ウィザードに従ってインストールして下さい。

以降の解説で、Weblogicをインストールしたディレクトリを環境変数WL_HOMEとします。
また、Weblogicを使用した場合の例でのWL_HOMEを以下のディレクトリとします。

  /opt/bea/wlserver_10.3
テストもしくは本番環境を想定した解説なので、OSはUnix/Linux系とした構築例とします。



ドライバ系ライブラリの配置

APサーバーをインストールしたら、ドライバ系のjarファイルを所定の場所に格納します。
ドライバ系jarファイルとは、以下のような物を指します。

  • JDBCドライバ(Oracle用、PostgreSQL用など)
  • 印刷ミドルウェア(SVF, JaspoerReportsなど)
これらは、アプリケーション側から見た場合は直接呼び出されないものであり、PEXAエンジンもしくはAPサーバーの層を挟んで実行されます。 そのため、これらは基本的にビルド時にEARファイルにはパッキングされません。APサーバー毎の所定の位置にjarファイルを格納して下さい。

例:JBossへのドライバ系ライブラリの配置

JBossの場合は、実行するアプリケーションの設定セットフォルダ配下のlibフォルダの下にドライバ系jarファイルを格納します。
例えば、設定セットを「default」にした場合、以下のフォルダになります。

    ${JBOSS_HOME}/server/default/lib

JBoss4まではこのlib配下にはJBoss自体が使用するjarファイルがあらかじめ格納されていましたが、JBoss5以降はこのフォルダの中身は空になっています。 そのため、このlib配下は純粋にアプリケーションから呼び出されるドライバ系のjarファイルのみ格納することが出来ます。



J2EEサーバーとデータベースの接続

PEXA実行エンジンはJ2EEサーバーのデータソースという仕組みを使用してデータベースとの接続コネクションオブジェクトを取得します。
このデータソースは、PEXAエンジン側が想定しているJNDI名でJ2EEサーバーにあらかじめ登録しておく必要があります。
以下の2種類のデータソースをPEXA実行エンジンでは使用します。どちらも同じデータベースを参照する設定にして構いません。

  • PEXADB : データモデルの内容をDBから検索したりDBに保存したりする時に使用される。
  • PEXASEQDB : データモデルのプライマリキー値(ユニークな通番)を取得する際に使用される。
※PEXASEQDBはPEXADBに統合されました

設定の方法はJ2EEサーバー毎に異なります。一例としては、
  • JBossの場合:XML形式の設定ファイルをdeployフォルダに格納します。
  • Weblogicの場合:Weblogicが提供する管理コンソール画面からデータソースを登録します。
という形になります。詳細は実際に使用するJ2EEサーバーのドキュメントなどを参考にしてください。

例:JBossのデータソース設定

XML形式のデータソース設定ファイルを作成して、earファイルと同じ場所(deployフォルダ配下)に格納します。
このデータソース設定ファイルは接続したいDBの種類毎に内容が異なるため、以下の場所にあるサンプルを参照して下さい。

  • Oracleと接続する場合:${PRJHOME}/etc/config/jboss/oracle-PEXADB-ds.xml
  • PostgreSQLと接続する場合:${PRJHOME}/etc/config/jboss/postgres-PEXADB-ds.xml
上記以外にも、${JBOSS_HOME}/docs/examples/jcaの配下にサンプルがたくさんありますので、参照して下さい。


例:Weblogicのデータソース設定

Weblogicの場合は、管理コンソールツールの画面上からデータソース設定を行います。
この説明ではそこまで踏み込みませんので、詳細はWeblogicのドキュメントを参照して下さい。



J2EEサーバーにQueueとTopicを登録

PEXAエンジンでは、アプリケーションの機能を疎結合するためのModelEventという仕組みを提供しています。
このModelEventには機能呼出を非同期で行うモードがあるため、JMSのQueueおよびTopicを使用します。

JBoss4.2.3までは、このQueue/Topicの登録は省略することが出来ました。
PEXAのEJBモジュールデプロイのタイミングで自動で用意されていたためです。
しかし、JBoss5以降では明示的にQueue/Topicを設定ファイルで明示的に登録する必要があります。
これを行わずにModelEventによる非同期の呼出を行うと実行時エラーになります。

このQueue/Topicの登録方法は、JBoss5とJBoss6の間でも違いがあります。
以下、それぞれの設定ファイル、格納場所、及びサンプルファイルを示します。

JBoss5のJMS設定

JBoss5では、Queue/Topicの登録は以下のファイルに記述します。

    ${JBOSS_HOME}/server/{設定セットフォルダ}/deploy/messaging/destinations-service.xml
上記のXMLファイルにModelEvent機能が必要とするQueueとTopicを登録します。
上記のファイルに記入すべき内容は、ワークスペースにサンプルファイルがありますので参照して下さい。
    ${PRJHOME}/etc/config/jboss/jboss5/destinations-service.xml


destinations-service.xmlへの追記内容

   <!--==============================================================
   == Topic for PEXA ModelEvent
   ===============================================================-->
   <mbean code="org.jboss.jms.server.destination.TopicService"
      name="jboss.messaging.destination:service=Topic,name=modelEventTopic"
      xmbean-dd="xmdesc/Topic-xmbean.xml">
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>

   <!--==============================================================
   == Queue for PEXA ModelEvent
   ===============================================================-->
   <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=Queue,name=modelEventQueue"
      xmbean-dd="xmdesc/Queue-xmbean.xml">
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>
   <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=Queue,name=modelEventDefaultQueue"
      xmbean-dd="xmdesc/Queue-xmbean.xml">
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>
   <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=Queue,name=modelEventErrorQueue"
      xmbean-dd="xmdesc/Queue-xmbean.xml">
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>


JBoss6のJMS設定

JBoss6では、Queue/Topicの登録は以下のファイルに記述します。

    ${JBOSS_HOME}/server/{設定セットフォルダ}/deploy/hornetq/hornetq-jms.xml
上記のXMLファイルにModelEvent機能が必要とするQueueとTopicを登録します。
上記のファイルに記入すべき内容は、ワークスペースにサンプルファイルがありますので参照して下さい。
    ${PRJHOME}/etc/config/jboss/jboss6/hornetq-jms.xml


hornetq-jms.xmlへの追記内容

   <!--==============================================================
   == Topic for PEXA ModelEvent
   ===============================================================-->
   <topic name="modelEventTopic">
       <entry name="/topic/modelEventTopic"/>
   </topic>
   <!--==============================================================
   == Queue for PEXA ModelEvent
   ===============================================================-->
   <queue name="modelEventQueue">
       <entry name="/queue/modelEventQueue"/>
   </queue>
   <queue name="modelEventDefaultQueue">
       <entry name="/queue/modelEventDefaultQueue"/>
   </queue>
   <queue name="modelEventErrorQueue">
       <entry name="/queue/modelEventErrorQueue"/>
   </queue>



J2EEサーバーにメールセッションを登録

ServiceFrameworkのmailプロセス実行時には、APサーバーにデプロイされたjavax.mail.Sessionを使用します。
そのため、あらかじめ実行環境にメールセッションの設定を行う必要があります。

設定方法はアプリケーションサーバー毎に異なりますので、詳細はそれぞれのマニュアルなどを参照して下さい。 一例として、JBossにおけるメールセッションのデプロイ設定について説明します。

JBossのMail設定

JBossでは、以下のフォルダ配下にあるXMLファイルでメール設定を行います。

  %JBOSS_HOME%\server\{設定セット]\deploy\mail-service.xml
上記ファイルは元々上記のフォルダに格納されていて、設定サンプルが記述されています。
JBossではメール設定は1つしかデプロイできないので、このファイルの内容を直接書き換えて使用します。

このファイル中で記述すべき内容は以下となります。

  • JNDIName:JBossでは、「java:/PEXAMAIL」と指定します。
  • mail.user:メールヘッダに送信者として設定されます。
  • mail.from:メールヘッダに返信先として指定されます。
  • mail.smtp.host:SMTPサーバーのIPアドレスもしくはサーバー名を指定します。
  • mail.smtp.port:SMTPサーバーのポート番号を指定します。

以下、記述例です。

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mail-service.xml 62349 2007-04-15 16:48:15Z dimitris@jboss.org $ -->
<server>

  <!-- ==================================================================== -->
  <!-- Mail Connection Factory                                              -->
  <!-- ==================================================================== -->

  <mbean code="org.jboss.mail.MailService"
         name="jboss:service=Mail">
    <attribute name="JNDIName">java:/PEXAMAIL</attribute>
    <attribute name="User">nobody</attribute>
    <attribute name="Password">password</attribute>
    <attribute name="Configuration">
      <!-- A test configuration -->
      <configuration>
        <!-- Change to your mail server prototocol -->
        <property name="mail.store.protocol" value="pop3"/>
        <property name="mail.transport.protocol" value="smtp"/>

        <!-- Change to the user who will receive mail  -->
        <property name="mail.user" value="jboss-system"/>

        <!-- Change to the mail server  -->
        <property name="mail.pop3.host" value="pop3.nosuchhost.nosuchdomain.com"/>

        <!-- Change to the SMTP gateway server -->
        <property name="mail.smtp.host" value="192.168.100.1"/>
        
        <!-- The mail server port -->
        <property name="mail.smtp.port" value="25"/>
        
        <!-- Change to the address mail will be from  -->
        <property name="mail.from" value="jboss-system@atrris.com"/>

        <!-- Enable debugging output from the javamail classes -->
        <property name="mail.debug" value="false"/>
      </configuration>
    </attribute>
    <depends>jboss:service=Naming</depends>
  </mbean>

</server>



J2EEアプリケーションのJavaWebStart設定

現状のPEXA実行エンジンでは、画面はSwingベースのリッチクライアントのみをサポートしています。
そのため、テスト環境や本番環境における画面を起動する仕組みを"Java Web Start"で提供しています。
この仕組みを使用することで、利用者は常に最新バージョンのアプリケーションの画面を使用することが出来ます。

Java Web Startで画面を起動できるようにするには、以下の準備をあらかじめしておく必要があります。
それぞれの詳細について以降で説明します。

なお、ここで説明する準備作業には、プロジェクトファイルセットのトップフォルダに含まれているbuild-app.xmlというantのビルドファイルを使用します。
このビルドファイルを実行する際は環境変数をいくつかあらかじめ設定する必要があります。
設定すべき環境変数については以降でまとめて列挙してありますので、詳細は「J2EEアプリのビルド時に設定する環境変数」を参照してください。


JNLPファイルの作成

JNLPファイルは、JavaWebStartの仕組みによって起動させるJavaアプリケーションの起動設定を記述するXMLファイルです。

この内容が常に静的に決まるのであれば直接JNLPファイルを作成すればよいのですが、
PEXA実行エンジンによる画面起動では実行時に決まる動的なパラメータがいくつかあるため、ここではJNLPファイルを直接作成するのではなくJNLPファイルのテンプレート(Velocity向け)を作成します。 このJNLPテンプレートをPEXAが提供する画面起動Servletが読み込んで実行時パラメータとマージし、その結果を要求元のWebブラウザに返すことで画面起動処理が端末側でスタートします。

尚、一つのJ2EEアプリケーションで用意できるJNLPテンプレートに数の制限は特にありません。
一つのJ2EEアプリケーションが複数のログイン画面を提供する場合などは、このJNLPテンプレートファイルを複数用意する事になります。

このJNLPテンプレートファイルに記述する内容を以降で説明します。
PEXAの初期ファイルセットで元ネタとなる半完成のファイルが提供されていますので、それを元に作成していきます。
以下の手順で作成してください。

  1. 初期ファイルセットの元ネタファイルをコピー
  2. JNLPのtitle等を編集
  3. 画面起動パラメータを編集
  4. 画面が必要とするjarファイルを宣言

最後にSYSNプロジェクトを例にしたJNLPテンプレートの記述サンプルを用意していますので、参考にしてください。

初期ファイルセットの元ネタファイルをコピー

まず、PEXA初期ファイルセットで提供されている半完成の元ネタファイルをコピーします。 元ネタとなるファイルはプロジェクトの以下のファイルとなります。

  %PRJHOME%\etc\war\webstart\template\pexawebstart.jnlp.vm

上記のファイルをコピーして新しいファイルを任意のファイル名で作成してください。
ただし、以下の点に注意すること。

  • ファイル名後半部分(.jnlp.vm)は変更しないでください
  • このファイルは元ネタファイルと同じフォルダに作成してください

SYSNプロジェクトで"sysn.jnlp.vm"というJNLPテンプレートを作成する場合、以下のようなファイルになります。
  C:\develop\workspace\sysn\etc\war\webstart\template\sysn.jnlp.vm


JNLPのtitle等を編集

JNLPファイルにはタイトルなどを記述するタグがあります。
ここの部分は動作に関係しない箇所なので、任意の内容を記述してください。

記述例:

<jnlp codebase="${codebase}">
  <!--=========================================================================
  == Application Infomation
  ==========================================================================-->
  <information>
    <title>SYSN Login</title>
    <vendor>Atrris Co.,Ltd.</vendor>
    <description>SYSN Login</description>
  </information>


画面起動パラメータを編集

画面起動で必要となるパラメータをApplication Resourcesのセクションに記述します。
ここで必ず変更すべき箇所は以下の物です。

変更が必要なプロパティのキー 記入すべき内容
client_webstart_name JavaWebStartにより起動させるアプリケーションを表す任意の名称です。
ここで指定された名称は端末にアプリケーションのjarファイルをキャッシュするためのフォルダ名として使用されます。
client_start_page JavaWebStartにより起動させる画面のPageIDの指定です。
client_resource JavaWebStartで画面起動させる際にPEXAクライアントエンジンに渡すプロパティファイルの指定です。

上記の他に、必要に応じて変更できる物がいくつかあります。
以下にそれらを挙げておきます。

変更が可能なプロパティのキー 記入すべき内容
client_webstart_proxy JavaWebStartによる画面起動時に行われるサーバーとのHTTP通信で、Proxyサーバーを経由せずにダイレクト接続するための設定です。
NO_PROXYと指定されていると、Javaの設定でプロキシサーバー設定がされていたとしても強制的にダイレクト接続されます。

イントラネット内部でしか使用しないことがわかりきっている場合などで、Proxyサーバーを経由すると動作が遅くなる場合にNO_PROXYにしてください。
この設定自体を削除すればProxy設定が有効になります。
client_jvm_option 画面を起動するJavaVMに任意の引数を渡すことが出来ます。
もっと大きなヒープメモリを割り当てたい場合など必要に応じて編集してください。
client_invoke_mode 画面の起動モードの指定です。以下のどちらかを指定できます。
  • CONNECT : サーバーとの接続を行うモードです。省略時のデフォルトはこちら。
  • TRANSITION : サーバーと接続せず、画面遷移のみを行うモードです。
この設定自体を省略した場合は、従来通りサーバー接続有り(CONNECTモード)の扱いとなります。
client_cache_home client_cache_localと排他です。
アプリケーションを構成するjarファイルのキャッシュディレクトリの絶対パス指定です。
通常は特に指定する必要はありません。

特に指定が無い場合、アプリケーションのjarファイルをダウンロードしてキャッシュするディレクトリは ユーザーホームディレクトリ配下の".pexaWebStartCache"というディレクトリ配下になります。
例えばユーザーホームディレクトリが容量割り当ての少ないディスク上にある場合などに、別のディスク上の 固定ディレクトリにダウンロードさせるようにしたい場合などに使用してください。
client_cache_local client_cache_homeと排他です。
アプリケーションを構成するjarファイルのキャッシュディレクトリを極力ローカルディスクとなるように試みるフラグです。
指定する場合は値を"true"と指定してください。通常は特に指定する必要はありません。

Windows環境で移動プロファイルを使用しているような特殊な環境では、デフォルトの挙動ではサーバー側にキャッシュディレクトリが作成されてしまいます。
このサーバー側での割り当て容量が少ないようなケースではローカルディスクにキャッシュしたい場合があるので、そのような場合に指定してください。

また、ApplicationServer起動時のJVM起動オプションから値を取得することを想定しているパラメータがあります。
これは物理的にサーバーとして稼働する環境毎に設定を変えたいようなものとなります。
例えば、client_provider_urlの値を指定する場合はJVM起動オプションで

-Dclient_provider_url=192.168.1.100:1099
というようにパラメータ名の前に-Dをつけて指定します。
以下にそれらを挙げておきます。

JVM起動オプションから値をもらうプロパティのキー 説明
client_provider_url PEXA ClientFramework使用時に必須です。
起動した画面がJNDIでサーバーに接続するURLの指定です。
この設定に従って、画面は自分がリクエストを送信すべきサーバーに対して実際にネットワーク接続を行います。
内部的には、この値を使用して"java.naming.provider.url"というシステムプロパティが設定されてInitialContextが生成されます。
具体的にどのような値を設定すべきかはApplicationServer毎に異なるので、それぞれのマニュアルなどを参照してください。
client_initial_context_factory PEXA ClientFramework使用時に必須です。
起動した画面がJNDIでサーバーに接続する際に使用するInitialContextFacatory実装クラスの指定です。
内部的には、この値を使用して"java.naming.factory.initial"というシステムプロパティが設定されてInitialContextが生成されます。
具体的にどのような値を設定すべきかはApplicationServer毎に異なるので、それぞれのマニュアルなどを参照してください。
client_lock_release_interval 非必須です。
画面起動時のダウンロード処理用ロックの解放時間をミリ秒単位で指定します。
JavaWebStartでは画面起動時にjarファイルをサーバーからダウンロードするため、万一なんらかの理由で多重起動が発生するとダウンロードしたファイルの状態がおかしくなる可能性があります。 このような状況が発生しないように、ランチャ内部ではダウンロード処理中にロックをかけて、多重起動が発生した場合は後から起動した方を強制的に終了させています。 このロックは特に指定がなければダウンロード完了後にすぐ解放されますが、このオプションを使用することで、指定されたミリ秒だけ解放を遅延することが出来ます。
client_lock_confirm 非必須です。
画面起動時のダウンロード処理用ロック中に別のランチャが多重起動した場合に、メッセージボックスで確認メッセージを表示する指定です。
このオプション設定が存在していればONの扱いとなりますので、値はyes等の適当な値を指定してください。
問題解析時などに利用する物なので基本的には設定しないでください。

下記の例では、

  • client_lock_release_interval
  • client_lock_confirm
はJVM起動オプションで指定されていた場合にJNLPファイルに展開されるようにしてあります。

※注意!!!
j2seタグのjva-vm-args属性は編集しないでください。
これは画面起動ランチャに対するパラメータで起動画面に対するパラメータではありません。

記述例:

  <!--=========================================================================
  == Application Resources
  ==========================================================================-->
  <resources>
    <j2se version="1.6+" java-vm-args="-Xmx128M"/>
    <property name="client_jvm_option" value="-Xmx256m"/>
    <property name="client_webstart_codebase" value="${codebase}/app"/>
    <property name="client_webstart_name" value="sysnclient"/>
    <property name="client_webstart_proxy" value="NO_PROXY"/>
    <property name="client_cache_local" value="true"/>
    <property name="client_start_page" value="CP_SYSNLogin"/>
    <property name="client_resource" value="env/client/res/sysn_rich_client_plugins"/>
    <property name="client_provider_url" value="${client_provider_url}"/>
    <property name="client_initial_context_factory" value="${client_initial_context_factory}"/>
    <property name="client_invoke_mode" value="CONNECT"/>
#if(${client_lock_release_interval})
    <property name="client_lock_release_interval" value="${client_lock_release_interval}"/>
#end
#if(${client_lock_confirm})
    <property name="client_lock_confirm" value="yes"/>
#end    
    <jar href="app/pexawebstart.jar"/>
  </resources>


画面が必要とするjarファイルを宣言

画面アプリケーションを実行するのに必要なjarファイルの名前をここで列挙して宣言します。

元ネタファイル側では、記述例1のようにテンプレート側でファイルリストを展開するような記述になっています。
このままにしておければ、PEXAの画面起動Servlet側がwarファイル中のjarファイルをリストアップしてこの箇所に自動展開してくれます。
特に必要がない限りはこのままにしておいて下さい。

記述例1:jarファイルリストを自動展開させる場合

  <!--=========================================================================
  == Application Desc
  ==========================================================================-->
  <application-desc main-class="pexa.client.std.platform.launcher.PEXAWebStartRichClientLauncher">
#foreach($jarName in $jarNames)
	${jarName}
#end
  </application-desc>

なんらかの理由により自動展開ではなく直接記述したい場合は、記述例2を参考にして各プロジェクト毎に合わせて修正して下さい。
記述例2はJBossを想定した記述サンプルなので、最後の行にjbossall-client.jarが指定されています。
これがWeblogicの場合はwlclient.jarになります。

記述例2:手作業で記述しておく場合

  <!--=========================================================================
  == Application Desc
  ==========================================================================-->
  <application-desc main-class="pexa.client.std.platform.launcher.PEXAWebStartRichClientLauncher">
    <argument>pexaclient.jar</argument>
    <argument>pexashare.jar</argument>
    <argument>sysnclient.jar</argument>
    <argument>sysnshare.jar</argument>
    <argument>sysnmetainfo.jar</argument>
    <argument>commons-beanutils-core.jar</argument>
    <argument>commons-collections.jar</argument>
    <argument>commons-digester-1.7.jar</argument>
    <argument>commons-jxpath.jar</argument>
    <argument>commons-lang-2.3.jar</argument>
    <argument>commons-logging.jar</argument>
    <argument>commons-pool.jar</argument>
    <argument>velocity-1.5-dev.jar</argument>
    <argument>freemarker.jar</argument>
    <argument>jdom.jar</argument>
    <argument>jbossall-client.jar</argument>
  </application-desc>

上記以外にも追加のjarファイルが必要とされている場合はそのファイル名を追加してください。
ただし、ここに記述したファイルは以降で解説するJavaWebStart用のwarファイル中に含まれている必要があります。
任意のjarファイルをwarファイルに含める方法はJ2EEアプリケーションのビルドとデプロイの説明を参照してください。


JNLPテンプレートの作成例
<?xml version="1.0" encoding="Windows-31j"?>
<!--
- Copyright
-->
<!--===========================================================================
== Current-Module:   $HeadURL: http://pexa.atrris.com/repos/trunk/doc/material/developGuide/environment/server/xdocs/ja/pexa_env_j2eeserver_setup.xml $
== Release-Date:     $Date:: 2016-01-06 13:14:29 #$
== Release-Version:  $Revision: 8375 $
== First-Created-On: 2006/07/22
== First-Created-By: Daisuke Morishita
== Copy-Right-Owner:
============================================================================-->
<jnlp codebase="${codebase}">
  <!--=========================================================================
  == Application Infomation
  ==========================================================================-->
  <information>
    <title>SYSN Login</title>
    <vendor>Atrris Co.,Ltd.</vendor>
    <description>SYSN Login</description>
  </information>
  <!--=========================================================================
  == Application Security
  ==========================================================================-->
  <security>
    <all-permissions/>
  </security>
  <!--=========================================================================
  == Application Resources
  ==========================================================================-->
  <resources>
    <j2se version="1.6+" java-vm-args="-Xmx128M"/>
    <property name="client_jvm_option" value="-Xmx256m"/>
    <property name="client_webstart_codebase" value="${codebase}/app"/>
    <property name="client_webstart_name" value="sysnclient"/>
    <property name="client_webstart_proxy" value="NO_PROXY"/>
    <property name="client_start_page" value="CP_SYSNLogin"/>
    <property name="client_resource" value="env/client/res/sysn_rich_client_plugins"/>
    <property name="client_provider_url" value="${client_provider_url}"/>
    <property name="client_initial_context_factory" value="${client_initial_context_factory}"/>
    <jar href="app/pexawebstart.jar"/>
  </resources>
  <!--=========================================================================
  == Application Desc
  ==========================================================================-->
  <application-desc main-class="pexa.client.std.platform.launcher.PEXAWebStartRichClientLauncher">
#foreach($jarName in $jarNames)
	${jarName}
#end
  </application-desc>
</jnlp> 


バージョン情報プロパティファイルの作成

JavaWebStartでの画面起動時に、PEXAの画面実行エンジンは必要であればサーバー側のearファイル中に含まれる アプリケーション構成jarファイルをローカル端末にダウンロードしてきます。

このダウンロードされたjarファイルは、JNLPファイル中のパラメータで特に指定がされない限りは以下の場所に保存されます。

 {ローカル端末のユーザーホームディレクトリ}/.pexaWebStartCache/{サーバーIP+Port}/{アプリケーション名}
既にローカル端末にキャッシュ済みのjarファイルがある場合は、サーバー側のearファイル中に格納されているjarファイルと ローカルにキャッシュされたjarファイルの最終更新日時を比較し、サーバー側が新しければダウンロードし直します。

通常はこの方法のみで問題ないのですが、運用環境によってはローカル端末やサーバーマシンのOS時刻設定が正しくない場合もあるため、 意図通りの動作にならない可能性があります。このようなケースに当てはまる場合は、バージョン情報を記述したプロパティファイルを 作成してwarファイルに含めておくことで、必ず最新版のjarファイルを取得させることが出来ます。

このバージョン情報プロパティファイルは、プロジェクトワークスペースの以下の場所、ファイル名で作成します。
 /etc/war/webstart/app/version.properties
このファイル中に以下のような記述をすることで、この機能が有効になります。
バージョン番号には任意の文字列を指定する事が出来ます。

記述形式
	application.version={バージョン番号文字列}

記述サンプル
	application.version=1.11-b
このファイルがwarファイル中に存在している場合、PEXAの画面実行エンジンは以下のようにチェックします。
  1. サーバーのwarファイル中にversion.propertiesファイルがあるかチェック。あればサーバーバージョン番号取得。
  2. ローカル端末にversion.propertiesファイルがあるかチェック。あればローカルキャッシュバージョン番号取得。
  3. サーバーバージョンとローカルキャッシュバージョンを比較し、違っていれば全jarファイルをダウンロード。
  4. サーバーバージョンとローカルキャッシュバージョンを比較し、同一であれば最終更新日時を比較し、サーバー側が新しい物だけダウンロード。
  5. サーバーにversion.propertiesがなければ、jarファイルの最終更新日時のみでダウンロード対象を決定する。
上記のように、バージョン番号による比較を行ってもjarファイルの最終更新日の比較は必ず行います。
基本的にこの機能は確実に最新版のアプリケーション構成jarファイルをダウンロードするための物で、ダウンロードを抑止するための仕組みではありません。

また、この仕組みは必ずしも使用する必要はありません。version.propertiesファイルがなければ最終更新日時のみで判断します。
運用環境にリリースするたびにバージョン情報を書き換えるという作業が発生し、若干リリース作業の負荷が増えます。
最終更新日時の比較だけでは最新版の画面が使用できないような現象が発生する環境でのみ使用して下さい。


jarファイルに電子署名する

JavaWebStartという仕組みでは、デフォルトでは起動したアプリケーションはいくつかの動作に制限がかかります。
これは、出自が不明なプログラムがそのコンピューターに対して悪意ある行動をとれないようにするためですが、 この制限があるために業務アプリケーションにとって必要な処理まで制限がかかってしまいます。

この機能制限を回避するために、PEXAの画面起動ランチャーが含まれるjarファイルに対して電子署名を施します。
電子署名がされていれば信頼できるプログラムと見なされるために制限事項が無くなります。

この電子署名は以下の2ステップからなります。順に行ってください。

  1. 証明書の取得もしくは作成
  2. jarに電子署名する
証明書の取得もしくは作成

証明書は、外部の信頼できる機関(VeriSign等)に発行してもらうケースと、自前で作成するケースがあります。
前者は一番確実なケースであり、もし不特定多数が利用するようなアプリケーションを提供する場合は必ずこちらの手段をとります。
後者はイントラネット内でのみ限られた利用者が使用するようなケースで外部に委託するほどでは無いと判断されたケースです。

もし自前で作成する場合はbuild-app.xmlにantターゲットが用意されているので、以下のように実行すると証明書を作成できます。

  ant -f build-app.xml keystore
上記のように実行すると、以下のフォルダに証明書ファイルが作成されます。
  %PRJHOME%\etc\config\security\{プロジェクト名小文字}.keystore
例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\etc\config\security\sysn.keystore
なお、上記のantターゲットで作成された証明書は有効期間が10年として設定されています。
外部機関が発行する証明書の場合はもっと期間が短くなるのが普通で、期限がきれる度に証明書の更新を依頼し、 再取得した証明書で電子署名し直すという作業がシステム運用時の定期メンテナンスとして発生します。


jarに電子署名する

上記のように作成された自前の証明書か、もしくは外部機関によって発行された証明書を使用してjarファイルに電子署名を行います。
電子署名を行う対象のjarファイルは"pexawebstart.jar"というjarファイルです。

このjarファイルは元は以下のフォルダにあります。

  %PRJHOME%\lib\pexa\pexawebstart.jar
build-app.xmlのantターゲットが用意されているので、以下のようにを実行することで電子署名を行う事が出来ます。
  ant -f build-app.xml signjar
このantターゲットで電子署名されたjarファイルは以下のフォルダに出力されます。
  %PRJHOME%\etc\war\webstart\app\pexawebstart.jar
元のlib/pexa配下のjarファイルは元のままで、電子署名された結果が上記のフォルダに出力される形です。
なお、このantターゲットを使用して電子署名する場合は、 証明書の取得もしくは作成で説明したフォルダ及びファイル名で証明書がすでにあることが前提です。
証明書が別の名前だったり別の場所に保存されているのであれば手作業でpexawebstart.jarに電子署名して、その結果を上記の出力先フォルダに格納してください。

jarファイルへの電子署名はJDKに含まれているsignjarというツールで手作業で実行することが出来ます。



画面起動HTMLの作成

上記の準備が完了していれば、J2EEアプリケーションとしてビルドしてアプリケーションサーバーにデプロイされると Webブラウザから起動用URLにアクセスすることで画面をダウンロードして起動することが出来るようになります。

以下でその起動方法について説明します。

起動URL

PEXAクライアント実行エンジンによる画面起動URLは以下のような形式になります。

起動URLの指定形式:

  http://{サーバー名もしくはIPアドレス}:{ポート番号}/{プロジェクト名小文字}webstart/jnlp?target={JNLP名}.jnlp

これをSYSNプロジェクトを例にして、JBossをローカルマシン上で動かした際には以下のようなURLとなります。

起動URLの例:

  http://127.0.0.1:8080/sysnwebstart/jnlp?target=sysn.jnlp


画面起動HTML

実際には上記のようなURLをエンドユーザーに入力させることはほとんどしません。
その代わり、大抵は起動URLへのリンクを張ったログインページHTMLをあらかじめ準備しておいて、ユーザーはそのページ上のリンクをクリックすることで画面を起動します。 そのHTMLはやはりJ2EEアプリケーションのearファイル中に含めることも可能です。その場合は以下のフォルダにそのHTMLファイルを格納してください。 ログインページHTMLの格納フォルダ

  %PRJHOME%\etc\war\webstart
上記のフォルダに作成したHTMLを格納しておくと、J2EEアプリケーションのビルド時にearファイルに格納されます。

このHTMLにアクセスするには以下のようなURLとなります。

起動ログインページの例:(SYSNプロジェクトで、HTMLをlogin.htmlとした場合)

  http://127.0.0.1:8080/sysnwebstart/login.html

上記のHTMLファイルでは、以下のような形で画面起動用JNLPへのリンクを張ってください。

画面起動URLの指定例

<a href="jnlp?target=sysn.jnlp">Login to SYSN</a>



PEXA印刷フレームワークの設定

PEXA SupportFrameworkに含まれる印刷フレームワークでは、印刷物をサーバーサイドでPDFファイルとして生成する場合に Webコンテナが参照できる場所にファイルをスプールします。この時のスプールファイルを格納するフォルダのパスが、 JBossのバージョン毎に異なるため、各プロジェクトで実際に使用するJBossのバージョンに合わせて設定ファイルを 変更する必要があります。

変更すべき設定ファイルは、ワークスペースの以下のファイルになります。

    ${PRJHOME}/src/print/res/LocalPrintService.native
以下で、それぞれのバージョン毎にどのよう設定すべきかを説明します。

JBoss4の印刷フレームワーク設定

JBoss4.2系では、LocalPrintService.nativeで以下のように指定します。

#--------------------------------------------------------------------------------
# for JBoss4.2.x setting
#--------------------------------------------------------------------------------
local_spool_directory	deploy/jboss-web.deployer/ROOT.war/print/pdf_spool/


JBoss5の印刷フレームワーク設定

JBoss5系では、LocalPrintService.nativeで以下のように指定します。

#--------------------------------------------------------------------------------
# for JBoss5.0.x setting
#--------------------------------------------------------------------------------
#local_spool_directory	deploy/ROOT.war/print/pdf_spool/


JBoss6の印刷フレームワーク設定

JBoss6系では、LocalPrintService.nativeで以下のように指定します。

#--------------------------------------------------------------------------------
# for JBoss6.0.x setting
#--------------------------------------------------------------------------------
#local_spool_directory	deploy/ROOT.war/print/pdf_spool/



J2EEアプリケーションのビルドとデプロイ

プロジェクトの各作業者が作成した成果物とPEXA実行エンジンのライブラリを、J2EEアプリケーションとしてパッキングしてアプリケーションサーバーにデプロイする方法をここで説明します。
J2EEアプリケーションをパッキングする単位としては以下の3つがあります。

  • EARファイル(Enterprise ARchive) : クライアント及びサーバーサイドの成果物と必要なライブラリ全てを含む
  • EJBファイル(Enterprive Java Bean) : EJBのBeanクラスをEJBコンパイラをかけてビルドした物。EAR時もEARの中に含まれる。
  • WARファイル(Web ARchive) : クライアントサイドのみを含む。EAR時もEARの中に含まれる。
メンテナンスの容易さから、テスト環境や本番環境ではEARによるデプロイ方式が一番の推奨されます。基本的にはこの方式をとってください。
逆にメンテナンスが煩雑になりやすいことから、EJBの単独デプロイWARの単独デプロイは推奨しません。基本的にこれらはローカルテスト環境でのみ使用してください。

なお、ここで説明するEAR等のパッキングには、プロジェクトファイルセットのトップフォルダに含まれているbuild-app.xmlというantのビルドファイルを使用します。
このビルドファイルを実行する際は環境変数をいくつかあらかじめ設定する必要があります。
設定すべき環境変数については以降でまとめて列挙してありますので、詳細は「J2EEアプリのビルド時に設定する環境変数」を参照してください。

※注意!!!
J2EEアプリケーションを動作させるアプリケーションサーバーでは、柔軟な運用を可能とするためにClassLoaderが独自に実装され、 且つ複雑に絡み合うためにjarファイルをどこに格納するかの調整が非常に難しくなっています。

不適切な位置にjarファイルがあると、以下のような問題が発生することがあります。

  • コード上は問題ないのにClassCastExceptionが発生する
  • あるはずのクラスがClassNotFoundExceptionになる
  • NoClassDefFoundErrorが発生する
これは全てClassLoaderによるクラスローディングの仕組みによる物なので、この現象が発生しないようにどのjarファイルをEARやWARにパッキングする必要があります。
このような問題が発生しないようにするためにも、可能な限りテスト環境や本番環境にはEARによるデプロイを行う事が推奨されます。

EARによるデプロイ

必要な環境変数を全て設定した上で、以下のようにantターゲットを実行します。

  ant -f build-app.xml build-ear
これで以下のフォルダにearが作成されます。
  %PRJHOME%\build\ear\{プロジェクト名小文字}.ear
例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\build\ear\sysn.ear
このEARファイルをアプリケーションサーバー毎の所定の方法でデプロイします。
デプロイ用の専用ツールが用意されている場合もあればJBossのように所定のディレクトリにファイルを格納するだけで良いケースもあります。
詳細は実際に使用するアプリケーションサーバーのドキュメントを参照してください。

基本的にEARファイルはJ2EEアプリケーションが直接使用するライブラリ類も全て含めた形でパッキングされます。
そのため、これ以外で必要になる追加ライブラリはミドルウェア等のドライバ系(JDBCドライバや印刷ドライバなど)となり、 これらはEARの外部でアプリケーションサーバーが直接参照する形にするのが保守上で一番やりやすくなります。
これもデプロイツールで設定する場合や、実行時のJavaVM起動設定に含める場合などいくつか方法がありますので、詳細は実際に使用するアプリケーションサーバーのドキュメントを参照してください。

標準のantターゲットによってパッキングされる物以外でEARに含める必要がある追加jarファイルがある場合は、プロジェクトファイルセットの以下のフォルダに格納してください。

  %PRJHOME%\lib\j2ee\ear
例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\lib\j2ee\ear
ここにEARファイルに追加格納したいjarファイルを入れておくと、build-earターゲットを実行した際に自動的にEARに追加されます。


EJBの単独デプロイ

必要な環境変数を全て設定した上で、以下のようにantターゲットを実行します。

  ant -f build-app.xml build-ejb
これで以下のフォルダにearが作成されます。
  %PRJHOME%\build\tmp\ear\app\{EJB名}.jar
例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\build\tmp\ear\app\xxx.jar
ここに生成されたEJBのjarファイルをアプリケーションサーバー毎の所定の方法でデプロイします。
デプロイ用の専用ツールが用意されている場合もあればJBossのように所定のディレクトリにファイルを格納するだけで良いケースもあります。
詳細は実際に使用するアプリケーションサーバーのドキュメントを参照してください。

このケースではEJBのみをデプロイしているので、PEXA実行エンジンやプラグインクラスなどが利用するライブラリ等は別途アプリケーションサーバーに読み込ませる必要があります。 これもデプロイツールで設定する場合や、実行時のJavaVM起動設定に含める場合などいくつか方法がありますので、詳細は実際に使用するアプリケーションサーバーのドキュメントを参照してください。


WARの単独デプロイ

必要な環境変数を全て設定した上で、以下のようにantターゲットを実行します。

  ant -f build-app.xml build-war
これで以下のフォルダにwarが作成されます。
  %PRJHOME%\build\war\{プロジェクト名小文字}webapp.war
  %PRJHOME%\build\war\{プロジェクト名小文字}webstart.war
前者のxxwebapp.warは、HTML/JSP/Servletベースのウェブアプリをパッキングしたwarファイルです。
後者のxxwebstart.warは、PEXAクライアント実行エンジンで実行されるSwingベースのリッチクライアントのwarファイルです。

例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\build\war\sysnwebapp.ear
  C:\develop\eclipse\workspace\SYSN\build\war\sysnwebstart.ear
ここに生成されたWARファイルをアプリケーションサーバー毎の所定の方法でデプロイします。
デプロイ用の専用ツールが用意されている場合もあればJBossのように所定のディレクトリにファイルを格納するだけで良いケースもあります。
詳細は実際に使用するアプリケーションサーバーのドキュメントを参照してください。

標準のantターゲットによってパッキングされる物以外でWARに含める必要がある追加jarファイルがある場合は、プロジェクトファイルセットの以下のフォルダに格納してください。

  %PRJHOME%\lib\j2ee\war\webapp
  %PRJHOME%\lib\j2ee\war\webstart
例:SYSNプロジェクトの場合
  C:\develop\eclipse\workspace\SYSN\lib\j2ee\war\webapp
  C:\develop\eclipse\workspace\SYSN\lib\j2ee\war\webstart
ここにそれぞれのWARファイルに追加格納したいjarファイルを入れておくと、build-warターゲットを実行した際に自動的にEARに追加されます。
標準では、EARにパッキングされることを前提としたWAR構築を行っているため、WARファイルのみの単独デプロイを行う場合は基本的にライブラリが足りなくなります。
適宜それぞれの環境に合わせてjarファイルの調整を行ってください。


JavaWebStartで参照するライブラリ

JavaWebStartで画面を起動する場合は、ClientとAPサーバーの間でJNDIを使用してRMI通信を行います。
このJNDIの実装ライブラリは、各APサーバー毎に用意されているため、使用するAPサーバー毎に変わります。
実際にどのライブラリを使用するかの詳細は、各APサーバーのドキュメント等を参照してもらいたいのですが、
ここでは特にJBoss4.2.3とそれ以降のバージョンの違いについて説明します。

JBoss4.2.3までは、JNDIを使用するためのライブラリは1ファイルにまとまっていました。
そのため、JavaWebStart用のWARをビルドする際には以下の1ファイルのみをWARファイル中にパッキングしていました。

    ${JBOSS_HOME}/client/jbossall-client.jar
しかし、JBoss5からはこのjbossall-client.jarはファイルこそありますが、中にはclassファイルは入っておらず、 実際には同じフォルダ中にある個別の各jarファイルへのリンクが張られているだけとなっています。 このばあい、同一マシン上でクラスパスを設定する分には動作しますが、JavaWebStartの場合はjbossall-client.jarだけ参照しても動作しません。

そのため、JBoss5以降を環境変数JBOSS_HOMEで指定した場合は、実際に必要となる個別のjarファイルを抽出して WARファイル中にパッキングするようにビルドタスクが構成されています。

これは、環境変数JBOSS_HOMEさえビルド時に適切に設定されていれば各開発者は特に気にする部分ではありません。 ただ、バージョンが違えばWARの中身が変わってくるため、環境担当者は一応念頭に置くようにしてください。

なお、JBoss5系とJBoss6系の間でも、必要となるjarファイルに違いがあります。
以下にそれぞれでの対象のjarファイルを挙げておきます。


JBoss5のClientライブラリ

JBoss5系の場合

  • ${JBOSS_HOME}/client/concurrent.jar
  • ${JBOSS_HOME}/client/jboss-client.jar
  • ${JBOSS_HOME}/client/jboss-common-core.jar
  • ${JBOSS_HOME}/client/jboss-integration.jar
  • ${JBOSS_HOME}/client/jboss-javaee.jar
  • ${JBOSS_HOME}/client/jboss-logging-spi.jar
  • ${JBOSS_HOME}/client/jboss-remoting.jar
  • ${JBOSS_HOME}/client/jboss-security-spi.jar
  • ${JBOSS_HOME}/client/jboss-serialization.jar
  • ${JBOSS_HOME}/client/jbosssx-client.jar
  • ${JBOSS_HOME}/client/jnp-client.jar


JBoss6のClientライブラリ

JBoss6系の場合

  • ${JBOSS_HOME}/client/concurrent.jar
  • ${JBOSS_HOME}/client/jboss-client.jar
  • ${JBOSS_HOME}/client/jboss-common-core.jar
  • ${JBOSS_HOME}/client/jboss-ejb-api_3.1_spec.jar
  • ${JBOSS_HOME}/client/jboss-integration.jar
  • ${JBOSS_HOME}/client/jboss-logging.jar
  • ${JBOSS_HOME}/client/jboss-remoting.jar
  • ${JBOSS_HOME}/client/jboss-security-spi.jar
  • ${JBOSS_HOME}/client/jboss-serialization.jar
  • ${JBOSS_HOME}/client/jboss-transaction-api_1.1_spec.jar
  • ${JBOSS_HOME}/client/jbosssx-client.jar
  • ${JBOSS_HOME}/client/jnp-client.jar


JBoss6(EJB3)のClientライブラリ

JBoss6(EJB3)系の場合

  • ${JBOSS_HOME}/client/concurrent.jar
  • ${JBOSS_HOME}/client/hornetq-*.jar
  • ${JBOSS_HOME}/client/jboss-*.jar
  • ${JBOSS_HOME}/client/jbosssall-client.jar
  • ${JBOSS_HOME}/client/jbosssx-client.jar
  • ${JBOSS_HOME}/client/jbossjmx-ant.jar
  • ${JBOSS_HOME}/client/jbossjts-integration.jar
  • ${JBOSS_HOME}/client/jbossjts.jar
  • ${JBOSS_HOME}/client/netty.jar
  • ${JBOSS_HOME}/client/jnp-client.jar



J2EEサーバー起動時の実行時パラメータ

テスト環境や本番環境向けにアプリケーションサーバーを動かす際には、PEXA実行エンジンに対していくつか実行時パラメータを与えます。
これは、JavaVMに対する実行時パラメータとして以下のような形式で指定することになります。

-D{パラメータ名}={値}
アプリケーションサーバーのJavaVMに対する実行時パラメータの指定方法は、それぞれのアプリケーションサーバー毎に方法が異なります。
例えばJBossであれば起動スクリプトのrun.shやrun.bat実行前に環境変数JAVA_OPTSに-Dxxx=yyyの形式で与えることが出来ます。

例:JBossの起動スクリプト例
  set JAVA_OPTS=-Xmx512M 
  set JAVA_OPTS=%JAVA_OPTS% -Dclient_provider_url=jnp://127.0.0.1:1099
  set JAVA_OPTS=%JAVA_OPTS% -Dclient_initial_context_factory=org.jnp.interfaces.NamingContextFactory
  set JAVA_HOME=C:\Java\jdk1.6.0_11
  set JBOSS_HOME=C:\develop\jboss

  %JBOSS_HOME%\bin\run.bat -c SYSN2
詳細はそれぞれのドキュメントなどを参照してください。
以下で設定すべき実行時パラメータの内容を記述します。

JavaWebStartによる画面起動のための実行時パラメータ

JavaWebStartで端末側で起動されたSwingベースのリッチクライアント画面は、RMI通信によってサーバーサイドとやりとりします。
この時のRMI通信で使用する接続パラメータを指定する必要があります。

これはPEXAの画面起動サーブレットが読み込んでJNLPテンプレートとマージすることで起動した画面に渡されます。
以下のパラメータを指定してください。

[パラメータ名:client_provider_url]
RMI通信で接続する先のサーバーを表すURLです。
URL自体の書式は各アプリケーションサーバー毎に異なりますので、詳細はそれぞれのドキュメントを参照してください。

例:JBossの場合の指定方法

  -Dclient_provider_url=jnp://127.0.0.1:1099

[パラメータ名:client_initial_context_factory]
RMI通信で接続する際に使用するInitialContextFactoryの実装クラス指定です。
この実装クラスは各アプリケーションサーバーが提供していますので、どのクラスを指定すべきかそれぞれのドキュメントを参照してください。

例:JBossの場合の指定方法

  -Dclient_initial_context_factory=org.jnp.interfaces.NamingContextFactory


Windows環境におけるJBoss6の起動パラメータについて

JBoss4からJBoss5のWindows環境における起動バッチファイル(run.bat)では、 Unix/Linux環境向けのrun.shが引くようなrun.confに相当するファイルがありませんでした。 そのため、必要なオプション設定をした上でrun.batを呼ぶようなバッチファイルを別に作成して呼び出す形を取っていました。

これがJBoss6からは、${JBOSS_HOME}/bin/run.conf.batというファイルが追加されて、Unix/Linux環境と似たような構成となりました。 そのため、起動に必要なオプションはこのrun.conf.batというファイルに記述すれば良くなりましたが、 このファイルにおける環境変数設定の記述方法が少々間違っており、set命令の右辺全体をダブルクオートで囲ってしまっていて、 そのままでは正常に設定されません。これを修正する必要があります。

誤:

  set "JAVA_OPTS=-Xms128M -Xmx512M -XX:MaxPermSize=256M"
正:
  set JAVA_OPTS="-Xms128M -Xmx512M -XX:MaxPermSize=256M"
この間違い訂正を入れた上で、さらにPEXAエンジンが必要とするオプションを追加して下さい。



J2EEアプリのビルド時に設定する環境変数

以下に必須の環境変数を列挙します。

[環境変数名:PRJHOME]
必須の環境変数です。
ビルドを実行するコンピュータ上でのプロジェクトファイルセットのトップディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドする場合

  set PRJHOME=C:\develop\eclipse\workspace\SYSN

[環境変数名:J2EE_SERVER]
必須の環境変数です。
使用するアプリケーションサーバーの種類を指定します。現状で指定できるのは以下の物です。

  • jboss
  • weblogic

上記以外に、J2EE_SERVERで指定したアプリケーションサーバーに応じて設定すべき環境変数があります。
以下でそれぞれについて列挙します。

JBoss使用時に設定するビルド用環境変数

[環境変数名:JBOSS_HOME]
J2EE_SERVER=jbossの場合に必須の環境変数です。
使用するアプリケーションサーバーのインストール先ディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドする場合

  set JBOSS_HOME=C:\develop\jboss

[環境変数名:JBOSS_DEST_EAR]
J2EE_SERVER=jbossの場合で、且つbuild-app.xmlのinstall-earターゲットを使用する場合に必須。build-earターゲット実行時は不要。
EARファイルをコピーする先のディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドしてearファイルコピーまで場合

  set JBOSS_DEST_EAR=C:\develop\jboss\server\SYSN\deploy

[環境変数名:JBOSS_DEST_EJB]
J2EE_SERVER=jbossの場合で、且つbuild-app.xmlのinstall-ejbターゲットを使用する場合に必須。build-ejbターゲット実行時は不要。
EJBファイルをコピーする先のディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドしてEJBファイルコピーまで場合

  set JBOSS_DEST_EJB=C:\develop\jboss\server\SYSN\deploy

[環境変数名:JBOSS_DEST_WAR]
J2EE_SERVER=jbossの場合で、且つbuild-app.xmlのinstall-warターゲットを使用する場合に必須。build-warターゲット実行時は不要。
WARファイルをコピーする先のディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドしてWARファイルコピーまで場合

  set JBOSS_DEST_WAR=C:\develop\jboss\server\SYSN\deploy


Weblogic使用時に設定するビルド用環境変数

[環境変数名:WL_HOME]
J2EE_SERVER=weblogicの場合に必須の環境変数です。
使用するアプリケーションサーバーのインストール先ディレクトリを指す絶対パスを指定してください。

例:SYSNプロジェクトをローカル作業環境でビルドする場合

  set WL_HOME=C:\bea\wlserver_10.3



更新情報

  • 最終更新者 : $Author: tann $
  • 最終更新日時 : $Date:: 2016-01-06 13:14:29 #$
  • バージョン : $Revision: 8375 $



Copyright © 2006, Atrris Corporation