【问题标题】:jetty deploy war file码头部署战争文件
【发布时间】:2016-02-26 13:04:00
【问题描述】:

我创建了一个grails应用程序,它在IDEA中运行良好,然后我将它打包为一个名为api.war的war文件,由gradle.jetty(版本为9.3.7)部署后,我在chrome中访问它。@ 987654321@。直接在浏览器输入url“http://localhost:8080/api/json/xxx.json”,应用无法访问数据。

然后我将它重命名为root.war,这样我就可以通过根路径访问它了。应用程序工作正常!它可以完美访问数据。

如果我有两个应用程序,它们都像api.war。如您所见,根路径不能一半,我该怎么办?顺便说一句,我在部署后在webapps中找不到任何文件夹。是这个tomcat和jetty的区别?

【问题讨论】:

  • 也许你的应用中有相对路径。如果您将其部署为名为 ROOT.war,它将被放置在您服务器的根上下文中(在 url 中没有应用程序名称)。
  • 是的,我明白你的意思。我只是想知道如果我必须部署两个应用程序该怎么办?它们都有相对路径。
  • 让我明白。你有一个单一的战争文件,你想在不同的上下文中部署它们吗?
  • @josivan 是的,假设我复制它,所以我有 app1.war 和 app2.war,我希望它们都能正常工作。我现在要睡觉了,晚安:D

标签: tomcat jetty war


【解决方案1】:

您不需要复制您的战争文件。看看下面的步骤,这些可以帮助你:

  1. 将文件复制到文件系统中的文件夹中。例如在/opt/war
  2. 在您的 webapps 文件夹下创建两个 xml 文件。
  3. 定义每个 xml 如下所述;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
    "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id="app1" class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="war">/opt/war/app.war</Set>
    <Set name="contextPath">/app1</Set>
</Configure>

您需要为每个应用程序定义 id 和 contextPath

希望回答对你有帮助

【讨论】:

  • 在我问之前我已经尝试过了。当我将 contextPath 设置为/api 时,应用程序仍然尝试通过“localhost:8080/json/xxx.json”访问数据。实际上,数据的位置是“localhost:8080/api/json/xxx.json”。我只是想知道为什么在我将 contextPath 设置为/api 之后,应用程序仍然尝试通过错误的 url 访问数据。只有当我将 contextPath 设置为 / 时,一切都会正常工作。
  • 您是如何在应用程序中声明 api 上下文/路径的?
  • 在文件application.yml?我没有设置它。
  • URL="/json/xxx.json",然后swagger UI的函数会处理。这是 JavaScript。
  • 尝试删除初始斜线
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2011-11-01
相关资源
最近更新 更多