我有一个使用 Apache CXF 和 JAX/RS 来实现 API 的 Java Web 应用程序。我们在 tomcat 下运行我们的 webapp。我需要在我的应用程序中实现一些调用外部服务的东西,这可能会再次调用我的应用程序。只有在 CXF 完成初始化并准备好接受外部 API 请求后,我才需要调用该外部服务。我已经检查了 servlet 上下文监听器、CXFServlet、应用程序上下文刷新和其他东西,但是看不到任何在 CXF 开始接受请求的过程中足够晚调用的东西。或者我是否需要触发来自 tomcat 的某些事件?
最佳答案
如果您在 spring 配置中将 CXF 依赖项定义为 bean,它将在应用程序启动时加载并准备就绪。如您所知,spring bean 在应用程序启动期间被加载和解析,您还可以具有预初始化和后初始化函数,例如@PostConstruct。
来自引用的示例配置 https://www.luckyryan.com/2013/06/15/apache-cxf-exception-handler-for-jaxrs-rest/ :
<!-- rest container -->
<jaxrs:server id="sampleSerivceREST" address="/rest">
<jaxrs:serviceBeans>
<ref bean="sampleServiceRESTGateway"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
<bean class="com.luckyryan.sample.service.ExceptionHandler"/>
</jaxrs:providers>
</jaxrs:server>
<!-- soap container -->
<jaxws:endpoint
id="sampleServiceSOAP"
implementor="#sampleServiceSOAPGateway"
address="/soap"
serviceName="sampleSoapService"/>
关于java - 如何知道 Spring/CXF 何时准备好接受请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539402/