0

私の質問は、ESB にインストールされているバージョンではなく、パッケージ化されたバージョンの Spring を使用するようにバンドルに強制するにはどうすればよいですか?

Fuse ESB にインストールして開始しようとしている単純な Webservices WAR があります。WAR は Spring 3.0.6 に依存しており、私は Spring 3.0.5 機能を ESB にインストールしています。バンドルをインストールして開始しようとすると、以下のエラーが発生します。

22:24:43,869 | エラー | l コンソールスレッド | RegisterWebAppVisitorWC | 163 - org.ops4j.pax.web.pax-web-extender-war - 1.0.3 | 登録例外。スキップ。org.springframework.beans.factory.parsing.BeanDefinitionParsingException: 構成の問題: URL の場所から Bean 定義をインポートできませんでした [クラスパス:META-INF/spring/app-context.xml] 問題のあるリソース: ServletContext リソース [/WEB-INF/cxf -servlet.xml]; ネストされた例外は org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [META-INF/spring/app-context.xml]; ネストされた例外は org.springframework.beans.FatalBeanException: Class [org.springframework.jdbc.config.JdbcNamespaceHandler] for namespace [http://www.springframework.org/schema/jdbc] は [org.springframework.beans を実装していません] .

これは、予期しないバージョンの Spring が使用されていることを示しています。3.0.6 が Bundle-Classpath にあることがわかります。バンドルは、バンドル lib フォルダー内のバージョンの Spring のみを使用する必要があると考えていました。

WAR を ServiceMix にデプロイするときに Maven の依存関係がクラスパスに含まれるように、この pom 構成もあります。

                <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <classpathLayoutType>repository</classpathLayoutType>
                        </manifest>
                    </archive>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                    <webResources>
                        <resource>
                            <directory>src/main/resources</directory>
                            <targetPath>WEB-INF</targetPath>
                            <includes>
                                <include>**.*</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
4

1 に答える 1

0

MANIFEST.MFバンドル クラスパスは、/lib フォルダーではなく、の Import-Packages によって定義されます。Spring 3.0.6 を使用するには、おそらくMaven-Bundle-Pluginを構成する必要があります。

于 2012-05-09T09:56:15.443 に答える