2016-09-16 36 views
0

我有一個使用Apache CXF和JAX/RS實現API的java web應用程序。我們正在tomcat下運行我們的webapp。我需要在我的應用程序中實現一些調用外部服務的東西,這可能會再次調用我的應用程序。只有在CXF完成初始化並準備好接受外部API請求後,我才需要調用該外部服務。我已經檢查了servlet上下文偵聽器,CXFServlet,應用程序上下文刷新以及其他內容,但在CXF的進程中看不到任何調用時間足以開始接受請求的內容。或者我需要觸發一些來自tomcat的事件?如何知道Spring/CXF何時可以接受請求?

回答

0

如果在彈簧配置中將CXF依賴關係定義爲bean,它將在應用程序啓動時加載並準備就緒。如您所知,spring beans在應用程序啓動時加載並解析,您可以額外進行預初始化和初始化後函數,例如@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"/> 
+0

嗯,右,我有。問題在於,ApplicationContext在初始化週期的早期實例化了所有的Spring bean。不幸的是,CXF只能在晚些時候接受請求。我確信有一些可以挖掘的東西,我只是不確定它是什麼。 – fool4jesus

+0

您是否正在爲CXF servlet定義 1? – amitmah

+0

嗯,這是 3,但是。我不確定爲什麼CXF正在回答請求需要很長時間,但它確實如此。這就是爲什麼我希望有一些祕密回調或我失蹤的事件。 – fool4jesus

相關問題