2012-06-07 35 views
1

我正在使用JBoss AS 7.1.1和JAX-WS 2.0。Java中的SOAP對象序列化

在我的應用程序中,我需要將Map<String, Map<String, String>>傳遞給服務。我製作了一個擴展TreeMap的自定義複雜類型。在調試過程中,我確認了我試圖發送的對象中充滿了數據,但收到的對象是空的。從其他文章看來,這似乎是因爲與SOAP序列化不兼容。有沒有什麼辦法可以在不改變類型的情況下爲我的對象實現SOAP XML序列化,從而生成大量字段等?我希望能夠:

public String doSoapXmlSerialization() { 
    // code 
} 
public void doSoapXmlDeserialization() { 
    // code 
} 

對我來說編寫序列化和反序列化方法將是一件非常簡單的事情。我也可以想象編寫某種XSD文件以允許SOAP方法爲我完成我的工作。我一直無法找到任何指導。通過JAX-WS的什麼機制嘗試序列化對象?

+0

請問您的自定義類型實現序列化?它必須通過網絡。 – Logan

+0

我的類型擴展了TreeMap,它實現了可序列化。 –

+0

您的服務是否有wsdl?如果是這樣,請運行wsdl上的jboss wsconsume程序作爲文件存儲,以查看它生成的java代碼。在jboss 5中,這是在jboss bin文件夾中。它需要一個wsdl文件並生成java代碼來調用wsdl。你應該能夠傳遞這種數據。我已經傳遞了一個地圖對象作爲輸入,但它是一個jms的mapmessage。也許看鋤頭MapMessage是爲創意寫的。 – Logan

回答

0

我意識到描述發送和接收對象的部分(我的WSDL文件)是一個XML Schema,並且SOAP使用JAXB。我遵循this指南並構建了一個架構。這使我可以創造我想要的東西。

相關:

JAXB: how to marshall map into <key>value</key>