2014年6月10日火曜日

WildFly 8.1.0に乗せ換える

もともとGlassFish 3を利用していたが、Java EE 7サーバーに切り替える際にWildFly 8に乗せ換えた。
しかし、乗せ換えは単純にいかなかったので、今後挑戦する勇者のために、うまくいく作業記録を記すことにした。

wildflyのインストール・起動まで
あまり難しい作業でない。
ただし、RedHat系の作業手順であるので、Debian系の場合一部異なる。
chownをしているのは、wildfly.confでJBOSS_USER=wildflyと設定したため。

wget http://download.jboss.org/wildfly/8.1.0.Final/wildfly-8.1.0.Final.tar.gz
tar xzvf wildfly-8.1.0.Final.tar.gz
cd wildfly-8.1.0.Final
./bin/add-user.sh
cp ./bin/init.d/wildfly.conf /etc/default/wildfly.conf
cp ./bin/init.d/wildfly-init-redhat.sh /etc/init.d/wildfly
vi /etc/default/wildfly.conf
chown -R wildfly:wildfly .
chkconfig --add wildfly
service wildfly start

wildflyの設定コンソール

./bin/jboss-cli.sh
connect

DerbyのJTA登録
一番つまずくところは、module追加時のdependencies設定をするところである。入れ忘れると謎のエラーに悩まされる。
GlassFishと違いJNDIは必ず[java:]で始まらければならない。そのため、WARも修正が必須になる場合が多い。

module add --name=derbyclient --resources=/......./derbyclient.jar --dependencies=javax.api,javax.transaction.api,javax.servlet.api
:shutdown(restart=true)
/subsystem=datasources/jdbc-driver=derby:add(driver-name="derby",driver-module-name="derbyclient",driver-class-name="org.apache.derby.jdbc.ClientDriver40",driver-datasource-class-name="org.apache.derby.jdbc.ClientDataSource40",driver-xa-datasource-class-name="org.apache.derby.jdbc.ClientXADataSource40")
/subsystem=datasources/data-source=DBNAME:add(driver-name="derby",jndi-name="java:jboss/jdbc/DBNAME",connection-url="jdbc:derby://localhost/DBNAME;user=user;password=password")
:reload

Java Mail登録
こちらもJNDIは必ず[java:]で始まらければならない。

/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=gmail:add(host="smtp.gmail.com",port="465")
/subsystem=mail/mail-session=gmail:add(jndi-name="java:jboss/mail/Gmail",from="example@repy.info")
/subsystem=mail/mail-session=gmail/server=smtp:add(outbound-socket-binding-ref="gmail",ssl="true",username="example@repy.info",password="password")
:reload

VirtualHost設定
VirtualHostを利用するには、WARの/WEB-INF/jboss-web.xmlに対して<virtual-host>と<context-root>を設定しておく。
また、利用するVirtualHostを前もって設定しておく必要がある。設定していないとデプロイに失敗する。

/subsystem=undertow/server=default-server/host="example.repy.info":add

デプロイ

deploy /......./example.war


今回はすべてjboss-cliから行う手順にしたが、一部を除いて Management console から実行することもできる。
ただ、VirtualHostは Management console から設定できないので要注意である。