gpt4 book ai didi

java - 嵌入式 Jetty 中的 Web 应用程序出现错误 404 未找到

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:13 26 4
gpt4 key购买 nike

我想部署一个带有嵌入式 Jetty 服务器的 Java Netbeans Webapp;服务器本身可以工作,但我总是收到以下错误:

enter image description here

我在网上搜索了大量示例,配置并重新配置了我的 web.xml;虽然我的配置看起来不错,但我无法让它工作。

我应该指出,当我使用内置的 Glassfish 服务器从 Netbeans 中运行应用程序时,它工作正常,这告诉我 web.xml 可能配置良好。

有人可以帮忙吗?

我的代码如下。

P.S. 我知道有人在 SO 上问过这个问题,但这些例子对我也不起作用。

项目结构:

enter image description here

WebContext 设置:

import org.eclipse.jetty.webapp.WebAppContext;

public class AppContextBuilder {

private WebAppContext webAppContext;

public WebAppContext buildWebAppContext() {
webAppContext = new WebAppContext();
webAppContext.setDescriptor(webAppContext + "/WEB-INF/web.xml");
webAppContext.setResourceBase("src/main/webapp");
webAppContext.setContextPath("/Holmes");

return webAppContext;
}
}

JettyServer.java:

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;

public class JettyServer {

private Server server;

public JettyServer() {
this(8585);
}

public JettyServer(Integer runningPort) {
server = new Server(runningPort);
}

public void setHandler(ContextHandlerCollection contexts) {
server.setHandler(contexts);
}

public void start() throws Exception {
server.start();
}

public void stop() throws Exception {
server.stop();
server.join();
}

public boolean isStarted() {
return server.isStarted();
}

public boolean isStopped() {
return server.isStopped();
}
}

Deploy.java(主方法):

import org.apache.log4j.Logger;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;

/**
*
* @author Motty Waldner <motty@timeworksny.com>
*/

public class Deploy {

private final static Logger log = Logger.getLogger(Deploy.class);

static JettyServer jettyServer = new JettyServer();

public static void main(String[] args) throws Exception {
// add hook to stop server upon service termination
// (service calls System.exit(0) upon termination,
// so it should work under normal circumstances)
addShutdownHook();

ContextHandlerCollection contexts = new ContextHandlerCollection();
Handler[] handlers = new Handler[]{new AppContextBuilder().buildWebAppContext().getHandler()};
contexts.setHandlers(handlers);

jettyServer = new JettyServer();

try {
jettyServer.start();
} catch (Exception e) {
log.error("Error Starting Jetty Server", e);
}
}

private static void addShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
jettyServer.stop();
log.info("Shutdown Hook is running: Jetty Server instance being stopped.");
} catch (Exception e) {
log.error("error", e);
}

log.info("Application Terminating ...");
}
});
}
}

Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Test App</display-name>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name> struts2 </filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

<session-config>
<session-timeout>120</session-timeout>
</session-config>

<servlet-mapping>
<servlet-name>StrutsController</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

</web-app>

在此先感谢您的帮助!

最佳答案

是否有可用的堆栈跟踪日志?

没有更多的日志,我只能根据经验想象它可能是由目录解析引起的,它在你的 IDE 中运行良好,因为它可以找到正确的文件而无需任何进一步的上下文配置人员,但情况可能并非如此您进行真正的部署。

关于java - 嵌入式 Jetty 中的 Web 应用程序出现错误 404 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com