jetty-maven-plugin を使い始めたばかりです。
ログとシステム出力に関して奇妙な動作を見つけました。
mavenでjettyを起動すると
mvn -Djetty.port=8093 -Dlog4j.configuration=file:src/log4j.properties jetty:run
Bean コンストラクターの sysout メッセージが表示されます。
その後、 http://my.local.host:8093/api/rest/admin/housesという URL をリクエストすると、ブラウザーには正しいページが表示されますが、家に似たものは何も表示されません! コンソールまたはログ ファイルで。
ただし、Jetty、Spring などからの他のいくつかの INFO メッセージがそこに出力されます。
@Controller
public class AppAdminClientJsonController {
private final static Logger logger =
LoggerFactory.getLogger(AppAdminClientJsonController.class);
public AppAdminClientJsonController() {
System.out.println("----------AppAdminClientJsonController----------");
}
@RequestMapping(value = "/admin/houses", method = RequestMethod.GET)
public @ResponseBody
List<House> getHouses() {
logger.warn("house!");
System.out.println("house!!");
return Arrays.asList(new House("somesite", "http://somesite.com"));
}
}
そのため、通常、Jetty は私のロガーを尊重せず、ファンキーな方法でシステムの出力ストリームをオーバーライドするため、サーバーが起動して実行された後は何も出力されません。
これは何ですか?
pom.xml のプラグインの部分
<plugin>
<!-- http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Quick_Start:_Get_Up_and_Running -->
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.8.v20121106</version>
<configuration>
<webAppSourceDirectory>${basedir}/${webappRootPath}</webAppSourceDirectory>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/</contextPath>
<descriptor>${basedir}/${webappRootPath}/WEB-INF/web.xml</descriptor>
</webAppConfig>
</configuration>
</plugin>
アップデート
System.out オブジェクト自体を印刷しようとしました。私は正しかった、Jetty はそれを上書きしました:
春の初期段階では、 java.io.PrintStream@175390b7 でした。
サーバーの起動後、 java.io.PrintStream@9c783fc になりました