1

JBoss EAP 6 にデプロイされた Web サービスに問題があります。war ファイルがあり、その war には WS が含まれていますが、その war はもともと Weblogic 11 AS で開発およびテストされていました。すべてが正常に動作しますが、上司は、私の戦争は、彼が他のコンピューターにマウントした他のサーバー (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>

そのため、JBoss EAP 6 では、日付は次のように追加のフィールドで表示されます。

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

私の質問は、このデータ型のデシリアライザーの実装を切り替えるにはどうすればよいですか? Weblogic は JDK 内部クラスを使用してジョブを作成しているようですが、JBoss は独自の実装を使用しています。

xml ファイル (jboss-deployment-structure.xml) を war アーカイブに追加することについて読み、次のように 1 つの xml を統合します。

<?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>

xml が JBoss XML 実装 (xerces) の使用を回避することをよく理解していれば、JDK の内部クラスを使用できます。結果は同じですが、アイデアはありますか?

4

1 に答える 1

0

この形式で問題を解決します。

このパスで、デフォルトの xerces 実装を変更します

{JBOSS_HOME}\modules\system\layers\base\org\apache\xerces\main

jaxp-api-1.4.5.jar と jaxp-ri-1.4.5 の 2 つのファイルを追加します。

そして、module.xml で、リソース ルートとして宣言された jar を次のように変更しました。

<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 実装が付属しています。乾杯。

于 2013-09-13T17:24:04.233 に答える