无法从Service Class加载ServletContextHandler上的contextConfigLocation类

问题描述 投票:1回答:1

我有一个Spring项目和几个服务。我正试图在其中加入一堆休息服务。问题是嵌入式jetty服务器在@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 / resource已注册两次。

我确定我不明白的东西:)

java spring rest jetty cxf
1个回答
0
投票

找到了!

@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();
}
© www.soinside.com 2019 - 2024. All rights reserved.