Java

Apache2.x / JBoss AS 4.2.x で仮想ホスト

JBoss AS 4.2.2 で仮想ホストを設定した際のメモです。

JBoss には JBossWeb という、Tomcat ベースにパフォーマンスや機能を強化したコンテナが内蔵されています。
jboss.org: JBoss Web
[Think IT] JBoss Enterprise Application Platformの全貌 – 第4回:JBoss Web – Tomcatエボリューション (1/3)

多くの設定方法はほとんど Tomcat と同じですが仮想ホストの設定はどうも違うみたいです(?)
# そもそも Tomcat にあまり詳しくないのですが

仮想ホストの設定方法は JBoss AS 4.0 については Web Developer Reference というドキュメントに書いてありました。
JBoss AS 4.2.x のドキュメントには同等のものが見つかりませんでした。
4.0 と設定方法は同じみたいですが、後々の参照のために設定箇所を記録しておきます。
ちなみに JBoss のエンタープライズ・商用向けバージョンである JBoss EAP 4.2 / 4.3 でも同じ設定になります。

以下は yusuke.homeip.net という virtualhost を追加する設定例になります。

1. deploy/jboss-web.deployer/server.xml の Engine 要素内に Host 要素を追加。

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
emptySessionPath="true" enableLookups="false" redirectPort="8443" />
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node2">
<Host name="yusuke.homeip.net"
autoDeploy="false" deployOnStartup="false" deployXML="false"
configClass="org.jboss.web.tomcat.security.config.JBossContextConfig">
<Alias>yusuke.homeip.net</Alias>
<Valve className="org.jboss.web.tomcat.service.jca.CachedConnectionValve"
cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
transactionManagerObjectName="jboss:service=TransactionManager" />
</Host>

2. yourwebapp/WEB-INF/jboss-web.xml に virtual-host 要素を追加

<jboss-web>
<context-root>/yourcontext</context-root>
<virtual-host>yusuke.homeip.net</virtual-host>
</jboss-web>

3. httpd.conf の VirtualHost ディレクティブ内に JkMountFile パラメータを追加

<VirtualHost *>
DocumentRoot /Users/yusukey/server/apache2/htdocs
ServerName yusuke.homeip.net
ServerAlias yusuke.homeip.net
JkMountFile conf/yusuke_uriworkermap.properties
</VirtualHost>

4. uriworkermap.properties 内に jk マッピングを記述

/yourcontext/*=loadbalancer
/yourcontext=loadbalancer

以上