【问题标题】:Map a war to root - JAVA Azure web role将战争映射到根 - JAVA Azure Web 角色
【发布时间】:2013-09-03 17:55:07
【问题描述】:

我在 Eclipse 中创建了一个简单的 servlet(作为一个动态 Web 项目) 安装了 Azure SDK, 然后我使用 GUI 将项目打包为 windows azure,

我希望将应用部署到根文件夹,

所以我可以像这样访问它:

mysite.com/servlet?....

不喜欢:

mysite.com/war_name/servlet?....

参考这个答案: Deploying my application at the root in Tomcat

我添加到我的 server.xml

 <Context docBase="war_name" path="" reloadable="true" />

也试过了:

 <Context docBase="war_name" path="" reloadable="true" debug="0"><Context/>

我使用远程控制来验证 server.xml 是否包含此行(就在“主机”结束标记之前)

确实如此,

但我仍然无法按我的意愿访问我的应用程序。

我是 JAVA 新手,我使用的是 tomcat 7,这是我所做的截图:

【问题讨论】:

    标签: java azure tomcat7 azure-java-sdk


    【解决方案1】:

    将 java webapp(例如:war)映射到根上下文路径的最简单方法是删除原始的 tomcat_home/webapps/ROOT 并将您的 war 文件重命名为 ROOT.war(如果您以存档样式进行部署),或将您的文件夹重命名为ROOT(如果您以分解方式部署)。无需更改默认 server.xml

    确保war文件放在tomcat_home/webapps

    但是,如果您想保留您提到的战争文件名,请确保删除 tomcat_home/webapps/ROOT 文件夹以避免混淆

    这个答案有更多关于映射tomcat根上下文路径的信息:https://stackoverflow.com/a/5328636/179630

    【讨论】:

    • 好像是这样工作的……天蓝色有点奇怪……谢谢!
    【解决方案2】:

    我将其添加为答案,因为它包含代码,但它主要是对 gerrytan 答案的扩展。

    如果您使用的是 Azure Eclipse 插件,您可以在 Azure 部署项目中编辑 package.xml,以便 eclipse 自动构建您的 war 并将其重命名为 ROOT.war,然后再将其放入部署项目中。

    在 package.xml 的末尾,你应该有这样的一行:

    <component cloudmethod="copy" cloudsrc="auto" cloudupload="always" deploydir="%SERVER_APPS_LOCATION%" deploymethod="copy" importas="<my_app.war>" importmethod="auto" importsrc="<path to my_app project>" type="server.app"/>
    

    (应该在workerrole标签内)

    在这一行中,将“”替换为“ROOT.war”,如下所示:

    <component cloudmethod="copy" cloudsrc="auto" cloudupload="always" deploydir="%SERVER_APPS_LOCATION%" deploymethod="copy" importas="ROOT.war" importmethod="auto" importsrc="<path to my_app project>" type="server.app"/>
    

    并从部署中删除旧的 my_app.war。下次部署时,您的应用程序将部署为 ROOT。正如gerrytan所说,请确保事先删除tomcat中的/webapps/ROOT文件夹。

    编辑:

    另一个警告 - 如果您的应用程序包含 .gitignore 文件(或类似的点文件/目录,如 .svn),请将 &lt;defaultexcludes remove="**/.gitignore"/&gt; 添加到 windowsazurepackage 任务定义下的 package.xml。

    没有这个,Azure 插件(使用 Ant)不会删除 Azure 部署之间的 .gitignore 文件。这意味着当删除其他所有内容时,webapp 文件夹中的应用程序文件夹仍然存在。重新部署 Azure 时,tomcat 不会重新部署应用程序,因为它看到应用程序的文件夹在那里。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2015-04-12
      • 2021-07-25
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多