【问题标题】:Webapp address different from .war file nameWebapp 地址与 .war 文件名不同
【发布时间】:2013-10-09 10:22:18
【问题描述】:

如果调用已部署的 web 应用程序,我不知何故无法使用正确的网址得到这个东西。 如果我在 Eclipse 中创建我的 .WAR 文件 - 访问此 webapp 的网络地址始终是 .WAR 文件的名称。

例如,如果我的文件名是 myapp.war,我可以使用类似 http://adress:9999/myapp 的名称 现在我看到其他一些 webapps,warfile 名称和 url 不同。如果 webapp 已部署,但您不知道 webapp 的名称,因为它与 .war 文件名不同,该怎么办?

【问题讨论】:

  • 你使用的是哪个网络服务器?
  • Web 应用名称与上下文路径无关。通常默认情况下,应用程序服务器将 web 应用程序部署到 web 应用程序名称的上下文中,但不一定。您始终可以指定要部署的上下文。例如,在 tomcat 中有一个管理应用程序,您可以使用它来查看某个 Web 应用程序部署在哪个上下文中
  • @Juned Ahsan:据我所知,它是一个 webshere 网络服务器。那么在这种情况下,无法在 war 文件中看到名称?

标签: java windows web-applications war


【解决方案1】:

回答你的问题,

What if the webapp is deployed but you dont know the name of the webapp, 
because it´s different from the .war file name?

您将无法找到 WAR。就如此容易。

与您的问题无关,但让我详细说明这是如何发生的。举个例子使用 Maven 进行依赖管理的 Web 应用程序。

maven中有一个标签,可以指定用来设置应用程序的最终名称,可以用来访问应用程序。

pom.xml

<groupId>com.test</groupId>
<artifactId>testWar</artifactId>
<name>testWar</name>
<packaging>war</packaging>

这段代码告诉 maven 将应用程序构建为testWar.war

现在,如果您设置了,您可以指定访问应用程序的方式:

<finalName>mycontextpath</finalName> 

然后你的 finalName 被用于“部署”,你可以通过

访问你的 webapp

http://localhost:8080/mycontextpath/

默认情况下,几乎所有网络服务器都使用artifactID 作为部署路径,但您可以指定使用finalName,例如在使用Jetty 插件时:

<plugin> 
<groupId>org.mortbay.jetty</groupId> 
<artifactId>jetty-maven-plugin</artifactId> 
<configuration>   
<contextPath>${build.finalName}</contextPath>      
</configuration>             
</plugin> 

希望对您有所帮助。 :)

【讨论】:

    【解决方案2】:

    如果您想手动将 webapp 文件夹链接到 Tomcat,您可以这样做。我使用这种方法直接从项目开发文件夹中运行 webapps。易于更改或同时运行多个版本,编辑jsp+html+js文件可以立即在浏览器中刷新。生产部署是mywebapp.war打包上传到j2ee服务器。

    tomcat/conf/Catalina/localhost/mywebapp.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Context docBase="C:/projects/mywebapp/web_v3.1"
       reloadable="true" crossContext="true" >
    </Context>
    

    然后浏览地址http://localhost:8080/mywebapp/

    或者在 context.xml 文件中给出 path 属性,你可以在同一个文件中使用 docBase 和 path。

    tomcat/conf/Catalina/localhost/myapp2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Context docBase="C:/projects/myapp2/web" path="/myapp"
       reloadable="true" crossContext="true" >
    </Context>
    

    然后浏览地址http://localhost:8080/myapp/

    【讨论】:

      【解决方案3】:

      该路径称为“上下文路径”,它不依赖于您的战争文件名。

      基本上,在 Web Sphere 上部署 Web 应用程序时,您会遇到一个显示“上下文根”的屏幕。您应该给出您喜欢的任何名称,主要是应用程序名称。现在这成为您的 Web 应用程序访问的路径。例如如果您将“stocktrade”作为上下文根,那么您可以访问http://localhost/stocktrade/index.html

      如果是 weblogic 服务器,您可以定义 weblogic.xml 与 web.xml 并行。此文件应定义应用程序的上下文根。

      对于 JBOSS 服务器,可以使用 jboss.xml。您可以在 Internet 上搜索相应的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-23
        • 2016-12-06
        • 1970-01-01
        • 2013-04-26
        • 2012-02-28
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        相关资源
        最近更新 更多