2

Spring MVC と Jetty Maven プラグイン バージョン 8.1.7.v20120910 を使用して、開発中にインメモリ DB として HSQL を使用して、Maven マルチモジュール プロジェクトとして Eclipse Juno で webapp を開発しています。jetty:run ゴールを使用して、IDE 内から Jetty を起動したいと考えています。問題は、Spring からのログ出力が表示されないことですが、NPE をスローする前に、まだ非常に小さい Spring コンテキストをロードするのにかかるのと同じくらい、コンソール ログ出力が一時的に停止するため、コンテキストが実際にロードされていると思われます。 Autowired Bean。したがって、Spring コンテキストの起動中に何か問題が発生したのではないかと疑っています。

これは、一時的に「停止」する直前のログ出力です。

[INFO] web.xml file = file:/F:/projects/matching/template/template-app/src/main/webapp/WEB-INF/web.xml
[INFO] Webapp directory = F:\projects\matching\template\template-app\src\main\webapp
2013-01-26 11:09:18.130:INFO:oejs.Server:jetty-8.1.7.v20120910
2013-01-26 11:09:20.704:INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one.

一時停止の後に続くのは次のとおりです。

2013-01-26 11:09:35.884:INFO:/:No Spring WebApplicationInitializer types detected on classpath
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.742:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
2013-01-26 11:09:36.743:WARN:oejw.WebAppContext:Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/F:/projects/matching/template/template-app/src/main/webapp/},file:/F:/projects/matching/template/template-app/src/main/webapp/
java.lang.NullPointerException

これで、NPE の原因を修正できると確信していますが、そのためには、Spring コンテキストで何が起こっているかを確認する必要があります。私は昨年、同僚が私が現在使用しているものと同じ構成であると信じているものでそれをセットアップしたときに、同じツール群で作業していました。

私は午前中ずっとウェブを検索しましたが、それについて役立つものは何も見つかりませんでした。Jetty を外部で実行し、戦争を組み立ててアプリを展開するという漠然とした提案だけでした。これはまさに私が望んでいるものではありません。

これは私のpomのビルド構成です:

<build>
    <pluginManagement>
    <plugins>
            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                    <warName>template</warName>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                    <webApp>
                        <jettyEnvXml>${jettyEnvXml-file}</jettyEnvXml>
                    </webApp>
                    <contextPath>template</contextPath>
                    <systemProperties>
                        <systemProperty>
                            <name>log4j.configuration</name>
                            <value>file:jetty/log4j-jetty.properties</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

これは、Jetty の log4j 構成です。

log4j.debug=true
log4j.threshold=ALL

log4j.rootLogger=DEBUG, consoleLogger

log4j.appender.consoleLogger=org.apache.log4j.ConsoleAppender
log4j.appender.consoleLogger.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleLogger.layout.ConversionPattern=%-5p [%t]: %m%n
log4j.appender.consoleLogger.Threshold=TRACE

ログの先頭にあるこの行と関係があるのでしょうか?

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

しかし、私の知る限り、それは無視できる単なる m2e のバグです。ただし、クラスパスに slf4j があります。

SpringJPA モジュールで HSQL を使用して単体テストを実行すると、問題なく動作するため、Jetty の問題か、log4j 構成の何かが偽物であると思われます。

アイデア、ヒント、ヘルプは大歓迎です。

4

1 に答える 1

0

クラスパスにslf4jがある場合、Jettyはslf4jを使用します。

slf4jのセットアップ/構成を確認してください。

実際にディスクに書き込んだり、コンソールに表示したりするために、ログイベントをlog4jにルーティングするようにslf4jを設定することもできます。

于 2013-01-28T17:58:50.957 に答える