0

当我通过在 jetty/webapps 中复制它来部署我的应用程序时,它可以正常部署。但我想从外部目录部署它。为此,我创建了以下 myconf.xml:

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

<Configure id="myapp" class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="server">
        <Ref refid="Server" />
    </Set>
    <Set name="contextPath">/myapp</Set>
    <Set name="war">
        <SystemProperty name="myapp.war" /><!-- points to the external war -->
    </Set>
</Configure>

然后码头运行:

java -XX:-UseSplitVerifier -jar start.jar myconf.xml。

在控制台中,我看到正在部署应用程序,它访问数据库等,但是当我尝试访问它时,我得到了 404。非常感谢任何帮助:)

最好的问候,尤金。

4

1 回答 1

0

这不是你使用 Jetty 的方式。

选项 1:标准自动部署

  1. 由于您没有使用部署自定义任何内容,因此只需myconf.xml完全删除。
  2. 将你的复制myapp.war${jetty.home}/webapps/目录中。
  3. 启动码头。 $ java -jar start.jar

这称为自动 Web 应用程序部署

选项 2:标准上下文部署

现在,如果您想自定义部署,(例如,您想调整它所侦听的上下文路径,或者如果您想禁用 extractWar 进程,或者您有自定义初始化参数,或者您甚至想更改行为默认 servlet 等...),然后执行以下操作...

  1. 将您现有的复制myconf.xml${jetty.home}/webapps/myapp.xml(注意名称更改)
  2. 复制myapp.war${jetty.home}/webapps/myapp.war(注意,此文件的基本名称应与您的 XML 相同)
  3. 编辑您${jetty.home}/webapps/myapp.xml以更改部署行为(例如<Set name="contextPath">/app/1</Set>:)
  4. 启动码头。$ java -jar start.jar

这称为配置特定 WebApp 部署

选项 3:自定义上下文部署

如果您想将您的 war 文件保存在 以外的某个位置${jetty.home}/webapps/,您仍然需要执行以下操作:

  1. 将现有myconf.xml的 to 复制到${jetty.home}/webapps/myconf.xml.
  2. 把你留myapp.war在你想要的地方。例如/opt/webapps/myapp.war
  3. 编辑您${jetty.home}/webapps/myconf.xml的设置contextPathwar条目。
  4. 启动码头。$ java -jar start.jar
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
    "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="myapp" class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="server">
        <Ref refid="Server" />
    </Set>
    <Set name="contextPath">/myapp</Set>
    <Set name="war">
        <SystemProperty name="/opt/webapps/myapp.war" />
    </Set>
</Configure>

选项 4:Jetty Base 自动部署(在 Jetty 9.1+ 中可用)

还有另一种技术,从 Jetty 9.1 开始,使用拆分${jetty.home}${jetty.base}概念 + 上面的自动部署。

假设您已将 jetty-distribution-9.1.x 解压缩到/opt/jetty/其中,并且您的 webapp + 配置位于/opt/myapps/. 您可以执行以下命令。

[user]$ cd /opt/myapps

[myapps]$ java -jar /opt/jetty/start.jar --add-to-start=server,deploy,websocket,ext,resources
server          initialised in ${jetty.base}/start.ini (appended)
server          enabled in     ${jetty.base}/start.ini
deploy          initialised in ${jetty.base}/start.ini (appended)
deploy          enabled in     ${jetty.base}/start.ini
MKDIR: ${jetty.base}/webapps
server          enabled in     ${jetty.base}/start.ini
websocket       initialised in ${jetty.base}/start.ini (appended)
websocket       enabled in     ${jetty.base}/start.ini
server          enabled in     ${jetty.base}/start.ini
ext             initialised in ${jetty.base}/start.ini (appended)
ext             enabled in     ${jetty.base}/start.ini
MKDIR: ${jetty.base}/lib
MKDIR: ${jetty.base}/lib/ext
resources       initialised in ${jetty.base}/start.ini (appended)
resources       enabled in     ${jetty.base}/start.ini
MKDIR: ${jetty.base}/resources

[myapps]$ ls -l
total 16
drwxrwxr-x 3 user group 4096 Oct 31 08:32 lib/
drwxrwxr-x 2 user group 4096 Oct 31 08:32 resources/
-rw-rw-r-- 1 user group  369 Oct 31 08:30 start.ini
drwxrwxr-x 2 user group 4096 Oct 31 08:30 webapps/

[myapps]$ cat start.ini
--module=server
threads.min=10
threads.max=200
threads.timeout=60000
jetty.dump.start=false
jetty.dump.stop=false

--module=deploy
--module=websocket
--module=ext
--module=resources

[myapps]$ java -jar /opt/jetty/start.jar --list-config | grep -E "jetty.(base|home)="
 jetty.home=/opt/jetty
 jetty.base=/opt/myapps

[myapps]$ cp /home/user/project/myapp/target/myapp-1.0.war /opt/myapps/webapps/myapp.war

[myapps]$ java -jar /opt/jetty/start.jar
2013-10-31 08:35:58.919:INFO:oejs.Server:main: jetty-9.1.0.RC0
2013-10-31 08:35:58.939:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/opt/myapps/webapps/] at interval 1
2013-10-31 08:35:59.109:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /myapp, did not find org.apache.jasper.servlet.JspServlet
2013-10-31 08:35:59.189:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@223ff173{/myapp,file:/tmp/jetty-myapp.war-_myapp-any-/webapp/,AVAILABLE}{/myapp.war}

您会注意到您有 2 个可以使用的位置。

  • ${jetty.home}- 您的码头分布所在的位置
  • ${jetty.base}- 您的应用程序的特定配置和战争所在的位置

这是一个非常强大的选项,我只触及了其功能的表面。

于 2013-10-30T18:07:57.247 回答