Java Jboss EAP6和Weblogic 11 XML响应之间的差异

Java Jboss EAP6和Weblogic 11 XML响应之间的差异,java,xerces,weblogic11g,jboss-eap-6,Java,Xerces,Weblogic11g,Jboss Eap 6,我对JBoss EAP 6中部署的Web服务有问题。 我有一个war文件,war包含一个WS,但是,war最初是在WebLogic11 AS中开发和测试的;一切都很好,但是 我的老板说我的war可以部署在他安装在其他计算机上的其他服务器JBoss上 一切正常,但在回复中,日期不同,我的意思是,在Weblogic中,日期如下: <birthday class="com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCale

我对JBoss EAP 6中部署的Web服务有问题。 我有一个war文件,war包含一个WS,但是,war最初是在WebLogic11 AS中开发和测试的;一切都很好,但是 我的老板说我的war可以部署在他安装在其他计算机上的其他服务器JBoss上

一切正常,但在回复中,日期不同,我的意思是,在Weblogic中,日期如下:

 <birthday class="com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <year>1952</year> 
  <month>4</month> 
  <day>17</day> 
  <timezone>-360</timezone> 
  <hour>0</hour> 
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<birthday class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <orig__year>1944</orig__year> 
  <orig__month>3</orig__month> 
  <orig__day>1</orig__day>
  <orig__hour>0</orig__hour> 
  <orig__minute>0</orig__minute> 
  <orig__second>0</orig__second> 
  <orig__fracSeconds>0.000</orig__fracSeconds> 
  <orig__timezone>-300</orig__timezone> 
  <year>1944</year> 
  <month>3</month> 
  <day>1</day> 
  <timezone>-300</timezone> 
  <hour>0</hour>
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
     <exclusions>
      <module name="org.apache.xerces" />
     </exclusions>
     <dependencies>
        <module name="sun.jdk" >
        </module>
      <system>
        <paths>
      <path name="com/sun/org/apache/xerces/internal/jaxp/datatype"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>
<module xmlns="urn:jboss:module:1.1" name="org.apache.xerces">
    <resources>
        <!--<resource-root path="xercesImpl-2.9.1-redhat-4.jar"/> -->
        <resource-root path="jaxp-ri-1.4.5.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>
因此,在JBoss EAP 6中,日期显示在更多字段中,如下所示:

 <birthday class="com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <year>1952</year> 
  <month>4</month> 
  <day>17</day> 
  <timezone>-360</timezone> 
  <hour>0</hour> 
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<birthday class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <orig__year>1944</orig__year> 
  <orig__month>3</orig__month> 
  <orig__day>1</orig__day>
  <orig__hour>0</orig__hour> 
  <orig__minute>0</orig__minute> 
  <orig__second>0</orig__second> 
  <orig__fracSeconds>0.000</orig__fracSeconds> 
  <orig__timezone>-300</orig__timezone> 
  <year>1944</year> 
  <month>3</month> 
  <day>1</day> 
  <timezone>-300</timezone> 
  <hour>0</hour>
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
     <exclusions>
      <module name="org.apache.xerces" />
     </exclusions>
     <dependencies>
        <module name="sun.jdk" >
        </module>
      <system>
        <paths>
      <path name="com/sun/org/apache/xerces/internal/jaxp/datatype"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>
<module xmlns="urn:jboss:module:1.1" name="org.apache.xerces">
    <resources>
        <!--<resource-root path="xercesImpl-2.9.1-redhat-4.jar"/> -->
        <resource-root path="jaxp-ri-1.4.5.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>
我的问题是,如何切换此数据类型的反序列化器的实现? 看起来,Weblogic使用JDK内部类来完成这项工作,但JBoss使用它自己的实现

我读到关于将xml文件jboss-deployment-structure.xml添加到war归档文件的内容,我集成了一个xml,如下所示:

 <birthday class="com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <year>1952</year> 
  <month>4</month> 
  <day>17</day> 
  <timezone>-360</timezone> 
  <hour>0</hour> 
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<birthday class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <orig__year>1944</orig__year> 
  <orig__month>3</orig__month> 
  <orig__day>1</orig__day>
  <orig__hour>0</orig__hour> 
  <orig__minute>0</orig__minute> 
  <orig__second>0</orig__second> 
  <orig__fracSeconds>0.000</orig__fracSeconds> 
  <orig__timezone>-300</orig__timezone> 
  <year>1944</year> 
  <month>3</month> 
  <day>1</day> 
  <timezone>-300</timezone> 
  <hour>0</hour>
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
     <exclusions>
      <module name="org.apache.xerces" />
     </exclusions>
     <dependencies>
        <module name="sun.jdk" >
        </module>
      <system>
        <paths>
      <path name="com/sun/org/apache/xerces/internal/jaxp/datatype"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>
<module xmlns="urn:jboss:module:1.1" name="org.apache.xerces">
    <resources>
        <!--<resource-root path="xercesImpl-2.9.1-redhat-4.jar"/> -->
        <resource-root path="jaxp-ri-1.4.5.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>

如果我理解得很好,xml避免了使用JBoss xml实现xerces,那么我可以使用JDK的内部类;但结果是一样的,有什么想法吗?

我以以下形式解决我的问题:

我更改默认的xerces实现,路径如下

{JBOSS_HOME}\modules\system\layers\base\org\apache\xerces\main
我添加了两个文件:jaxp-api-1.4.5.jar和jaxp-ri-1.4.5

在module.xml中,我对声明为资源根的jar进行了更改,如下所示:

 <birthday class="com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <year>1952</year> 
  <month>4</month> 
  <day>17</day> 
  <timezone>-360</timezone> 
  <hour>0</hour> 
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<birthday class="org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl"> 
  <orig__year>1944</orig__year> 
  <orig__month>3</orig__month> 
  <orig__day>1</orig__day>
  <orig__hour>0</orig__hour> 
  <orig__minute>0</orig__minute> 
  <orig__second>0</orig__second> 
  <orig__fracSeconds>0.000</orig__fracSeconds> 
  <orig__timezone>-300</orig__timezone> 
  <year>1944</year> 
  <month>3</month> 
  <day>1</day> 
  <timezone>-300</timezone> 
  <hour>0</hour>
  <minute>0</minute> 
  <second>0</second> 
  <fractionalSecond>0.000</fractionalSecond> 
</birthday>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
  <deployment>
     <exclusions>
      <module name="org.apache.xerces" />
     </exclusions>
     <dependencies>
        <module name="sun.jdk" >
        </module>
      <system>
        <paths>
      <path name="com/sun/org/apache/xerces/internal/jaxp/datatype"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>
<module xmlns="urn:jboss:module:1.1" name="org.apache.xerces">
    <resources>
        <!--<resource-root path="xercesImpl-2.9.1-redhat-4.jar"/> -->
        <resource-root path="jaxp-ri-1.4.5.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>
现在,我的xml附带了所需的XMLGregorianCalendar实现。 干杯