0

Jaxb2.1.12を実行しているアプリケーションがあります。JDK1.5とOC4J10.1.3.4.0を実行しています。アプリケーションでJaxbを使用している部分を使用しようとすると、次のエラーが発生します。

Unable to locate jaxb.properties for package

これをOC4Jに付属のxml.jarに絞り込みました。Jaxb1.0クラスが含まれています。orion-application.xmlファイルに以下を追加することでこのエラーを修正できます。

<imported-shared-libraries>
    <remove-inherited name="oracle.xml"/>
</imported-shared-libraries>

問題は、admin_client.jarユーティリティを使用してWARファイルをOC4Jにデプロイしていることです。orion-application.xmlファイルを配置するEARがないため、orion-web.xmlファイルをWARのWEB-INFディレクトリに追加し、search-local-classes-firstプロパティをtrueに設定してみることにしました。 :

<?xml version="1.0"?>    
<orion-web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-web-10_0.xsd"  deployment-version="10.1.3.4.0"
 jsp-cache-directory="./persistence"
 jsp-cache-tlds="standard"
 simple-jsp-mapping="false"
 temporary-directory="./temp"
 schema-major-version="10" schema-minor-version="0" >

  <web-app-class-loader search-local-classes-first="true"  />

 <web-app>
 </web-app>
</orion-web-app>

これにより、アプリケーションはまったくデプロイされません。Spring構成ファイルを解析できないというエラーが表示されます。search-local-classes-firstを使用したいと思います。このプロパティをどのように使用できますか?また、orion-application.xmlファイルをWARファイルと一緒にデプロイする方法はありますか?

09/11/16 13:26:01 WARNING: DeployerRunnable.run Unexpected exception parsing XML document from Servl
etContext resource [/WEB-INF/applicationContext-acegi-security.xml]; nested exception is java.lang.C
lassCastException: oracle.xml.jaxp.JXDocumentBuilderFactoryoracle.oc4j.admin.internal.DeployerExcept
ion: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationCon
text-acegi-security.xml]; nested exception is java.lang.ClassCastException: oracle.xml.jaxp.JXDocume
ntBuilderFactory
        at oracle.oc4j.admin.internal.DeployerBase.execute(DeployerBase.java:126)
        at oracle.oc4j.admin.jmx.server.mbeans.deploy.OC4JDeployerRunnable.doRun(OC4JDeployerRunnabl
e.java:52)
        at oracle.oc4j.admin.jmx.server.mbeans.deploy.DeployerRunnable.run(DeployerRunnable.java:81)

        at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE
xecutor.java:303)
        at java.lang.Thread.run(Thread.java:595)

注:Java 1.6ではこのエラーは発生しません。これは、1.6がJaxb2にパッケージ化されているためだと思います。

4

2 に答える 2

1

「search-local-classes-first」のドキュメントで、次の行を見ました。

サーブレットの仕様に従い、javaでクラスをロードする際にsearch-local-classes-first機能を使用することはできません。またはjavax。*パッケージ。*

JAXB2はJDK1.6に含まれており、現在はの下javax.*にあるため、おそらくappserverは、WEB-INF/libディレクトリに存在していてもクラス/ライブラリを無視します。JAXBjarを$JRE_HOME/libディレクトリに配置してみてください。取得された場合は、appserverの起動スクリプトを変更して、JAXBjarを基本クラスパスに含めることができます。

解決策はちょっとしたハックです:)。これは、ApacheCXFに対して同じことを行うための手順へのリンクです。

OC4jでのJAXBのJAXB2.0への置き換え

于 2009-11-17T01:09:26.163 に答える
1

EARファイルを作成することで問題が解決する場合は、この方法をお勧めします。また、warファイルをデプロイすると、コンテナーが耳を作成します。oc4jのインストールディレクトリのapplicationsディレクトリでearファイルを確認してください。

于 2009-11-17T16:09:58.300 に答える