在一个Jetty Fat Jar中部署Jersey REST服务WAR

3
我需要将一个简单的Jersey REST服务打包进一个Jetty中的单个fat jar, 这样在共享后就可以整个运行。请问有没有人能指引我如何完成?我无法找到适用于我的用例的相关说明。
提前感谢!
1个回答

3

我相信您想要的是将Jetty嵌入到您的jar包中,这样您就可以使用以下命令启动应用程序:

java -jar myApp.jar

你的REST服务将会启动并运行,无需在Jetty(或Tomcat等)中部署war文件或关注其他依赖项。是这样吗?
如果是这样,请查找如何将Jetty嵌入到您的应用程序中。以下是一些示例: 将Jetty作为Servlet容器嵌入 嵌入Jetty 如果您能提供更多细节,那将是很好的。
编辑
public static void main(String[] args) throws Exception {
    Server server = new Server(9001);
    Context context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.addServlet(new ServletHolder(new ServletContainer(new ResourceConfig(YourRestService.class)));
    server.start();
}

导出为 .jar 文件,然后在终端中运行:

java -jar myApp.jar

您的REST服务将在端口9001上可用。


Pergon,这正是我想做的,但是我的应用程序是一个WAR而不是JAR,因为它包含了Jersey REST服务。使用您在链接中提供的信息,我能否对WAR使用相同的方法?最好能够得到一个JAR。 - user1965449
请注意,jar文件和war文件之间没有太大的区别(基本上这些文件只是编译类压缩而成...在war的情况下,有.jsp、.xml等文件)。不要导出为.war,而是导出为.jar。确保在主方法中启动jetty(请检查链接)。 - PerGon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接