0

私は最近、OC4J の組み込みパーサーではなく Xerces の使用に関する OC4J のやや一般的な問題を「解決」しました。この問題は、次の行を global-web-application.xml に追加することで解決されました。

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

残念ながら、これはアプリ サーバーで問題を引き起こす可能性がある大打撃を与えるアプローチであったため、アプリの WEB-INF ディレクトリに次の orion-web.xml ファイルを作成することで解決を試みました。

<?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">
<web-app-class-loader search-local-classes-first="true" include-war-manifest-class-path="true"/>
<web-app/>
</orion-web-app>

残念ながら、global-web-application.xml を使用した場合は機能しましたが、orion-web.xml を使用した場合は機能しませんでした。

OC4J のバージョンは 10.1.3.5 です。

誰でもアドバイスできますか?

4

3 に答える 3

2

もう 1 つの方法は、デプロイ時に指定することです。見てみましょう:

デプロイ時に search-local-classes-first を指定する

次の例は、Application Server Control を使用して、デプロイ時に Web モジュール用に生成された orion-web.xml ファイルに search-local-classes-first 属性を設定する方法を示しています。

  1. 「アプリケーション」>「デプロイ」を選択して、Application Server Control デプロイメント・ウィザードを起動します。
  2. ウィザードの最初のページで、アプリケーションへのパスを指定します。
  3. アプリケーション名を指定し、2 番目のページでコンテキスト URI マッピングを提供します。
  4. ウィザードの 3 ページ目 (デプロイ: デプロイ設定) で [クラスの読み込みを構成] をクリックします。
  5. [Configure Web Module Class Loaders] の下で、使用するローカル JAR ファイルを含む Web モジュールの名前の横にある [Search Local Classes First] チェックボックスをオンにします。
  6. 必要に応じて、[デプロイメント プランの保存] ボタンをクリックし、プランを保存して再利用します。
于 2010-12-22T16:22:26.070 に答える
0

最後に、OC4J 10.13 (および 10.13.50) で JAXB2 (Spring WS 2.1.4 で使用) を実行できます。JAXB には xalan lib が必要です。

orion-web.xml

<?xml version="1.0"?>
<!DOCTYPE orion-web-app PUBLIC "-//Evermind//DTD Orion Web Application 2.3//EN"
    "http://xmlns.oracle.com/ias/dtds/orion-web.dtd">

<orion-web-app
    persistence-path=""
    jsp-cache-directory="./persistence"
    jsp-cache-tlds="standard"
    simple-jsp-mapping="false"
    temporary-directory="./temp"
    servlet-webdir="/servlet/"
    >

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

</orion-web-app>

maven pom.xml

    <!-- JAXB implemetation by EclipseLink MOXy-->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.1</version>
        <scope>compile</scope>
    </dependency>

    <!-- Specific dependencies for OC4J v1013 -->
    <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.1</version>
        <scope>runtime</scope>
        <exclusions>
            <exclusion>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
于 2013-11-26T12:48:02.540 に答える
0

これを別の方法で解決できると思います。プロパティの使用とライブラリの削除。

次の 2 つのプロパティがあります。

xml.driver.property

xml.driver.impl

1 つはパーサー インターフェイスを定義し、もう 1 つは実装を定義します。これをある実装から別の実装に切り替えることができます。

たとえば、次のようなものがあります。

xml.driver.property=org.xml.sax.driver

xml.driver.impl=org.apache.xerces.parsers.SAXParser

これはシステム プロパティであるため、さまざまな方法でロードできます。すべての OC4J インスタンス (コンテナ) にインストールされた特別なサーブレットを使用して、実行時にこれと他のプロパティをロードします。

「少し」遅れましたが、お役に立てば幸いです。

于 2010-11-12T19:07:38.583 に答える