シンプルな 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
ありがとうございました!