使用没有WAR文件的jetty启动java应用程序

时间:2014-10-07 17:02:47

标签: java nginx jersey jetty war

我尝试通过this tutorial启动Jersey + Jetty + Nginx,我不能使用war文件。如何启动我的java应用程序?

我通过右键单击BackendServer.java启动应用程序,然后单击"运行"在IDEA中或在终端java -cp /home/example/backend/build/WEB-INF/lib/backend.jar:/home/example/backend/libs/* com.example.backend.BackendServer中使用。

项目结构描述为here.

/opt/jetty/webapps/backend.xml

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC
    "-//Mort Bay Consulting//DTD Configure//EN"
    "http://www.eclipse.org/jetty/configure_9_0.dtd">

<!--
  Configure a custom context for serving javadoc as static resources
-->

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/</Set>
  <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>??????????</Set>
  <Set name="handler">
    <New class="org.eclipse.jetty.server.handler.ResourceHandler">
      <Set name="welcomeFiles">
        <Array type="String">
          <Item>index.html</Item>
        </Array>
      </Set>
      <Set name="cacheControl">max-age=3600,public</Set>
    </New>
  </Set>
</Configure>

应该是什么????????我应该在BackendServer.java中使用嵌入式jetty吗?我知道我已经将请求从nginx重定向到码头了,但我不明白如何用码头开始球衣应用...

1 个答案:

答案 0 :(得分:0)

链接的示例/教程和之前链接的问题不兼容。

本教程适用于Jetty 6(现在不可能过时),并且完全使用了embedded-jetty,部署和一切都已启用。

您之前的问题设置com.sun.net.httpserver.HttpServer,这不是一回事。

resourceBase是您可能希望投放的任何webapp内容的根目录。

由于您使用的是简单的ContextHandler,因此应该指向磁盘上的目录。

如果您使用的是WebAppContext,那么应该指向您的webapp基目录(WEB-INF/web.xmlWEB-INF/classes等可选文件)

您定义的ResourceHandler应使用ContextHandler.resourceBase

请注意ResourceHandler适用于最简单,最简单的静态文件服务。 如果您的Web客户端有任何要求执行缓存查找,恢复下载,部分下载或mime类型控件,请使用DefaultServlet

另外,如果你想要的只是嵌入式jetty中的文件服务器,为什么要使用基本ContextHandler的XML部署?只需写入您的嵌入式码头服务就容易多了。

一些可能对您有用的嵌入式jetty示例代码: