错误
相关代码
启动类
package com.xxx.channel.riskcontrol;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ResourceServlet;
public class Launcher {
public static final int PORT = 81;
public static final String CONTEXT = "/";
private static final String DEFAULT_WEBAPP_PATH = "src/main/resources";
/**
* 创建用于开发运行调试的Jetty Server, 以src/main/webapp为Web应用目录.
*/
public static Server createServerInSource(int port, String contextPath) {
Server server = new Server();
// 设置在JVM退出时关闭Jetty的钩子。
server.setStopAtShutdown(true);
WebAppContext webContext = new WebAppContext(DEFAULT_WEBAPP_PATH, contextPath);
ContextLoaderListener listener = new ContextLoaderListener();
webContext.setInitParameter("contextConfigLocation", "classpath:business-xxxx.xml,classpath*:xx-context.xml,classpath*:xx-context.xml, classpath*:xxx.xml,classpath*:xxxxxx.xml,classpath*:xxxxxx.xml");
// webContext.setInitParameter("contextConfigLocation", "mvc-config.xml");
webContext.setResourceBase(DEFAULT_WEBAPP_PATH);
webContext.addEventListener(listener);
ServletHolder holder=new ServletHolder(new ResourceServlet());
webContext.addServlet(holder, "/resources/*");
holder = new ServletHolder(new DispatcherServlet());
holder.setInitParameter("contextConfigLocation", "classpath:mvc-config.xml");
webContext.addServlet(holder, "/");
holder=new ServletHolder(new DefaultServlet());
webContext.addServlet(holder, "*.html");
webContext.setDescriptor("src/main/webapp/WEB-INF/web.xml");
// 设置webapp的位置
// webContext.setClassLoader(Thread.currentThread().getContextClassLoader());
// webContext.setErrorHandler(null);
// webContext.addServlet(new ServletHolder(new DispatcherServlet(context)), "/*");
server.setHandler(webContext);
return server;
}
/**
* 启动jetty服务
*
* @param port
* @param context
*/
public void startJetty(int port, String context) {
final Server server = Launcher.createServerInSource(PORT, CONTEXT);
try {
server.stop();
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
public static void main(String[] args) {
new Launcher().startJetty(81, "");
}
}
探索
找了很多例子,最终怀疑是jetty配置springmvc上下文加载配置文件,不对,查询官网也没一个合适的例子,我是仿照这个例子:https://github.com/bkielczewski/example-... ,我和他的不同点在于他是通过注解去配置文件,而我这里是多个xml文件,有没相关经验者,提供下这段代码该如何写,让jetty正确加载spring配置文件,初始化spring的servlet。并且可以运行 java -jar xx.jar
运行这个项目。谢谢了~~相关敏感字用xxx代替了,另外还想问下,有没更好的内置jetty启动方法,一个jar包搞定,不需要容器。