0

シンプルな WebServices アプリケーション (シンプルな「Hello World」など) を OC4J にデプロイする際に問題が発生しています。同じコードが Jetty では問題なく動作しますが、OC4J では機能しません。他の誰かが同じ問題に直面したことがないかと思います。Enterprise Manager を使用してアプリを展開していますが、展開は次のメッセージで失敗します。

    [Jan 23, 2009 8:46:20 AM] Binding TestWs web-module for application TestWs to site default-web-site under context root /TestWs 
    [Jan 23, 2009 8:46:22 AM] Operation failed with error: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws] 
Offending resource: ServletContext resource [/WEB-INF/beans.xml] 

beans.xml を見ると、問題のコードは XML 名前空間宣言のようです。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxws:endpoint
        id="helloService"
        implementor="com.test.endpoint.HelloImpl"
        address="/HelloWorld" />
</beans>

スタック トレースはそれほど明るくありません。

    09/01/23 08:57:28 oracle.oc4j.admin.internal.DeployerException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]
    Offending resource: ServletContext resource [/WEB-INF/beans.xml]

    09/01/23 08:57:28   at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    09/01/23 08:57:28   at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    09/01/23 08:57:28   at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
    09/01/23 08:57:28   at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:261)
    09/01/23 08:57:28   at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1120)
...

他の誰かが同様の問題に遭遇しましたか? もしそうなら、それを修正するための最良の方法は何ですか? 私の XML スキルは中途半端で、Web サービスに関してはまったくの初心者です。ただし、これは OC4J の問題である可能性があります。

よろしくお願いします。

編集:これは、OC4Jがどのjarファイルをどこで見たいかについて奇妙でない限り、私が知る限り、クラスパスの問題ではありません(Tomcatができることを知っているように)。私の WEB-INF/lib フォルダーには、CXF jar、Spring jar (beans、context、core、および web)、xml-resolver-1.2.jar、および XmlSchema-1.4.2.jar があります。WEB-INF/lib フォルダー内のすべてを一覧表示する必要がある場合は、そうします。しかし、繰り返しになりますが、プログラムは Jetty で動作します。

別の編集:私がここで読んでいるものに基づいて、これはSpringとCXF jarの間の問題のようです.CXF jarにはNamespaceHandlerクラスがorg.apache.cxf.frontend.springあります(正確には)が、それを妨げる構成の問題があるようです.見てから春。

最終編集:ご協力いただきありがとうございます。私のクライアントはバージョン 10.1.3.3.0 を使用しているため、OC4J で CXF を動作させることはできませんでした。これは J2EE 5 に準拠していません。また、boot.xml を変更するために oc4j.jar を解凍するつもりはないと確信しています。しかし、ダニエルが私に指摘した文書がなければ、私はそれを知ることはなかったでしょう。

そこで、XFire バージョン 1.2.6 に切り替えて、いくつか問題が発生した後、テスト アプリを動作させました。その過程で、OC4J についていくつかの興味深いことを学びました。

  • Enterprise Manager にデプロイするときは、最初にローカル クラスパスをロードすることを選択してください。
  • OC4J は非標準の XML ファイルを使用するため、アプリが OC4J のネイティブ XML ファイルを使用していないことを確認してください ([デプロイ設定] で、現在選択されているすべてのインポートのチェックを外します。 WEB-INF/lib で提供)
  • 可能であれば、別のアプリ サーバーを使用してください。:P

ありがとうございました!

4

3 に答える 3

2

当たり前のことを聞きたくないのですが、CXF Web サイトから OS4J と CXF を一緒に構成するためのすべてのものを見たことがありますか? http://cwiki.apache.org/CXF20DOC/appserverguide.html#AppServerGuide-OC4J

于 2009-01-25T02:17:52.443 に答える
1

CLASSPATHの問題だと思います。

私は OC4J にはあまり詳しくありませんが、Web アプリケーションをどのようにパッケージ化/デプロイしていますか?

WEB-INF/libCXF jar がWARのディレクトリにあることを確認する必要がありますか?

更新: コメントに少し混乱していMETA-INFます。Spring 構成が EAR のディレクトリにある場合、これは Web アプリで使用されるものと同じクラスパスではありません。したがって、実際には、CXF jar を挿入しWEB-INF/libてもうまくいきません。JAR を EAR のトップレベルに配置するか、OC4J のすべてのクラスローダーで共有されるライブラリに配置する必要があります。OC4J のエンタープライズ アプリケーション/Web アプリケーション クラスローダー階層のドキュメントを調べて、これがより多くのアドバイスを提供できるかどうかを確認することをお勧めします。

于 2009-01-23T14:11:13.970 に答える
1

Spring の構成の問題のように見えます。

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]
Offending resource: ServletContext resource [/WEB-INF/beans.xml]

アプリの起動時にそれを読み取る web.xml に何かありますか? その名前空間に対して宣言された NamespaceHandler がコードのどこかにありますか?

于 2009-01-23T15:00:53.980 に答える