Java 在Tomcat服务器上部署独立jar

Java 在Tomcat服务器上部署独立jar,java,tomcat,gradle,jar,war,Java,Tomcat,Gradle,Jar,War,我用java(jar)编写了一种代理服务器作为桌面应用程序。有没有一种简单的方法可以将它转换为战争,这样我就可以在Tomcat上部署它? 我不想添加任何功能,甚至不需要处理http请求。我想在后台运行jar,在那里它将接受套接字 我尝试过使用gradle,但它似乎不知道它应该运行我的主类 buildscript { repositories { mavenLocal() } } apply plugin: "war" repositories { ma

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

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

buildscript {
    repositories {
        mavenLocal()
    }
}

apply plugin: "war"

repositories {
    mavenLocal()
}
对不起,我知道这是一个无趣的问题,我以前没有做过类似的事情,只是我似乎无法理解它。

您可以在jar中添加一个“WEB-INF”目录,并在其中创建一个“WEB.xml”。然后将其重命名为[appname]。war并部署它

Tomcat 7的“web.xml”示例:

<?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>

桌面应用程序和web应用程序解决不同的用例。你的桌面应用程序需要有一个带有Main方法的类。然后jvm使用它来执行应用程序。Web应用程序遵循不同的初始化范式,其中ServletAPI是开发应用程序的主要方式。如果不进行修改,您的应用程序将无法作为web应用程序运行。一种简单的方法是创建一个servlet,并在init方法中使用与主方法类似的代码。在web.xml中配置该servlet并尝试它是否工作。看起来Tomcat成功部署了它,但我认为我的主类没有运行。没有,因为主类不会在服务器环境中调用,正如Sangram Jadhav先生所说。我会更新的。
@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) {

 }
}