在 Tomcat 服务器上部署独立 jar

Deploying stand-alone jar on Tomcat server

我在 java (jar) 中编写了一种代理服务器作为桌面应用程序。有没有一种简单的方法可以将其转换为 war,以便我可以将其部署到 Tomcat? 我不想添加任何功能,甚至不需要处理 http 请求。我想在后台 运行 jar,它将接受套接字。

我试过使用 gradle,但它似乎不知道它应该 运行 我的主要 class.

buildscript {
    repositories {
        mavenLocal()
    }
}

apply plugin: "war"

repositories {
    mavenLocal()
}

抱歉,我知道这是一个菜鸟问题,我以前没有做过类似的事情,而且似乎无法理解它。

你可以在你的 jar 中添加一个 "WEB-INF" 目录并在里面创建一个 "web.xml"。然后将其重命名为 [appname].war 并部署它。

"web.xml" 对于 Tomcat 7 示例:

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="ProxyApp" version="3.0" metadata-complete="false" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
    <display-name>Proxy App</display-name>
</web-app>

更新

要在您的应用程序启动时调用代码,请使用 ServletContextListener:

@WebListener
public class BootInitializer implements ServletContextListener {

 // what to do startup?
 @Override
 public void contextInitialized(ServletContextEvent sce) {
    System.out.println("Starting proxy application ...");
    // your main method content here ...
 }

 // what to do shutdown?
 @Override
 public void contextDestroyed(ServletContextEvent arg0) {

 }
}