1

Spring 3 を使用する Web アプリケーションがあり、それを Tomcat 7 から Weblogic 10 に移行する必要があります。

このアプリケーションの構造は次のとおりです。

  • すべてのアプリケーション ロジックを含むコア モジュール。このモジュールは jar としてパッケージ化されています。
  • すべての Web サービスを定義する Web モジュール。このモジュールには、前のモジュールが依存関係として含まれており、「contextConfigLocation」パラメーターにコア モジュール コンテキストを含めることでその Bean を使用します。

私はmavenを使用していますが、これは依存関係がweb-moduleでどのように定義されているかです:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>module-core</artifactId>
    <version>${project.version}</version>
    <classifier>${environment}</classifier>
</dependency>

アプリケーションは tomcat では問題なく動作しましたが、Spring は core-module.jar の Bean に依存する Bean を作成できないため、Weblogic ではデプロイできません。エラーは、コアモジュールからのすべての Bean で常に同じです。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xxxBean' is defined

「xxxBean」は、core-module.jar で定義されている Bean のいずれかです。その Bean の問題を回避するために参照を削除すると、次に参照される Bean が再びエラーを引き起こします。つまり、Spring は web-module 自体で定義されているすべての Bean を検出しますが、core-module では定義されていません。

エラーのトレースで、weblogic がこれを使用していることがわかります。

com.oracle.weblogic.wsee.wrapper.org.springframework.web.context.ContextLoaderListener.contextInitialized

この問題は、Spring アプリケーション用に Weblogic が導入したラッパーに関連している可能性があります。

この問題を解決できる構成について何か考えはありますか? ありがとう!

4

2 に答える 2

1

最後に、問題はさまざまな xml ファイルが web.xml でどのように定義されているかに関連していました。Tomcat で正常に動作していた元の構成は次のとおりです。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:core-context.xml
        classpath:spring-web-security.xml 
    </param-value>
</context-param>

そして新しいもの:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:core-context.xml,classpath:spring-web-security.xml</param-value>
</context-param>

改行ではなく、コンマ区切りで宣言する必要があります。weblogic は xml の形式について文句を言わなかったので、問題を見つけるのは少し複雑でした。これにより、人々がこの種の移行に時間を費やすのを避けることができることを願っています. よろしくお願いします!!

于 2013-01-09T08:28:46.483 に答える
0

contextConfigLocationclasspath:core-module-applicationContext.xmlまたは実際のファイルが呼び出されたものはすべて機能するはずです。

このコンテンツを使用して、weblogic.xmlをWEB-INF/に定義してみてください。

<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic- web-app.xsd"> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> </weblogic-web-app>

Weblogic 10用に変更します。基本的にはprefer-web-inf-classes、trueに設定します。

于 2013-01-08T11:56:19.943 に答える