Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(12345);
server.addConnector(connector);
final ServletHolder servletHolder = new ServletHolder(new CXFServlet());
final ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/data-service");
context.addServlet(servletHolder, "/*");
context.addEventListener(new ContextLoaderListener());
context.setInitParameter("contextConfigLocation", "classpath:spring-server.xml");
//设置字符编码,否则默认是使用机器的编码,一般是ISO-8859
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
context.addFilter(new FilterHolder(filter), "/*", EnumSet.allOf(DispatcherType.class));
server.setHandler(contextHandler);
server.start();
server.join();
对于第二种方式,在构造ContextHandler时,稍微有所不同,同时需要注入当前应用的ApplicationContext
public class EmbedDataServiceServer implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public void start() throws Exception {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(12345);
server.addConnector(connector);