我们可以在Java EE中为一个项目添加多个上下文根吗?
我试过这个但不适合我:
<wls:context-root>/ayz</wls:context-root>
<wls:context-root>/abc</wls:context-root>
答案 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>
(使用您要访问的应用程序)引用共享库。
如果您希望它引用多个上下文根,则创建尽可能多的虚拟应用程序。