我尝试通过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重定向到码头了,但我不明白如何用码头开始球衣应用...
答案 0 :(得分:0)
链接的示例/教程和之前链接的问题不兼容。
本教程适用于Jetty 6(现在不可能过时),并且完全使用了embedded-jetty,部署和一切都已启用。
您之前的问题设置com.sun.net.httpserver.HttpServer
,这不是一回事。
resourceBase
是您可能希望投放的任何webapp内容的根目录。
由于您使用的是简单的ContextHandler
,因此应该指向磁盘上的目录。
如果您使用的是WebAppContext
,那么应该指向您的webapp基目录(WEB-INF/web.xml
或WEB-INF/classes
等可选文件)
您定义的ResourceHandler
应使用ContextHandler.resourceBase
。
请注意ResourceHandler
适用于最简单,最简单的静态文件服务。
如果您的Web客户端有任何要求执行缓存查找,恢复下载,部分下载或mime类型控件,请使用DefaultServlet
。
另外,如果你想要的只是嵌入式jetty中的文件服务器,为什么要使用基本ContextHandler
的XML部署?只需写入您的嵌入式码头服务就容易多了。
一些可能对您有用的嵌入式jetty示例代码:
ResourceHandler
不是一个好选择的原因。