将多个上下文根添加到单个应用程序

时间:2013-04-30 10:52:54

标签: java java-ee

我们可以在Java EE中为一个项目添加多个上下文根吗?

我试过这个但不适合我:

<wls:context-root>/ayz</wls:context-root>
<wls:context-root>/abc</wls:context-root>

5 个答案:

答案 0 :(得分:2)

一个Web应用程序只能有一个“上下文根”。如何定义它取决于您使用的容器。例如,在WebSphere中,您可以在application.xml中定义它。

<module id="Module_1332249637478">
  <web>
    <web-uri>XxxWeb.war</web-uri>
    <context-root>/xxx</context-root>
  </web>
</module>

答案 1 :(得分:0)

当然可以,

如何,取决于应用程序。服务器/网络容器。例如,在tomcat中,如果打开/conf/server.xml,您将看到如何定义上下文,例如

<Context path="/hello" docBase="../../../../work/hello" >

path - /hello - is the web path
docBase - "../../../../work/hello - is the file system location

大多数Web容器只允许您通过在ROOT目录下添加web目录来定义上下文,只要它符合Web目录标准。

但在大多数情况下,您可能希望将目录放在不同的位置并使用Context标记。

答案 2 :(得分:0)

如果您正在使用tomcat转到conf \ Catalina \ localhost文件夹的tomcat。添加test1-server.xml和test2-server.xml。在test1-server.xml和test2-server.xml文件中添加以下内容

<Context path="/test-server" docBase="D:\\pathtofilessystemwhere test-server islocated \test-server" />

test1-server.xml和test2-server.xml的上下文路径可以不同 当你运行tomcat时,它将从两个上下文路径

加载

答案 3 :(得分:0)

据我所知,在jboss术语中,每个应用只能有1个。它可以使用ejb3注释的无状态bean以多种方式定义(在本例中):

@Stateless
@WebService(
    name = "MyService",
    targetNamespace = "http://myurl.co.uk/MyContext/MyService",
    serviceName = "MyService")
@WebContext(contextRoot = "/MyContext" , urlPattern = "/MyService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@HandlerChain(file = "META-INF/jaxws-handlers-server.xml")
public class MyIface {

    // Inject the persistence layer
    @EJB(beanInterface=IPersistenceLayerBean.class)
    private IPersistenceLayerBean persistenceLayer;

    @WebMethod
    public Response doSomething() {
        return persistenceLayer.helloWorld();
    }

}

您可以在应用程序中定义多个接口,每个接口都有自己的“urlPattern”,但它们必须共享相同的“contextRoot”,否则您将看到相应的错误。

答案 4 :(得分:0)

在weblogis中执行此操作的一种方法是将应用程序部署为共享库。 使用空的web.xml和weblogic.xml创建另一个应用程序(允许调用dummy),其中<library-ref> and <context-root>(使用您要访问的应用程序)引用共享库。 如果您希望它引用多个上下文根,则创建尽可能多的虚拟应用程序。