スタンドアロン アプリケーションを CloudFoundry にデプロイしようとしています。ApplicationContext
-method で Springを使用して Springmain
を初期化しています。RabbitMQ でメッセージングを処理する単純な Bean があります。
で、 RabbitMQ を構成し、pom ファイルで、およびspring.xml
に必要な依存関係を追加しました。さらにプラグインを使用して、すべてのライブラリを含む単一の jar ファイルを作成し、-tool を使用してそれを cloudfoundry にデプロイします。cglib-nodep
spring-rabbit
cloudfoundry-runtime
maven-assembly-plugin
vmc
jar
-file を CloudFoundry にデプロイすると、次のエラーが発生します。
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www.springframework.org/schema/context]
Offending resource: class path resource [spring.xml]
[stacktrace ommited]
これが私のものspring.xml
です:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xmlns:cloud="http://schema.cloudfoundry.org/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd
http://schema.cloudfoundry.org/spring
http://schema.cloudfoundry.org/spring/cloudfoundry-spring-0.7.xsd">
<context:component-scan base-package="mypackage" />
<!-- Obtain a connection to the RabbitMQ via cloudfoundry-runtime: -->
<cloud:rabbit-connection-factory id="connectionFactory"/>
<!-- Set up the AmqpTemplate/RabbitTemplate: -->
<rabbit:template connection-factory="connectionFactory"/>
<!-- Request that queues, exchanges and bindings be automatically
declared on the broker: -->
<rabbit:admin connection-factory="connectionFactory"/>
<!-- Declare the "messages" queue: -->
<rabbit:queue name="messages" durable="true"/>
</beans>
そして、maven-assembly-plugin の構成:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>at.ac.tuwien.infosys.dse2013s.group17.allocator.ui.StartUpAllocator</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
上記のエラーの原因は何ですか? maven-assembly-plugin の構成方法に何か問題がありますか、それとも spring.xml に本当に問題がありますか?
アップデート
spring-context 依存関係を管理対象依存関係としてルート pom に追加し、バージョン要素なしでモジュールから参照することで、エラーを解決できました。今は同じエラーが発生していますが、今回は例外がhttp://schema.cloudfoundry.org/springスキーマについて不平を言っています。