WSO2 Application Server バージョン 5.3.0 の ROOT コンテキストとして単純なテスト war ファイルを実行しようとすると、次のエラーが発生します。
[2016-03-19 17:24:00,177] エラー {org.apache.catalina.core.StandardWrapperValve} - サーブレット [jsp] の Servlet.service() がパス [/] のコンテキストで例外をスローしました [クラスをコンパイルできませんJSP] と根本原因 java.lang.IllegalArgumentException: Negative time at java.io.File.setLastModified(File.java:1421) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:377) at org. apache.jasper.compiler.Compiler.compile(Compiler.java:354) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java: 657) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) で org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) で org.apache.jasper.servlet.JspServlet .service(JspServlet.java:339) で javax.servlet.http.HttpServlet.service(HttpServlet.java:727) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) で org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) で org. org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve. java:122) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) で org.org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) の apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) org.wso2.carbon.statistics.webapp.RequestIntercepterValve.invoke( org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve. java:99) org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) で org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57) でorg.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) org.wso2.carbon.tomcat.ext.valves.CompositeValve.org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) で org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) で (CompositeValve.java:62) を呼び出すorg.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) で org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) で org.apache.catalina.connector .CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1698) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で org .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
/testurl などの他のコンテキスト パスと同じアプリケーションを実行すると、完全に機能します。では、ROOT として実行しようとした場合にのみ、上記の負の時間エラーが発生する原因は何でしょうか?
PS: アプリをルートとして実行するために、次の 2 つのことを行いました。
- 他のすべてのアプリを webapps ディレクトリから移動し、戦争の名前を ROOT.war に変更しました
- ./repository/conf/carbon.xml で WebContextRoot を設定した
<WebContextRoot>/carbon</WebContextRoot>
ので、デフォルトの炭素管理アプリが /carbon パスで利用できるようになりました。(ところで、これは完全に機能します。)
このテスト アプリには、次の内容の index.jsp ファイルが 1 つだけ含まれています。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.util.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test headers</title>
</head>
<body>
<%
out.println("request.getServerName()="+request.getServerName()+"</br>");
String[] serverurl= request.getServerName().split("\\.");
String clientcode=serverurl[0];
out.println("clientcode="+clientcode+"</br>");
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
out.println(key+"="+value+"</br>");
}
%>
</body>
</html>
JSP コンパイラからのこの Negative time を見たことがありますが、私の場合は当てはまりません。私のテスト戦争のパスには、スペース、ピリオド、またはハイフン文字はどこにもありません。が原因である可能性がありますがtrailing slash in application context
、そうである場合、何が原因である可能性があるのか わかりません。
この負の時間の問題を解決するにはどうすればよいですか?