2010-02-24 25 views
0

我是XMLBeans的新手,一直試圖用它來創建一個XML文檔作爲axis2 web服務的一部分。當我運行我的代碼作爲一個標準的Java應用程序或作爲一個標準的servlet中,XML正確生成:XMLBeans - 使用Axis2和Tomcat剝離xsi:類型?

<?xml version="1.0" encoding="UTF-8"?> 
<c:BroadsoftDocument protocol="OCI" xmlns:c="C"> 
<sessionId>000000001</sessionId> 
<command xsi:type="AuthenticationRequest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<userId>admin</userId></command> 
</c:BroadsoftDocument> 

然而,當完全相同的代碼在一個servlet下的Axis2 & Tomcat的運行我得到:

<?xml version="1.0" encoding="UTF-8"?> 
<c:BroadsoftDocument protocol="OCI" xmlns:c="C"> 
<sessionId>000000001</sessionId> 
<command> 
<userId>admin</userId></command> 
</c:BroadsoftDocument> 

這當然是無效的 - 當代碼在Tomcat下運行時,「command」元素的xsi:類型被剝離。

有沒有人有什麼我可以做錯的建議,只有在Axis2下運行時纔會導致此類問題?起初我以爲這是一個Tomcat問題,但是在創建通用servlet並運行完全相同的代碼之後,我沒有任何問題。我嘗試過使用XMLBeans的XMLOptions,但似乎無法解決問題。我目前使用的選項有:

回答

0

結果問題在於Axis2使用的類加載器順序。這是修補和這裏所描述的功能:

http://marc2.theaimsgroup.com/?l=axis-cvs&m=115946726426905&w=3

長話短說,要解決這個問題,你需要編輯「的services.xml」爲您Axis2項目,並添加:

<parameter name="ServiceTCCL">composite</parameter>