我需要在我的www.foo.com JBoss7.1环境中配置两个网站: www.bar.net和www.bar.net。
Apache站点配置示例(除站点名称外,它们彼此相似):
<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.foo.com
DocumentRoot /var/www/foo
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/foo>
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 "/photos/*" no-jk
JkMount / ajp13
JkMount /* ajp13
</VirtualHost>在JBoss 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="bar">
<alias name="localhost"/>
<alias name="www.bar.net"/>
</virtual-server>
<virtual-server name="foo" enable-welcome-root="false" default-web-module="foo">
<alias name="www.foo.com"/>
</virtual-server>
</subsystem>虽然这两个应用程序都有jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>java:/jaas/foo</security-domain>
<context-root>/</context-root>
</jboss-web>部署foo.war会产生以下结果:
安装:未能处理部署"foo.war“的阶段安装
原因: org.jboss.msc.service.DuplicateServiceException:服务jboss.web.部署. Service host./.领域已经注册
正确的配置是什么?错误在哪里?
发布于 2013-02-25 08:21:40
只需将foo添加到我的配置中就足够了,现在它可以很好地使用mod_jk。我在博客上写道:http://fabiobozzo.wordpress.com/2013/02/25/multiple-web-applications-with-jboss-and-apache/
发布于 2013-02-04 11:26:30
我认为问题在于您为这两个应用程序定义了相同的上下文根。您不能在sametime拥有两个具有相同上下文根的应用程序。一种可能的解决方案是为每个应用程序定义不同的上下文(分别为/foo和/bar ),并在每个Apache中使用ProxyPass指令。
<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.foo.com
...
ProxyPass / http://yourjbossserver:port/foo/
ProxyPassReverse / http://yourjbossserver:port/foo/
</VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.bar.com
...
ProxyPass / http://yourjbossserver:port/bar/
ProxyPassReverse / http://yourjbossserver:port/bar/
</VirtualHost *:80>通过这种方式,您可以直接通过地址访问应用程序: www.bar.com和www.foo.com。(请注意,如果有一个Apache充当代理,并且使用它自己的虚拟主机,则不需要定义JBoss虚拟主机)。
一个简单但完整的示例是(在本例中,我已经将运行在与apache相同的机器上的jboss控制台配置为可以从www.foo.com访问):
<VirtualHost *:80>
ServerName www.foo.com
ProxyPass / http://localhost:8080/jmx-console/
ProxyPassReverse / http://localhost:8080/jmx-console/
</VirtualHost>注意,您需要在地址的末尾添加一个反斜杠。
https://stackoverflow.com/questions/14684069
复制相似问题