開発環境のセットアップ
※目次は→
開発環境のセットアップを行います。
JDKのダウンロード
JBoss4.2はJDK5以上が必須です。JDK6は動くらしいですがまだサポート外なので、Sunのサイトより最新のJDK 5.0 Update 14をダウンロードします。
JBossのダウンロード
JBossはJBoss社がオープンソースで開発していましたが、現在はRed Hat社に買収されました。サイトはRed Hat社の公式ページとコミュニティサイトがあり、JBoss本体やドキュメントは基本的にコミュニティサイトからダウンロードします。
ここではhttp://labs.jboss.com/jbossas/downloads/より最新の jboss-4.2.2.GA.zipをダウンロードします。
Eclipseのダウンロード
EclipseにはJavaEEの開発をサポートするWTPというプラグインがあります。JBoss4.2に対応しているプラグインはEclipse3.3が必要です。http://www.eclipse.org/downloads/よりEclipse IDE for Java EE Developersをダウンロードします。
※2007/11/25現在、まだ日本語のLanguage Packはリリースされていません。日本語化したい場合はPleiadesを使用してください。
※このサイトではPleiadesで日本語化したEclipse 3.3をベースに解説します。
JDKのセットアップ
Windowsの場合はダブルクリックしてインストール、Linuxの場合は適当な場所にインストールしてください。ここでは/usr/local/java/jdk5にインストールするものとします。インストールしたディレクトリのbinディレクトリにコマンドのパスに入れておくと便利です。
JBossのセットアップ
インストールはダウンロードしたzipファイルを適当なディレクトリに展開します。ここでは/usr/local/jboss/jboss-4.2とします。
※maznは将来バージョンを変更することを考慮して、/usr/local/jboss/jboss-4.2は実際には/usr/local/jboss/jboss-4.2.2.GAへのシンボリックリンクとしています。
javaコマンドにパスが通っていれば展開したディレクトリのbinディレクトリの中にあるrun.shを実行すれば起動できると思いますがパスが通っていない場合はrun.confを書き換えます。
※Windowsではrun.confは読み込まれないため注意してください
# vi /usr/local/jboss/jboss-4.2/bin/run.conf
~ 省略 ~ # # Specify the location of the Java home directory. If set then $JAVA will # be defined to $JAVA_HOME/bin/java, else $JAVA will be "java". # #JAVA_HOME=”/opt/java/jdk” JAVA_HOME=”/usr/local/java/jdk5″ ~ 省略 ~
あとはrun.shを実行します。
# /usr/local/jboss/jboss-4.2/bin/run.sh ========================================================================= JBoss Bootstrap Environment JBOSS_HOME: /usr/local/jboss/jboss-4.2 JAVA: /usr/local/java/jdk5/bin/java JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true CLASSPATH: /usr/local/jboss/jboss-4.2/bin/run.jar:/usr/local/java/jdk5/lib/tools.jar ========================================================================= 16:26:35,231 INFO [Server] Starting JBoss (MX MicroKernel)... 16:26:35,236 INFO [Server] Release ID: JBoss [Trinity] 4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139) 16:26:35,241 INFO [Server] Home Dir: /usr/local/jboss/jboss-4.2.2.GA 16:26:35,243 INFO [Server] Home URL: file:/usr/local/jboss/jboss-4.2.2.GA/ 16:26:35,246 INFO [Server] Patch URL: null 16:26:35,248 INFO [Server] Server Name: default ~ 省略 ~ 16:27:12,733 INFO [Http11Protocol] Coyote HTTP/1.1を http-127.0.0.1-8080 で起動します 16:27:12,765 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009 16:27:12,782 INFO [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 37s:515ms
最後の行にStartedと出力されれば起動成功です。
Webブラウザで”http://localhost:8080“にアクセスしてJBossの画面が見られれば起動成功です。デフォルトの設定ではネットワーク上の他のPCからはアクセスできないので、必ずJBossを起動しているPC上からアクセスしてください。
停止は起動したシェル上でCtrl-Cを押すか、shutdown.shを実行してください。
# /usr/local/jboss/jboss-4.2/bin/shutdown.sh
ちなみに、maznの環境では最初以下のようなメッセージが出てうまく起動しませんでした。
~ 省略 ~
16:32:24,502 INFO [Server] Core system initialized
16:32:29,528 WARN [BasicMBeanRegistry] javax.management.MBeanRegistrationException: preRegister() failed: [ObjectName='jboss.remoting:service=NetworkRegistry', Class=org.jboss.remoting.network.NetworkRegistry (org.jboss.remoting.network.NetworkRegistry@19ec4ed)]
16:32:29,577 ERROR [MainDeployer] Could not create deployment: file:/usr/local/jboss/jboss-4.2.2.GA/server/default/conf/jboss-service.xml
org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.InvocationTargetException)
at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
at org.jboss.system.ServiceController.install(ServiceController.java:226)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
~ 省略 ~
16:32:29,784 INFO [Server] Shutdown complete
Shutdown complete
Halting VM
これは、Linuxのホストがきちんと設定されていないのが原因でした。/etc/sysconfig/networkでHOSTNAMEが設定されているのに、/etc/hosts にそのホスト名が記述されていないのが原因でした。/etc/sysconfig/networkのHOSTNAMEが”jboss-server”ならば、/etc/hostsにも以下のように記述することで解決できます。
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost jboss-server
OS起動時に自動でJBossを起動するには、起動スクリプトが必要になります。親切なことにJBossには起動スクリプトのサンプルがbinディレクトリに付属しています。 CentOSはRedHat Enterprise Linux (RHEL)クローンなので、jboss_init_redhat.shを使用することとします。まずはjboss4.2というファイル名で起動スクリプトのディレクトリにコピーします。
# cp /usr/local/jboss/jboss-4.2/bin/jboss_init_redhat.sh /etc/init.d/jboss4.2
起動スクリプトはそのままでは使用できないため、少し変更します(赤字部分)。
# vi /etc/init.d/jboss4.2
#!/bin/sh
# chkconfig: 35 99 1
# description: JBoss 4.2 Server
~省略~
#define where jboss is - this is the directory containing directories log, bin, conf etc
JBOSS_HOME=${JBOSS_HOME:-”/usr/local/jboss/jboss-4.2“}
#define the user under which jboss will run, or use ‘RUNASIS’ to run as the current user
JBOSS_USER=${JBOSS_USER:-”RUNASIS“}
#make sure java is in your path
JAVAPTH=${JAVAPTH:-”/usr/local/java/jdk5/bin“}
~省略~
上記の設定で”RUNASIS”は、デフォルトは”jboss”になっていると思います。 これはjbossというユーザで実行するという意味で、RUNASISを設定することで、rootで実行されます。今回はrootの実行に変更していますが、実運用ではjbossというユーザを作って、jbossユーザで実行することをお勧めします。また、その時は、jbossのインストールディレクトリ配下のファイルの所有者をjbossに変更してください。
あとは、OS起動時にこのスクリプトが実行されるようにします。起動スクリプトで以下のように記述しました。
# chkconfig: 35 99 01
これはchkconfig用のコメントで、ランレベル3,5で起動し、起動順番は99、停止順番は01という意味です。これをchkconfigに追加します。
# chkconfig --add jboss4.2
追加したことを確認します。
# chkconfig --list | grep jboss4.2 jboss4.2 0:off 1:off 2:off 3:on 4:off 5:on 6:off
開発時は自動起動したくない ので以下のようにoffにします。
# chkconfig jboss4.2 off
Eclipseのセットアップ
/usr/local/eclipse にダウンロードしたwtp-all-in-one-sdk-R-2.0-200706260303-linux-gtk.tar.gzを展開します。
# cd /usr/local # tar zxvf /root/wtp-all-in-one-sdk-R-2.0-200706260303-linux-gtk.tar.gz
日本語化プラグインをインストールします。
# cd /usr/local/eclipse # unzip /root/site-1.2.4.zip
プラグインを有効にします。赤字を追加してください。
# vi /usr/local/eclipse/eclipse.ini
-showsplash org.eclipse.platform -vmargs -Xms40m -Xmx256m -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
起動します。
※javaコマンドのパスが通っていないとエラーになります。
# /usr/local/eclipse/eclipse
maznの環境では、起動後メモリ不足でEclipseが落ちる現象が発生しました。今はeclipse.iniのXmxを512mにして使っています。