首页 > 应用开发 > Java > Tomcat异常讲解
现象如下:
Tomcat7启动后,后台抛出如下异常,前台一直无法登陆
Exception in thread ""http-bio-8080"-exec-6" java.lang.OutOfMemoryError: PermGen space
Exception in thread ""http-bio-8080"-exec-9" java.lang.OutOfMemoryError: PermGen space
Exception in thread "schedulerFactory_Worker-3" java.lang.OutOfMemoryError: PermGen space
Exception in thread ""http-bio-8080"-exec-2" java.lang.OutOfMemoryError: PermGen space
Exception in thread "Timer-0" java.lang.OutOfMemoryError: PermGen space
给
tomcat指定的
jdk加大启动的内存参数
-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m
在尝试以下操作前,请先关闭杀毒软件,确保不是受杀毒软件的影响;
部署的系统报如下错误,就是百度杀毒引起的。
报错内容:
Jun 03, 2013 1:09:49 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
这样的问题是你的页面中含有``的注释,去掉就好了,tomcat7.0.20.
tomcat 7对
EL表达式的语法要求比较严格,例如
"${owner.new}"因包含关键字
new就会导致解析出错。
问题是出来了,怎么解决呢?有三种,如下:
java规范,修改对象的属性名称,要求不包含
java关键字;EL表达式,例如
"${owner.new}"可以修改为
"${owner['new']}";tomcat属性,忽略对
EL表达式的关键字检查。修改
$CATALINA_BASE/conf/catalina.properties文件,添加
org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true选项。出现
HTTP Status 405 - HTTP method GET is not supported by this URL原因是:
Httpservlet的
Servlet没有重写对于请求和响应的处理方法:
doGet或doPost等方法,默认调用父类的
doGet或doPost等方法。HttpServlet的doGet或doPost等方法覆盖了你写的到
doGet或doPost等方法。不管是1或2,父类
HttpServlet的doGet或doPost等方法默认实现是返回状态码是
405的Http错误表示 对于指定资源请求方法不被允许。
解决方法:
doGet或doPost等方法。Servlet中重写
doGet或doPost等方法来处理请求和响应时,不要调用父类的
doGet或doPost等方法即去掉
supper.doGet(request,response)和super.doPost(request,response);当发生在如下错误的时候,有一个方案可行,
java.lang.IllegalStateException: Cannot forward after response has been committed
当你有多个跳转的页面的语句时候,好好检查一下,当
转发 或者
重定向的时候,需要在后加一个
retrun 即可。
服务器中不允许多次跳转,否则会下面这个错误。
因为服务器端使用
sendRedirect跳转到客户端的时候,不能在使用
req.getRequestDispatcher("跳转的页面").forward(req, reqs);跳转;
所以在跳转之后,
return就不会往下执行。
protected void login(HttpServletRequest req, HttpServletResponse reqs) throws ServletException, IOException {
// TODO Auto-generated method stub
if(req.getUserPrincipal()!=null){
String userID = req.getRemoteUser();
boolean bol = req.isUserInRole(USER_ROLE_ADMIN);
UserModel userModel =connectionDao.getUserModelByUserID(userID);
if(bol){
req.getSession().setAttribute("user",userModel);
reqs.sendRedirect(req.getContextPath()+"/admin/main.jsp");
return;
}else{
reqs.sendRedirect(req.getContextPath()+"/index.jsp");
return;
}
} }错误详情:
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleLogin]]
at java.util.concurrent.FutureTaskStartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBaseSync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutorWorker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleLogin]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> * in servlet mapping
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3217)
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3192)
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1302)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1323)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:346)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
2012-8-23 14:28:31 org.apache.catalina.core.ContainerBase startInternal
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTaskStartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBaseSync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutorWorker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
2012-8-23 14:28:31 org.apache.catalina.startup.Catalina start
严重: Catalina.start:
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:675)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:451)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
2012-8-23 14:28:31 org.apache.catalina.startup.Catalina start
信息: Server startup in 984 ms
错误原因:
已经发布到
tomcat上的某个项目的
servlet过滤器配置错误。
如在
web.xml下,将过滤规则定为
*就是一种错误,需要更正为
/*或者其他(但是必须要有
/开头,表示当前项目)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69989885/viewspace-2869878/ ,如需转载,请注明出处,否则将追究法律责任。