当我尝试将一个简单的测试war文件作为WSO2 Application Server版本5.3.0的ROOT上下文运行时,我收到以下错误:
[2016-03-19 17:24:00,177]错误 {org.apache.catalina.core.StandardWrapperValve} - Servlet.service() 对于带有路径[/]的上下文中的servlet [jsp]抛出异常[无法执行 具有根本原因的JSP编译类 java.lang.IllegalArgumentException:负时间 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)at 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.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.wso2.carbon.statistics.webapp.RequestIntercepterValve.invoke(RequestIntercepterValve.java:47) 在 org.wso2.carbon.bam.webapp.stat.publisher.WebAppStatisticPublisherValve.invoke(WebAppStatisticPublisherValve.java:104) 在 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.invoke(CompositeValve.java:62) 在 org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 在 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) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) 在 org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:611) 在 org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1739) 在 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) 在java.lang.Thread.run(Thread.java:745)
如果我运行与任何其他上下文路径相同的应用程序,例如/ testurl它完美地运作。那么只有在尝试将其作为ROOT运行时,可能导致上述负时间错误的原因是什么?
PS:要以root身份运行我的应用程序,我做了两件事:
<WebContextRoot>/carbon</WebContextRoot>
所以现在
默认碳管理应用程序可在/ carbon路径上使用。
(顺便说一下。)此测试应用只有一个index.jsp文件,其中包含以下内容:
<%@ 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>
我看过这个Negative time from JSP compiler并不适用于我的情况。在我的测试战争的路径中没有任何空格,句号或连字符。
这可能是由trailing slash in application context
引起的,但如果是,我无法弄清楚可能导致它的原因。
如何解决这个负面时间问题?