java - 在 Tomcat 服务器上部署独立的 jar

标签 java tomcat gradle jar war

我用 java (jar) 编写了一种代理服务器作为桌面应用程序。有没有一种简单的方法可以将其转换为 war ,以便我可以将其部署在 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>

更新

要在您的应用程序启动时调用代码,请使用 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) {

 }
}

关于java - 在 Tomcat 服务器上部署独立的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38389079/

相关文章:

java - GSON - Json 到 Java 解析 - 如何保留尾随零

java - 如何启用 java HotSpot VM 编译器

gwt - 在端口 80 上链接 apache web 服务器,在端口 8080 上链接 tomcat webapp

gradle - ./gradle上的-x参数的格式是什么?

gradle - 更新到Java 1.9后缺少库

build - Gradle 构建 : does someone tried alternative build script with alternative setting. Gradle ?

java - web.xml 上的 servlet 条目中的 load_on_startup 的可能值是什么?

java - 如何检查android中的设备语言?

java - edittext 声明为 final,settext 不工作

java - 本地主机上的服务器 Tomcat v8.0 服务器无法启动 - JSF、CDI、JAVA、TOMCAT、ECLIPSE