gpt4 book ai didi

java - 在jetty9上使用xml部署war文件

转载 作者:行者123 更新时间:2023-12-01 11:01:38 25 4
gpt4 key购买 nike

我正在尝试在 jetty9 上部署一个 war 文件,如果我将其放入 webapps 文件夹中,它可以正常工作,但我想使用 xml 文件来部署它。

这是我遇到的异常:

2015-10-22 17:36:39.593:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@61a485d2{/myapp,file:///tmp/jetty-openbd.war-_myapp-any-1881803922382581907.dir/webapp/,null}{/opt/openbd.org/openbd.war}
java.lang.NullPointerException
at org.eclipse.jetty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:77)
at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:474)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:510)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1510)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:214)
at org.eclipse.jetty.start.Main.start(Main.java:457)
at org.eclipse.jetty.start.Main.main(Main.java:75)

和我的 xml:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/myapp</Set>
<Set name="war">/opt/openbd.org/openbd.war</Set>
</Configure>

我尝试过 <Set name="extractWAR">true</Set>运气不好。

我还使用过--debug这没有提供任何线索..

我做错了什么? Jetty版本:jetty-9.3.3.v20150827

最佳答案

因此,对于您的场景,您需要了解如何 ${jetty.base}${jetty.home}操作。

第 1 步:${jetty.home}目录

在任何地方下载并解压 jetty 发行版到您想要的任何路径。

现在这是您的${jetty.home}目录。

这些是关于 ${jetty.home} 的最重要事实

  • 请勿编辑它。
  • 不要改变任何事情。
  • 不要删除任何内容。
  • 别管它。

您可以有多个${jetty.home}如果需要的话,可以在你的机器上找到目录。它们不会互相踩踏或造成任何问题。

第 2 步:${jetty.base}目录

${jetty.home} 外部创建一个新目录目录。

这个新的、现在是空白的目录是您的 ${jetty.base} 的开始.

一个${jetty.base}表示 Jetty 特定实例的配置。您可以有多个${jetty.base}目录也是如此。每个目录代表正在运行的 Jetty 的唯一实例。

${jetty.base} 的基本配置是start.ini这是一组用于启动 jetty 的命令行参数。 (与所有 Eclipse RT 项目的工作方式类似)

初始化您的${jetty.base}使用命令行工具,您可以利用 ${jetty.home}/start.jar及其 --add-to-start=<module>设施。

示例:

$ cd /path/to/my.base
$ java -jar /path/to/jetty-dist/start.jar --add-to-start=http,deploy,websocket

恭喜您刚刚初始化了 ${jetty.base}目录。

第 3 步:添加您的 WebApp

既然您选择了deploy在上述步骤中,您现在有一个 ${jetty.base}/webapps Jetty 使用它来自动部署其中找到的各种 Web 应用程序。

请参阅 the Deployment Architecture 上的文档了解它寻找什么以及它如何部署。

就您而言,只需输入您的 myapp.xml进入${jetty.base}/webapps/目录。

Note: Using the deploy module as-is, will only monitor and deploy from the ${jetty.base}/webapps/ directory. No other directory is looked in, or monitored for web applications. Not even the ${jetty.home}/webapps/ directory.

可以通过 ${jetty.base}/start.ini 中的属性配置受监控的目录。 。简单设置jetty.deploy.monitoredDir=<relative-path>并且将监视此新路径(无需编辑jetty-deploy.xml)。受监控的目录配置为始终位于指定的 ${jetty.base} 下目录。视为${jetty.base}目录可以位于文件系统上的任何位置,使用 ${jetty.base} 应该没有问题设施。

第 4 步:运行 Jetty

这也不是那么难。

$ cd /path/to/my.base
$ java -jar /path/to/jetty-dist/start.jar

恭喜您拥有一个正在运行的 jetty 。

第 5 步:(额外)列出配置

有两种方法可以查看配置的样子。

  1. 在启动 jetty 之前查看服务器配置。
$ cd /path/to/my.base
$ java -jar /path/to/jetty-dist/start.jar --list-config
  • 完全启动后查看服务器状态。
  • $ cd /path/to/my.base
    $ java -jar /path/to/jetty-dist/start.jar jetty.server.dumpAfterStart=true

    关于java - 在jetty9上使用xml部署war文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com