開発環境構築

開発環境構築

実行環境構築

参考情報

目次

  1. はじめに
  2. JBoss5.0.X
  3. JBoss6.0.X


はじめに

ここでは、JBossのバージョンアップに関する参考情報を記載します。
JBossはメジャーバージョン番号が上がるたびに、挙動、ライブラリ、各種設定ファイルなどに変更が入ります。
そこで、ここ最近でのバージョンに関してJBoss4.2系からどのような変化があったかを簡単にまとめておきます。


JBoss5.0.X

JBoss5.0.Xでは、以下のような変更がありました。

以下でそれぞれについて説明します。

JBoss5:JBoss起動パラメータ

JBoss5.0.X系から、JavaVMが利用するメモリ領域のうち、Permanent領域のサイズが大きくなったようで、 以下の設定がJBossを起動するためのパラメータとして追加で必要となります。

  -XX:MaxPermSize=256m
上記の設定がJBossを起動するJavaVMに与えられていないと、JBoss起動時にOutOfMemoryエラーが発生します。 コマンドラインからの起動の場合でも、Eclipseからの起動の場合でも忘れずに追加するようにして下さい。 ただし、コマンドラインからの起動の場合は基本的に起動スクリプト、バッチファイル側で設定されるので特に気にする必要はありません。


JBoss5:Clientのライブラリ構成

JBoss4.2系では、EJBを呼び出すClient側が参照すべきJBossライブラリは以下の1ファイルのみでした。

%JBOSS_HOME%\client\jbossall-client.jar

JBoss5以降でもこのファイル自体は存在するのですが、実はファイルの中身はからっぽになっていて、 同じフォルダ内に多数格納されている他のjarファイルに対するリンク情報のみが入っています。 このため、例えばClientLauncherから画面を起動するような、 同じマシン内においてクラスパスを設定すれば良い場合は特に気にしなくていいのですが、 JavaWebStartなどでリモートのマシンから接続する場合は実際に使用するjarファイルを特定しておかないと動かすことが出来ません。

では、実際にはどのjarファイルがEJBを呼び出すために必要となるかですが、以下の物となります。

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

EARビルド時には、bulid-app.xmlのビルドターゲットが上記を選んでパッキングするので特に意識しませんが、 もし自分でEJBを呼び出すようなクライアントプログラムを作成する場合は一応気にしておいて下さい。 jbossall-client.jarを参照できる環境であれば特に気にする必要はありません。


JBoss5:EJBとWARの初期化順の変更

JBoss4.2系では、JBoss起動時の各モジュールの初期化順番は

  1. EJB
  2. WAR
だったのですが、JBoss5.0.X系ではなぜかこれが逆転しており、
  1. WAR
  2. EJB
となっています。

このため以前のPEXAエンジンではServlet初期化で起動エラーが発生していたのですが、 現在のPEXAエンジン実装ではEJBへは遅延接続するようにしたので特に影響はありません。


JBoss5:JMS関連の設定ファイルの変更

PEXAではModelEventの仕組みで非同期実行を行う際にJMSのQueue/Topicを使用します。
JBoss4.2.X系ではそもそもこの時に使用するQueue/Topicは特にJBoss側に設定する必要はありませんでした。 MessageDrivenBean起動時にJBoss側で自動的に用意してくれていたためです。

JBoss5.0.Xでは、このQueue/Topicを設定ファイルで事前に登録しておくことが必須となりました。
もし登録しておかなければModelEventの機能を使用した際にエラーとなります。

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>


JBoss5:Root.warのパス変更

PEXAの印刷フレームワークでは、サーバーサイドで印刷処理としてPDFファイルを作成した場合は、 Servletコンテナが直接参照できるROOT.war配下にスプールフォルダを作成してPDFを出力します。 このROOT.warはJBossのバージョン毎に配置場所が変化しており、PEXA側のプロパティファイル

	%PRJHOME%\src\print\res\LocalPrintService.native
で環境に合わせて指定する必要があります。

JBoss5.0.Xではここで指定するパス設定は以下となります。

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



JBoss6.0.X

JBoss6.0.Xでは、以下のような変更がありました。

以下でそれぞれについて説明します。

JBoss6:JBoss起動パラメータ

JBoss5.0.X系で必要になったパラメータの

  -XX:MaxPermSize=256m
に加えて、JBoss6.0.Xでは以下のパラメータも必須となっています。
  -Djava.endorsed.dirs=%JBOSS_HOME%\lib\endorsed
※%JBOSS_HOME%は各自の実環境にあわせること

上記の設定はコマンドラインからの起動でも、Eclipseからの起動でも必要になっています。
ただし、コマンドラインからの起動の場合は基本的に起動スクリプト、バッチファイル側で設定されるので特に気にする必要はありません。


JBoss6:JBoss起動バッチファイル

Windows環境でJBossをコマンドラインから起動する場合に使用するバッチファイルとして、

	%JBOSS_HOME%\bin\run.bat
というファイルがあります。

このバッチファイルに対応する、(run.shに対するrun.confのような)起動パラメータを記述するようなファイルは以前のバージョンでは存在せず、 このrun.batを呼び出す別のバッチファイルを自分で作成して、その中で環境変数設定をするということになっていました。

JBoss6.0.Xでは、新たにrun.conf.batというファイルが追加になっています。 このファイルはrun.batの先頭で呼び出されるようになっているので、Linux環境でのrun.confファイルのようにJBossに渡したいパラメータを このrun.conf.batに記述できるようになっています。

ただし、このrun.conf.batには記述間違いが含まれていて、そのままでは動作しません。
具体的には、SETコマンドの右辺側が全てダブルクオートで囲まれてしまっていて、本来の書式になっていません。

誤:

  set "JAVA_OPTS=-Xms128M -Xmx512M -XX:MaxPermSize=256M"
正:
  set JAVA_OPTS="-Xms128M -Xmx512M -XX:MaxPermSize=256M"
この上記のような間違いをrun.conf.batファイル中全般を見渡して修正し、その上で自分が与えたい起動パラメータを追加して下さい。


JBoss6:JavaEEのライブラリ構成

JBoss6ではJavaEE自体のバージョンが上がっているため、JavaEE関連のライブラリも変わっています。
EJB及びServletに関するインタフェースなどは以下に含まれるようになっています。

  • ${JBOSS_HOME}/client/jboss-ejb-api_3.1_spec.jar
  • ${JBOSS_HOME}/client/jboss-servlet-api_3.0_spec.jar
これらのライブラリはコマンドラインからJBossを起動する場合には特に気にすることはありませんが、EclipseからJBossを起動する場合にはクラスパス設定に含める必要があります。 また、その場合はワークスペースに含まれている%PRJHOME%\lib\pexa\jboss-j2ee-api.jarはクラスパスから外して下さい。


JBoss6:Clientのライブラリ構成

JBoss5.0.Xで変更になったjarファイル群から、さらに変更が発生しています。
中身がからっぽのjbossall-client.jarがあるのは変わりませんが、実際に必要となるjarファイルが以下となっています。

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:EJBとWARの初期化順が元に戻る

JBoss5.0.Xでなぜか逆転していたEJBとWARの初期化順序がまた元に戻りました。
以下の順番でJBoss起動時に初期化されます。

  1. EJB
  2. WAR


JBoss6:JMS関連の設定ファイルが更に変更

JMSのQueue/Topicの登録が事前に必要なのはJBoss5.0.Xと変わりませんが、その設定ファイルがまた変更されました。

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>


JBoss6:ROOT.warのパス変更

JBoss6.0.Xでは、ROOT.warのパスはJBoss5.0.xと同じとなっています。
JBoss4系とは異なっていますので、PEXA側のプロパティファイル

	%PRJHOME%\src\print\res\LocalPrintService.native
で環境に合わせて指定する必要があります。

JBoss6.0.Xではここで指定するパス設定は以下となります。

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



更新情報

  • 最終更新者 : $Author: morishita $
  • 最終更新日時 : $Date:: 2011-05-12 17:58:02 #$
  • バージョン : $Revision: 6403 $



Copyright © 2006, Atrris Corporation