我目前正在使用Java中使用JAX-WS webservices的項目。 全局主題是這樣的:用戶在本地創建一個對象,比如代理。他稱第一個webservice並將其代理傳遞給web服務。 Web服務處理代理(修改其屬性:例如生命值),並將其傳遞給另一個Web服務。這個調用是從第一個webservice完成的,所以用戶在這個過程中沒有任何事情要做。通過JAX-WS WebService傳遞時截斷的Java對象
經過幾個Web服務鏈後,用戶檢索已修改的代理。
我的項目的目的是設計2份:
- 一個框架,指定先前所描述的現象:使用我的web服務,代理和遷移的
- 一個演示應用程序過程框架。主要區別在於增加了一個GUI和一個新類別頭像,擴展代理。因此,遷移過程仍然由「框架」和Agent對象完成。
下面的代碼顯示了我怎麼稱呼我的web個簡單的例子,主持我的頭像,然後檢索從服務代理:
// connection to the server
URL endpoint= new URL("http://SERVER/tomcat/KiwiBidonDynamique/ServiceWebBidonDeDadou?wsdl");
QName serviceName=new QName("http://avatar/","ServeurKiwiBidonService");
Service service = Service.create(endpoint, serviceName);
WebService port = service.getPort(WebService.class);
Avatar myAvatar = new Avatar(1, "Jack the Ripper");
port.hostAgent(myAvatar);
// some process on the service...
Avatar myAvatarTransformed = (Avatar) port.getAgent("AgentNumberOne");
當我這樣做,我得到一個異常的最後一行:
Exception in thread "main" java.lang.ClassCastException: agent.Agent cannot be cast to avatar.Avatar
很多日誌閱讀後,我想原因是Web服務的工作方式。被調用時,參數中給出的頭像在我的JVM中編組,然後在服務上解組,但服務僅在解組時構造代理。這樣做會截斷特定於頭像的數據。然後,當我嘗試從服務中檢索我的代理時,無法將其轉換爲頭像。
有沒有辦法在處理服務代理時保留頭像信息? 我能以某種方式編寫自己的編組/解編嗎?
非常感謝。
非常感謝。這些是我開始想到的選項......我一直在嘗試使用XmlAdapter實現自定義編組:http://stackoverflow.com/a/7282020/2291104 –