2010-01-18 92 views
0

我有兩個使用CXF來使用Web服務的代碼項目。當我從項目A調用項目B時,我調用的方法會收到空參數。我打開了日誌記錄,並且入站消息確實包含正確的參數。我也嘗試從SoapUI(一個web服務測試工具)調用我的服務。這正如我所期望的那樣傳遞參數。任何人有任何想法出了什麼問題?通過CXF的Web服務調用提供空參數

服務接口:

@WebService 
public interface IShortlistService { 

    public IShortlist createOrUpdateShortlist(@WebParam(name = "sessionId") String sessionId, 
     @WebParam(name = "datastoreInstance") String datastoreInstance, 
     @WebParam(name = "datastoreRecordId") String datastoreRecordId); 
} 

服務IMPL:

@Name("shortlistService") 
@WebService(endpointInterface = "com.oobjects.shortlist.service.IShortlistService", serviceName = "ShortlistService") 
@Features(features = "org.apache.cxf.feature.LoggingFeature") 
@Transactional 
public class ShortlistService implements IShortlistService { 
    public IShortlist createOrUpdateShortlist(String sessionId, String datastoreInstance, 
     String datastoreRecordId) { 
    // At this point all inputs are null 
    } 
} 

記錄入站的消息,證明它是確定:

INFO: Inbound Message 
---------------------------- 
Encoding: UTF-8 
Content-Type: text/xml; charset=UTF-8 
Headers: {cache-control=[no-cache], content-type=[text/xml; charset=UTF-8], connection=[keep-alive], host=[mypc.mycompany.com:8080], content-length=[391], SOAPAction=[""], user-agent=[Apache CXF 2.2.5], Accept=[*/*], pragma=[no-cache]} 
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:createOrUpdateShortlist xmlns:ns1="http://service.shortlist.mycompany.com/"><sessionId>854a48b5-922f-4081-9c76-b6d08b58a341</sessionId><datastoreInstance>http://mypc.mycompany.com:8080/shortlist-app/services/ShortlistService</datastoreInstance></ns1:createOrUpdateShortlist></soap:Body></soap:Envelope> 
-------------------------------------- 

CXF的版本是相同的( 2.2.5)。我想不出還有什麼要檢查的!

一些要求信息...

  • @Name是Seam的註釋
  • 編程
  • 宙斯盾綁定配置(JAXWS不喜歡接口)
+0

你怎麼配置?哪些數據綁定?什麼名字? – bmargulies 2010-01-18 16:29:37

+0

我已在最後添加了您請求的信息。 – 2010-01-18 17:20:14

+0

簡單的前端呢?它不會尊重這些@WebService註釋。 恐怕這對cxf用戶會更好。這不是一個簡單的「我可以回答你的問題」的事情,這將是一個擴展的診斷練習。 – bmargulies 2010-01-18 17:40:38

回答

0

@Lee西奧博爾德。 ..在你發佈的問題中沒有任何明顯的信息可以揭示它爲什麼不適合你。在這種情況下,「答案」就是要求「CXF用戶」提供幫助,並在必要時打開JIRA。在問題評論中播放20個問題效率不高,在這個列表上CXF專家眼球比這裏更多。一旦揭示了這個祕密,我們可以在這裏提出一個修正的問題和答案。

+0

是的,我同意。只要知道我沒有犯過明顯的錯誤,但這是一件好事。 – 2010-01-20 13:05:01

0

好的,問題解決爲錯誤。我使用的界面在部署服務之前沒有從存儲庫中更新,而且由於他的部分內容發生了變化(刪除了一個引用條款),但他沒有部署,我使用了更新的版本存儲庫。他的界面版本拋出了一個異常,但我的界面版本並沒有這麼說。因此:

如果服務提供者和服務客戶​​端使用稍微不同的接口,則會發生此錯誤。

+0

哦,我回答了這個問題,因爲我有同樣的問題,並發現它。不知何故,我認爲我首先提出了這個問題。 – Akku 2010-10-04 11:49:42