嵌入式Jetty服务器类路径问题

use*_*567 6 web.xml embedded-jetty

我正在尝试在嵌入式Jetty服务器上部署Web应用程序.我的应用程序在Windows环境中使用下面的代码在本地运行良好,但是当我在Linux服务器上将其部署为JAR文件时,看起来我的web.xml文件没有被选中.在构建JAR之前,我是否需要在下面的Descriptor或ResourceBase字段中更改某些内容?

static void startJetty() {
        try {
            Server server = new Server(9090); 
            WebAppContext context = new WebAppContext();
            context.setDescriptor("/WEB-INF/web.xml");                     
            context.setResourceBase("../DemoWithMultiChannels/src/");
            context.setContextPath("/");            
            context.setParentLoaderPriority(true);   
            server.setHandler(context);

            System.out.println("Starting Server!");             
            server.start(); 
Run Code Online (Sandbox Code Playgroud)

ach*_*n55 6

我有同样的问题,只是找到了解决方案:
当我从终端运行"java -jar ..."时工作正常,但当我从另一个项目中生成它时,web.xml没有被选中.

原因是web.xml路径错误,它与原始项目有关,我最终做的是:

context.setDescriptor(Launch.class.getResource("/WEB-INF/web.xml").toString());
Run Code Online (Sandbox Code Playgroud)

如果你不使用资源,你只需读取src文件夹中的常规文件,而不是.jar中的常规文件


小智 2

部署嵌入式Jetty如下:

主班

public static void main(String[] args) throws Exception {
   Server server = new Server(8085);         

    WebAppContext webContext = new WebAppContext();
    webContext.setDescriptor("WEB-INF/web.xml");
    webContext.setResourceBase("src/sim/ai/server/start");      
    webContext.setServer(server);
    webContext.setParentLoaderPriority(true);
    server.setHandler(webContext);

    server.start();
    server.join();
}
Run Code Online (Sandbox Code Playgroud)

网络.xml

<!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>
    <display-name>sim.ai.server.start</display-name>
    <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>
        com.sun.jersey.spi.container.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>sim.ai.server.start</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Jersey REST Service</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>   
Run Code Online (Sandbox Code Playgroud)

WEB_INF在jar文件同级文件夹下创建一个文件夹;复制web.xmlWEB_INF,例如:

sim/light.jar
sim/WEB-INF/web.xml
Run Code Online (Sandbox Code Playgroud)