私のセットアップは非常に簡単です。ウェブのフロントエンドがあり、バックエンドはスプリング接続されています。
AOPを使用して、rpcサービスにセキュリティのレイヤーを追加しています。
Webアプリが起動時に中断するという事実を除いて、すべて良好です。
[Java] SEVERE:コンテキストの初期化に失敗しました [Java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException:構成の問題:XMLスキーマ名前空間のSpring NamespaceHandlerが見つかりません[http:// www.springframework.org/schema/aop] [Java]問題のリソース:ServletContextリソース[/WEB-INF/gwthandler-servlet.xml]
これが私のxml設定ファイルからの抜粋です:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<aop:config>
<aop:aspect id="security" ref="securityAspect" >
<aop:pointcut id="securedServices" expression="@annotation(com.fb.boog.common.aspects.Secured)"/>
<aop:before method="checkSecurity" pointcut-ref="securedServices"/>
</aop:aspect>
</aop:config>
私はインターネットを読んで、問題の核をクラスローディングしているのではないかと読みました。疑わしい、ここに私のWEB-INF/libディレクトリがあるので:
./WEB-INF/lib
./WEB-INF/lib/aopalliance-alpha1.jar
./WEB-INF/lib/aspectj-1.6.6.jar
./WEB-INF/lib/commons-collections.jar
./WEB-INF/lib/commons-logging.jar
./WEB-INF/lib/ehcache-core-1.7.0.jar
./WEB-INF/lib/ejb3-persistence.jar
./WEB-INF/lib/hibernate
./WEB-INF/lib/hibernate/antlr.jar
./WEB-INF/lib/hibernate/asm.jar
./WEB-INF/lib/hibernate/bsh-2.0b1.jar
./WEB-INF/lib/hibernate/cglib.jar
./WEB-INF/lib/hibernate/dom4j.jar
./WEB-INF/lib/hibernate/freemarker.jar
./WEB-INF/lib/hibernate/hibernate-annotations.jar
./WEB-INF/lib/hibernate/hibernate-shards.jar
./WEB-INF/lib/hibernate/hibernate-tools.jar
./WEB-INF/lib/hibernate/hibernate.jar
./WEB-INF/lib/hibernate/jtidy-r8-20060801.jar
./WEB-INF/lib/jabsorb
./WEB-INF/lib/jabsorb/jabsorb-1.3.1.jar
./WEB-INF/lib/jta.jar
./WEB-INF/lib/jyaml-1.3.jar
./WEB-INF/lib/postgresql-8.4-701.jdbc4.jar
./WEB-INF/lib/sjsxp.jar
./WEB-INF/lib/spring
./WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.asm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.aspects-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.beans-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context.support-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.core-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.expression-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument.Tomcat-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jdbc-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jms-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.orm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.oxm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.test-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.transaction-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.portlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.servlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.struts-3.0.0.RELEASE.jar
./WEB-INF/lib/testng-5.11-jdk15.jar
./WEB-INF/web.xml
すべてのjarファイルをサブディレクトリではなくWEB-INF/lib
ディレクトリに直接配置しようとしましたか?
いいえWEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar
、ただWEB-INF/lib/org.springframework.aop-3.0.0.RELEASE.jar
残りの瓶についても同じです。
Maven-shade-pluginの使用中にこのエラーが発生したため、ソリューションには以下が含まれていました。
META-INF/spring.schemas
そして
META-INF/spring.handlers
構築時のmaven-shade-pluginのトランスフォーマー...
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.Apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
(クレジット: 単一のjarで複数のSpring依存関係をマージするときにspring.handlers/spring.schemasが上書きされるのを避けるためのアイデア )
http://maven.Apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html
私はmaven-shade-pluginを使用して同様の問題に遭遇しました。上記の例のページで問題の解決策を見つけました。
使用しているIDE(存在する場合)?これは、IDE内で作業しているとき、またはデプロイメント時にのみ発生しますか? -依存関係を持つ1つのJARを作成するmaven-Assemblyは 既知の原因 -すべてのJARを1つのディレクトリに折りたたみ、Springスキーマとハンドラーファイルは互いに上書きします。
同様のエラーが発生しましたが、新しく作成されたRooプロジェクトでSpring Webflowを参照しました。私にとっての解決策は、(プロジェクト)/右クリック/ Maven/Maven依存関係の有効化(その後に再起動してTomcatに再公開する)でした。
STSまたはm2EclipseがすべてのSpring Webflow jarをWebアプリのlibディレクトリにプッシュできなかったようです。理由はわかりません。しかし、Maven依存関係の処理を有効にしてから再構築することで問題は解決したようです。 Webflow jarが最終的に公開されるため、スキーマ名前空間の参照を見つけることができます。
これを調査するために、Webアプリの公開先のTomcatディレクトリを調べ、実行中にWEB-INF/lib /をクリックして、webflow jarファイルが欠落していることに気付きました。
このトリックも私にとってはうまくいきました。Eclipseでプロジェクトを右クリックし、[Maven]> [依存関係の更新]の順にクリックします。
春のチュートリアルに続いて、AOPでの最初の試みでこの問題に遭遇しました。私の問題はspring-aop.jar
私のクラスパス。チュートリアルには、追加する必要がある他のすべての依存関係、つまり、
aspectjrt.jar
aspectjweaver.jar
aspectj.jar
aopalliance.jar
しかし、1つが欠落していました。元の質問でその症状を引き起こす可能性があるもう1つの問題。
Eclipse(ネオン)、Java SE 8、beans 3.0、spring AOP 3.0、Spring 4.3.4。を使用しています。問題はJavaビュー- -JEEではない-そして、右ボタンメニューでアプリケーションを実行しようとしているとき-> Run As-> Java Application。
mvn
を使用する場合は、pom.xml
に正しいスコープがあることを確認します(定義されている場合)。かつて誤ってtestに設定していましたが、runtimeに必要でした。
他の誰かがこの問題に遭遇した場合に備えて、Eclipseを使用しました。右クリックアクションでプロジェクトを実行します。このエラーはJ2EEビューで発生しましたが、Javaビューでは発生しませんでした。不明-正しい 'lib'ディレクトリにライブラリを追加することを想定しています。
また、Mavenプロジェクトを使用して、m2Eclipseが依存関係を管理できるようにします。
Spring 3.0.2とspring-beans-3.0.xsdでも同じ問題があります。
私の解決策:
ソースフォルダーにファイルMETA-INF/spring.schemasを作成し、必要な定義をすべてコピーします。 spring.handlersも作成します。
PluggableSchemaResolverクラスが正しく機能していないと思います。
javadocから:
「デフォルトでは、このクラスは次のパターンを使用してクラスパスでマッピングファイルを検索します。META-INF/ spring.schemasは、一度にクラスパスに複数のファイルが存在できるようにします。」
しかし、私の場合、このクラスは最初に見つかったspring.schemasのみを読み取ります。
グレッティング。 pacovr