当前位置: 代码迷 >> J2EE >> 请教这个是什么东东
  详细解决方案

请教这个是什么东东

热度:102   发布时间:2016-04-22 01:47:00.0
请问这个是什么错误
tomcat,javabean+servlet
异常信息:

Assembly code
2012-3-1 9:41:21 org.apache.tomcat.util.net.NioEndpoint$Poller processSendfile严重: java.lang.IllegalArgumentException: You can only write using the application write buffer provided by the handler.    at org.apache.tomcat.util.net.SecureNioChannel.write(SecureNioChannel.java:472)    at sun.nio.ch.FileChannelImpl.transferToArbitraryChannel(FileChannelImpl.java:465)    at sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:514)    at org.apache.tomcat.util.net.NioEndpoint$Poller.processSendfile(NioEndpoint.java:1244)    at org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1176)    at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1136)    at java.lang.Thread.run(Thread.java:662)


这是全部的异常信息
我只访问了一个servlet,就包这些了

------解决方案--------------------
最好具体的代码贴出来瞧瞧。
还真没遇到过。

这个应该是源代码
Java code
 /**     * Writes a sequence of bytes to this channel from the given buffer.     *     * @param src The buffer from which bytes are to be retrieved     * @return The number of bytes written, possibly zero     * @throws IOException If some other I/O error occurs     * TODO Implement this java.nio.channels.WritableByteChannel method     */    @Override    public int write(ByteBuffer src) throws IOException {        if ( src == this.netOutBuffer ) {            //we can get here through a recursive call            //by using the NioBlockingSelector            int written = sc.write(src);            return written;        } else {            //make sure we can handle expand, and that we only use on buffer            if ( (!this.isSendFile()) && (src != bufHandler.getWriteBuffer()) ) throw new IllegalArgumentException("You can only write using the application write buffer provided by the handler.");            //are we closing or closed?            if ( closing || closed) throw new IOException("Channel is in closing state.");            //the number of bytes written            int written = 0;            if (!flush(netOutBuffer)) {                //we haven't emptied out the buffer yet                return written;            }
  相关解决方案