EclipseからデプロイするときにTomcat7サーバーで正常に実行されるSpringプロジェクトがあります:Run As >> Run on server。 「Eclipse」タブ「サーバー」に次のように表示されます。
Servers
Tomcat v7.0 Server at localhost [Started, Synchronized]
my_project [Synchronized]
spring-web-3.2.4-RELEASE.jar
私のプロジェクト:
プロジェクトは次の場所にあることがわかります。
/srv/applications/workspace/.metadata/.plugins/org.Eclipse.wst.server.core/tmp0
また、次のフォルダーも表示されます:conf、logs、temp、webapps、work、wtpwebapps
Eclipseからデプロイすると、Tomcat7サーバーですべてが正常に実行されることを確認します!
Eclipseコンソールでは次のようになります:
Apr 08, 2014 3:26:59 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:01 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 3215 ms
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 08, 2014 3:27:11 PM org.Apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [my_project.web.context.WebApplicationInitializer@3599e94c]
Apr 08, 2014 3:27:12 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Apr 08, 2014 3:27:24 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:24 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 23821 ms
今:問題は、同じTomcat7サーバー/ var/lib/Tomcat7/webappsに同じファイル(ファイル.warを使用)をデプロイするときです
データなしで最初のページのウェブを開くことができますが、
ログに表示されます:
INFO: No Spring WebApplicationInitializer types detected on classpath
Tomcat7を再起動すると、ログファイルに記録されます。
INFO: Destroying ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:30 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 8, 2014 3:25:30 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:31 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:31 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 1664 ms
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:38 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 7576 ms
エラーが見つかりました:jdk 1.6を使用してビルドされたライブラリがあります。 Springのメインコントローラーとコンポーネントはこのライブラリにあります。また、jdk 1.7の使用方法では、1.6で構築されたクラスが見つかりません。
ソリューションはすべて「コンパイラー準拠レベル:1.7」および「生成された.classファイルの互換性:1.6」、「ソースの互換性:1.6」を使用して構築されました。
Eclipseでこのオプションを設定します:Preferences\Java\Compiler。
みんなありがとう。
私の愚かな理由は:自動的にビルドが無効になった!
WebLogicサーバーでSpring Integration Beanを使用してWARをデプロイしているときに、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」という情報メッセージが表示されました。実際、サーブレットURLから404 Not Foundが返され、サーバーログに「No Spring ... etc」というネガティブトーンの情報メッセージが表示されていることを確認できました。ビルドエラーや展開エラー、苦情はありません。実際、beans.xml(スプリングコンテキストXML)は実際にはまったく取り上げられておらず、それはOracleのjDeveloperでの非常に特殊なアーティファクトの編成にバインドされていると思われました。ソリューションは、プロジェクトプロパティの「展開」トピックの下で展開プロファイルを編集するときに、WEB-INF/classesカテゴリの「貢献者」と「フィルター」を慎重に操作することです。
正確には、jDeveloperのデフォルトの「beans.xml」でSpringコンテキストに名前を付け、WEB-INFサブディレクトリ自体に並べて配置することをお勧めします(たとえば、<... your project path>のように、Web Apllicationソースパスの下)/public_html /)。次に、WEB-INF/classesカテゴリ(展開プロファイルの編集時)で、「貢献者」リストのProject HTMLルートディレクトリを確認し、フィルターでbeans.xmlを選択してから、web.xmlがclasspath:beans.xmlのようなcontext-param値。
それが修正された後、私は前進することができ、さらにいくつかのBean構成の変更と実装の後、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」というメッセージが戻ってきました!実際、いつ、なぜそれが正確に戻ったのか気がつきませんでした。この2回目は、
public class HttpGatewayInit implements WebApplicationInitializer { ... }
空の継承されたメソッドを実装し、アプリケーション全体が正常に動作します!
... Java EE開発が、バリアント初期化子のカスケードによって解釈されるXML構成ファイルのカスケード(手動で編集されるもの、ウィザードを使用するものなど)で少しクレイジーになりすぎていると感じたら、ポイントを完全に共有します。
Log4jが正しく構成されていることを確認します。例外がスローされている可能性がありますが、画面の半分しか表示されていません。
私も同じ問題を抱えていました。私のMavenにはTomcat7プラグインがありましたが、JRE環境は1.6でした。 Tomcat7をTomcat6に変更しましたが、エラーはなくなりました。
これは一般的なエラーです。file.warが正しくビルドされていることを確認してください。 .warファイルを開いて、WebApplicationInitializerが存在することを確認してください。
Java7アプリケーションに埋め込まれたTomcat 8でも同様の問題がありました。
アプリケーションでTomcatを起動したとき、それは機能しました。しかし、統合テストの目的でMavenから起動すると、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」というエラーが表示されました。
org.Apache.Tomcat.embed:Tomcat-embed-*
依存関係をバージョン8.0.29から8.0.47にアップグレードして修正しました。