精华内容
下载资源
问答
  • 出现这种错误时,在Spring Boot启动的main函数中增加 TomcatURLStreamHandlerFactory.disable() 即可。文章中将通过debug的形式对出现这种错误进行分析,或者不使用tomcat作为内嵌web容器,使用jetty也可避免错误

    启动错误分析以及解决方法

    下图为启动报错信息
    WX20171009-154104.png

    红色框选中位置是真正错误原因,接下来,查看java.net.URL类,发现(如下图红框中代码)
    1507535315897.jpg
    只要factory存在,就会抛出异常,猜想可能是由于已经有某个类创建了factory
    通过查看文档,发现TomcatURLStreamHandlerFactory.disable()方法表示不使用默认的Tomcat中创建的factory,这里也验证了是由于已经有其他类创建了factory
    通过debug,发现redisson(redis的第三方客户端jar,与jedis功能类似)在创建RedissonClient类时,执行如下方法
    WX20171009-155650.png
    上图是在Config.fromYAML(…)->new ConfigSupport()->URLBuilder.init()中发现,很明显可以看出,在执行init时,会先把factory置空,然后再新创建一个factory,但是Tomcat创建factory时,没有置空,所以出现了冲突问题。
    目前测试中,暂未发现加上TomcatURLStreamHandlerFactory.disable()后会出现其他问题。

    原创文章,转载请注明出处。

    展开全文
  • 在编写java ee应用的时候,在一个Servlet里的的初始化(init)里启动了一个多线程(用netty写的进行socket通信的),在Servlet里的销毁(destory)里手动显示的关闭netty的线程,但是却报如下错误,请问该怎么解决?...

    在编写java ee应用的时候,在一个Servlet里的的初始化(init)里启动了一个多线程(用netty写的进行socket通信的),在Servlet里的销毁(destory)里手动显示的关闭netty的线程,但是却报如下错误,请问该怎么解决?

    09-Jan-2017 14:24:07.384 严重 [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [electric] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@637604d1]) and a value of type [io.netty.util.internal.InternalThreadLocalMap] (value [io.netty.util.internal.InternalThreadLocalMap@6c896b26]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

    09-Jan-2017 14:24:07.393 信息 [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]

    09-Jan-2017 14:24:07.393 信息 [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]

    09-Jan-2017 14:24:07.393 信息 [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]

    09-Jan-2017 14:24:07.394 信息 [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]

    09-Jan-2017 14:24:09.468 信息 [nioEventLoopGroup-3-1] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

    java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1295)

    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1283)

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1148)

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109)

    at io.netty.buffer.PoolArena.freeChunk(PoolArena.java:279)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.freeEntry(PoolThreadCache.java:456)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:426)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:418)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:275)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:266)

    at io.netty.buffer.PoolThreadCache.free0(PoolThreadCache.java:239)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:235)

    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:359)

    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:345)

    at io.netty.util.concurrent.FastThreadLocal.remove(FastThreadLocal.java:226)

    at io.netty.util.concurrent.FastThreadLocal.removeAll(FastThreadLocal.java:67)

    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:146)

    at java.lang.Thread.run(Thread.java:745)

    Exception in thread "nioEventLoopGroup-3-1" java.lang.NoClassDefFoundError: io/netty/buffer/PoolArena$1

    at io.netty.buffer.PoolArena.freeChunk(PoolArena.java:279)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.freeEntry(PoolThreadCache.java:456)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:426)

    at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:418)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:275)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:266)

    at io.netty.buffer.PoolThreadCache.free0(PoolThreadCache.java:239)

    at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:235)

    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:359)

    at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:345)

    at io.netty.util.concurrent.FastThreadLocal.remove(FastThreadLocal.java:226)

    at io.netty.util.concurrent.FastThreadLocal.removeAll(FastThreadLocal.java:67)

    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:146)

    at java.lang.Thread.run(Thread.java:745)

    Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1285)

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1148)

    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1109)

    ... 14 more

    Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1295)

    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1283)

    ... 16 more

    Disconnected from server

    tomcat 版本是 tomcat9=m14,netty用的netty-all 4.1.5.

    请问该如何解决呢?

    展开全文
  • 使用weblogic部署时,没有报错。客户现场使用tomcat后报错。 ...具体的原因就是在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse respons...

    使用weblogic部署时,没有报错。客户现场使用tomcat后报错。

     

    在tomcat下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
    没有妥善处理好的原因。
    具体的原因就是
    在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
    有一段这样的代码
    finally {
          if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
        }
    这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
    response.getOutputStream()相冲突的!所以会出现以上这个异常。

    然后当然是要提出解决的办法,其实挺简单的。

    在使用完输出流以后调用以下两行代码即可:
    out.clear();
    out = pageContext.pushBody();

    -----------------------------------------------------------------------------------------------------------------------------------

    最后,这里是一个输出彩色验证码例子(这样的例子几乎随处可见)
    imag.jsp

    <%@ page  import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
    <%@ page import="java.io.OutputStream" %>
    <%!
    Color getRandColor(int fc,int bc){
    Random random = new Random();
    if(fc>255) fc=255;
    if(bc>255) bc=255;
    int r=fc+random.nextInt(bc-fc);
    int g=fc+random.nextInt(bc-fc);
    int b=fc+random.nextInt(bc-fc);
    return new Color(r,g,b);
    }
    %>
    <%
    try{
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    OutputStream os=response.getOutputStream();
    Graphics g = image.getGraphics();
    Random random = new Random();
    g.setColor(getRandColor(200,250));
    g.fillRect(0, 0, width, height);

    g.setFont(new Font("Times New Roman",Font.PLAIN,18));
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155>
    {
    int x = random.nextInt(width);
    int y = random.nextInt(height);
    int xl = random.nextInt(12);
    int yl = random.nextInt(12);
    g.drawLine(x,y,x+xl,y+yl);
    }
    String sRand="";
    for (int i=0;i<4>
    String rand=String.valueOf(random.nextInt(10));
    sRand+=rand;
    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    g.drawString(rand,13*i+6,16);
    }
    session.setAttribute("rand",sRand);
    g.dispose();

    ImageIO.write(image, "JPEG",os);
    os.flush();
    os.close();
    os=null;
    response.flushBuffer();
    out.clear();
    out = pageContext.pushBody();

    }
    catch(IllegalStateException e)
    {
    System.out.println(e.getMessage());
    e.printStackTrace();
    }%>

    -------------------------------------------------------------------------------------------------------------------------------

    转载于:https://www.cnblogs.com/tashaxing/p/3453847.html

    展开全文
  • tomcat下jsp出现的错误

    千次阅读 2010-04-27 20:54:00
    这天在做验证码测试的时候,jsp报了一个这样的错误:getOutputStream() has already been called for this response 于是上网查了一下。...具体的原因就是在tomcat中jsp编译成servlet之后在函数_jspServic

    这天在做验证码测试的时候,jsp报了一个这样的错误:

     

    于是上网查了一下。原因如下:

    出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
    没有妥善处理好的原因。
    具体的原因就是
    在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
    有一段这样的代码
    finally {
          if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
        }
    这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
    response.getOutputStream()相冲突的!所以会出现以上这个异常。

     

    解决的方法还是蛮简单的,只需要在使用完输出流以后调用以下两行代码即可:

    展开全文
  • spring boot项目显示3行日志错误,内置tomcat不可使用 首先这中错误是只显示三行 第一种方法是没有用spring-boot-starter-web;在pom中将这个依赖放在第一个; 第二种方法是继承ServletInitializer是Servlet初始化...
  • 当我在tomcat(5.5.34)中运行它时,它工作正常,但是当我在JBoss(6.1 final)中运行它时,出现错误TransformerException: Instance method call to method getScoreXMLTagClass requires anObject instan...
  • 于是很自然的在两个web的lib下面分别放了一个aplit.jar作为jni入口,后来发现使用搜索的时候总是只有一个能用,另一个在加载海量分词动态库的时候挂起,也就是java的System.loadLibary函数,而且有一个规律,第一次加载这...
  • 我们上文说到直接在bootstrap里面启动tomcat的main函数会报jsp无法解析的错误,有兴趣的小伙伴可以把ROOT目录下的index.jsp 换成index.html,这样访问是可以的,今天我们就来聊一聊这个jsp解析器以前的启动方法...
  • 遇到一个场景是web项目中需要使用C++的库,...的错误,但是脱离tomcat测试就是ok了,那一定是classpath中没有对应路径了,但是tomcat中用java直接访问啥问题都没啊,怀疑tomcat启动脚本并没有设置对应的classpath,而to
  • SpringBoot的main函数是整个程序的入口,SpringBoot连Tomcat作为一个插件都集成进去了,所以就跟之前的SSM架构不一样,直接点击运行该main函数,再去浏览器查看就可以看到让人兴奋的“Hello World!”。但是问题来了...
  • 我们上文说到直接在bootstrap里面启动tomcat的main函数会报jsp无法解析的错误,有兴趣的小伙伴可以把ROOT目录下的index.jsp 换成index.html,这样访问...
  • 前段时间,初次接手项目,需要将java bean存储到redis中,一切编码完毕,上测试环境,程序很快就会停止,后来查看tomcat日志,发现如下错误:后来经过多次定位,发现新写的java bean,新写了带参的构造函数,没有...
  • java编写简单实用的类似tomcat的web应用服务器 com.zxy.common.Com_Fun类:通用函数类 com.zxy.common.Com_Para类:全局变量类 com.zxy.common.Init_Page类:初始化全局变量 com.zxy.log.UsAdmin_Log类:错误日志...
  • Tomcat6.0_API帮助文档

    2015-06-26 14:59:22
    错误 注释类型 类/接口 每个类、接口、嵌套类和嵌套接口都有各自的页面。其中每个页面都由三部分(类/接口描述、摘要表,以及详细的成员描述)组成: 类继承图 直接子类 所有已知子接口 所有已知实现类 类/接口声明...
  • 我们上文说到直接在bootstrap里面启动tomcat的main函数会报jsp无法解析的错误,有兴趣的小伙伴可以把ROOT目录下的index.jsp 换成index.html,这样访问是可以的,今天我们就来聊一聊这个jsp解析器以前的启动方法...
  • 今天早晨部署工程时,偶然间点了一下自己所做的一个利用存储过程导出Excel文件的按钮,查看了一下Tomcat,发现报了一个“关闭prepareStatement对象时错误,超出了存储过程、函数、触发器或视图的最大嵌套层数(最大...
  •  在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因。  具体的原因就是:  在tomcat中jsp编译成servlet之后在函数_jspService...
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的原因。 具体的原因就是 在tomcat中jsp编译成servlet之后在函数_jspService(Ht...
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因。具体的原因就是在tomcat中jsp编译成servlet之后在函数_jspService(HttpServle...
  • 今天早晨部署工程时,偶然间点了一下自己所做的一个利用存储过程导出Excel文件的按钮,查看了一下Tomcat,发现报了一个“关闭prepareStatement对象时错误,超出了存储过程、函数、触发器或视图的最大嵌套层数(最大...
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的原因。 具体的原因就是 在tomcat中jsp编译成servlet之后在函数_jspService(Ht...
  • tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的...
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的原因。 具体的原因就是 在tomcat中jsp编译成servlet之后在函数_jspService(HttpServ...
  • 在main函数中执行excel导出是可以的,但是部署到tomcat中就会抱一下错误,为什么呢,求解!SEVERE:Servlet.service()forservlet[Export]incontextwithpath[/auditproj]threwexception...
  • 原文地址:http://blog.csdn.net/alexwan/archive/2007/02/13/1508871.aspx在tomcat5下jsp中出现此错误一般都是在jsp...具体的原因就是:在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的原因。 具体的原因就是 在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest ...
  • tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的...
  • tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等), 没有妥善处理好的原因。 具体的原因就是 在tomcat中jsp编译成servlet之后在函数_jspService(Http...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 235
精华内容 94
关键字:

tomcat函数错误