首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss 7多根上下文web应用程序

JBoss 7多根上下文web应用程序
EN

Stack Overflow用户
提问于 2013-02-04 09:46:39
回答 2查看 12.9K关注 0票数 3

我需要在我的www.foo.com JBoss7.1环境中配置两个网站: www.bar.net和www.bar.net。

Apache站点配置示例(除站点名称外,它们彼此相似):

代码语言:javascript
复制
<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中,我有:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<?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./.领域已经注册

正确的配置是什么?错误在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-25 08:21:40

只需将foo添加到我的配置中就足够了,现在它可以很好地使用mod_jk。我在博客上写道:http://fabiobozzo.wordpress.com/2013/02/25/multiple-web-applications-with-jboss-and-apache/

票数 0
EN

Stack Overflow用户

发布于 2013-02-04 11:26:30

我认为问题在于您为这两个应用程序定义了相同的上下文根。您不能在sametime拥有两个具有相同上下文根的应用程序。一种可能的解决方案是为每个应用程序定义不同的上下文(分别为/foo和/bar ),并在每个Apache中使用ProxyPass指令。

代码语言:javascript
复制
<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访问):

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName www.foo.com
    ProxyPass         /     http://localhost:8080/jmx-console/
    ProxyPassReverse  /     http://localhost:8080/jmx-console/
</VirtualHost>

注意,您需要在地址的末尾添加一个反斜杠。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14684069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档