我是XMLBeans的新手,并且一直在尝试使用它来创建XML文档,作为axis2 Web服务的一部分。当我将代码作为标准Java应用程序或标准servlet运行时,XML正确生成:
<?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>
然而,当在Axis2&amp ;;下运行完全相同的代码时我得到一个servlet中的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:type被剥离。
有没有人有任何关于我可能做错的建议,只有在Axis2下运行时才会导致此类问题?起初我认为这是一个Tomcat问题,但在创建一个通用的servlet并运行完全相同的代码后,我没有任何问题。我尝试过使用XMLOptions for XMLBeans,但似乎无法解决问题。我目前使用的选项是:
xmlOptions = new XmlOptions();
xmlOptions.setCharacterEncoding("UTF-8");
xmlOptions.setUseDefaultNamespace();
xmlOptions.setSaveAggressiveNamespaces();
xmlOptions.setSavePrettyPrint();
答案 0 :(得分:0)
事实证明,问题在于Axis2使用的类加载器顺序。这是补丁,功能在这里描述:
http://marc2.theaimsgroup.com/?l=axis-cvs&m=115946726426905&w=3
长话短说,要解决此问题,您需要编辑Axis2项目的“services.xml”并添加:
<parameter name="ServiceTCCL">composite</parameter>