java - 无法从服务类加载 ServletContextHandler 上的 contextConfigLocation 类
问题描述
我有一个 Spring 项目和几个服务。我正在尝试在其中包含一堆休息服务。问题是嵌入式码头服务器位于 @Service 实例中,由于许多原因我无法触摸它。因此,我尝试使用我的新要求配置该服务器,但我不能。
我尝试使用项目逻辑之外的经典方法进行丢弃,并且它有效:
public class Starter {
public static void main( final String[] args ) throws Exception {
Server server = new Server( 8888 );
// Register and map the dispatcher servlet
final ServletHolder servletHolder = new ServletHolder( new CXFServlet() );
final ServletContextHandler context = new ServletContextHandler();
context.setContextPath( "/" );
context.addServlet( servletHolder, "/rest/*" );
context.addEventListener( new ContextLoaderListener() );
context.setInitParameter( "contextClass", AnnotationConfigWebApplicationContext.class.getName() );
context.setInitParameter( "contextConfigLocation", AppConfig.class.getName() );
server.setHandler( context );
server.start();
server.join();
}
}
但是,如果我尝试在 spring 上下文服务中做同样的事情,它就不起作用。
如果我在其中使用相同的初始化,我会得到:
WARN Can't find the the request for http://localhost:8888/rest/api/people's Observer
我尝试在 applicationContext.xml 中进行修改以包含其余需要的类,但在这种情况下 /api/ 资源被注册了两次。
我确定我不明白一些事情:)
解决方案
找到了!
@Bean
@DependsOn( "cxf" )
public Server jaxRsServer() {
JAXRSServerFactoryBean factory = RuntimeDelegate.getInstance().createEndpoint( jaxRsApiApplication(), JAXRSServerFactoryBean.class );
factory.setBus(cxf()); // <-- THIS!
factory.setServiceBeans( Arrays.< Object >asList( peopleRestService() ) );
factory.setProviders( Arrays.< Object >asList( jsonProvider() ) );
return factory.create();
}
推荐阅读
- javascript - AngularJS 如何从需要查询字符串参数和使用角度资源发布数据的 URL 获取数据?
- javascript - 修改 SVG 文件以在 SVG 标签中包含图形的宽度和高度
- php - 访问作为对象一部分的数组似乎失败
- sql - 如何获得计数以显示计数为 0 的 zip 计数
- c - 如何初始化嵌套结构
- wordpress - 如何防止古腾堡在画廊上传中调整图像大小?
- python - 如何在 sqlalchemy 中使用线程?
- docker - 赛普拉斯 ci 缺少 libgtk-x11-2.0.so.0
- python - 基于 pyparsing 的拆分
- javascript - Uncaught ReferenceError: boxChecked 什么时候没有定义?