【问题标题】:XMLBeans - xsi:type stripped using Axis2 and Tomcat?XMLBeans - xsi:type 使用 Axis2 和 Tomcat 剥离?
【发布时间】:2010-02-24 18:57:55
【问题描述】:

我是 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>

但是,当完全相同的代码在 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:type 被剥离。

是否有人对我可能做错的事情有任何建议,只有在 Axis2 下运行时才会导致此类问题?起初我认为这是一个 Tomcat 问题,但在创建一个通用 servlet 并运行完全相同的代码后,我没有任何问题。我尝试过使用 XMLBeans 的 XMLOptions,但似乎无法解决问题。我目前使用的选项是:

xmlOptions = new XmlOptions();
xmlOptions.setCharacterEncoding("UTF-8");
xmlOptions.setUseDefaultNamespace();
xmlOptions.setSaveAggressiveNamespaces();
xmlOptions.setSavePrettyPrint();

【问题讨论】:

    标签: java tomcat axis2 xmlbeans


    【解决方案1】:

    问题出在 Axis2 使用的类加载器顺序上。这已被修补,功能描述如下:

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

    长话短说,要解决此问题,您需要编辑 Axis2 项目的“services.xml”并添加:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2023-02-23
      • 1970-01-01
      相关资源
      最近更新 更多