我的 JBoss 7.1 (standalone.xml) 配置如下:
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
<virtual-server name="default-host" enable-welcome-root="false" default-web-module="mydefaultapp">
<alias name="localhost"/>
<alias name="www.mydefaultapp.it"/>
</virtual-server>
<virtual-server name="secondApp" enable-welcome-root="false" default-web-module="secondApp">
<alias name="www.secondapp.com"/>
</virtual-server>
</subsystem>
'mydefaultapp' 将“/”定义为 jboss-web.xml 文件中的 context-root 并与 mod_jk 完美运行:
<VirtualHost *:80>
ServerName www.mydefaultapp.it
DocumentRoot /var/www/mydefaultapp
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/mydefaultapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
SetEnvIf Request_URI "/foto/*" no-jk
JkMount / ajp13
JkMount /* ajp13
</VirtualHost>
现在我有那个没有定义上下文根的'secondapp'战争,所以它假设'/ secondapp'。如果我尝试使用 '/' context-root 部署它,我会收到此错误:
安装:无法处理部署“foo.war”的阶段安装原因:org.jboss.msc.service.DuplicateServiceException:服务 jboss.web.deployment.default-host./.realm 已注册
如果我使用 '/secondapp' context-root 部署它,则没有任何效果。只需 www.secondapp.com 以 404 not found 错误结尾。
一个可能的解决方案是使用具有此配置的 http 代理:
<VirtualHost *:80>
ServerName www.secondapp.com
ProxyPass / http://localhost:8080/secondapp/
ProxyPassReverse / http://localhost:8080/secondapp/
</VirtualHost>
这似乎有效,但是......我无法访问 jsf 资源(我不断收到登录表单,我的安全性存在一些问题)
您能否建议我拥有两个域的正确配置,与 JBoss 7.1 + Apache2 + mod_jk 进行两次战争。记住第一个有“/”上下文根,而第二个有“/secondapp”