java - 无法从服务类加载 ServletContextHandler 上的 contextConfigLocation 类

标签 java spring rest jetty cxf

我有一个带有 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/资源注册了两次。

我确定我不明白一些事情:)

最佳答案

找到了!

@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();
}

关于java - 无法从服务类加载 ServletContextHandler 上的 contextConfigLocation 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072237/

相关文章:

rest - 释放资源的POST方法-不支持的媒体类型

rest - 如何使用 TeamCity REST API 获取触发构建的 buildId?

java - 为什么在 Assert.assertNotNull 中调用 void 函数是有效的?

java - android.view.InflateException : Error inflating class androidx.constraintlayout.widget.ConstraintLayout

Java Spring + Maven 测试错误 : Request processing failed; nested exception is java. lang.NullPointerException

java - 如何通过api进行两次独立的修改

java - java中动态替换字符串内容

java - Spring Boot - Bean创建异常

spring - CDI Bean 访问 Spring bean?

java - 从应用程序获取 Hibernate session 计数