相关疑难解决方法(0)

Java NIO:IOException:Broken pipe是什么意思?

对于我的一些Java NIO连接,当我有一个SocketChannel.write(ByteBuffer)调用时,它抛出一个IOException:"Broken pipe".

什么原因导致"管道破裂",更重要的是,是否有可能从该状态恢复?如果它无法恢复,似乎这是一个好的迹象,表明发生了不可逆转的问题,我应该简单地关闭这个套接字连接.这是一个合理的假设吗?是否曾经有一段时间,当IOException套接字连接仍然在第一个地方正确连接时(而不是某个时候失败的工作连接)会发生这种情况?

在一个侧面说明,它是明智的做法始终调用SocketChannel.isConnected()在尝试之前SocketChannel.write(),如果是这样,可以同时假设该连接是"破",如果两者都应该被关闭SocketChannel.isConnected(),并SocketChannel.isConnectionPending()false

谢谢!

java nio

89
推荐指数
3
解决办法
14万
查看次数

将InputStream写入HttpServletResponse

我有一个我想要写入HttpServletResponse的InputStream.这种方法由于使用byte []而花费的时间太长

InputStream is = getInputStream();
int contentLength = getContentLength();

byte[] data = new byte[contentLength];
is.read(data);

//response here is the HttpServletResponse object
response.setContentLength(contentLength);
response.write(data);
Run Code Online (Sandbox Code Playgroud)

在速度和效率方面,我想知道什么是最好的方法.

java servlets inputstream outputstream java-ee

19
推荐指数
1
解决办法
6万
查看次数

tomcat中的非容器线程错误是什么?

catalina.out我的日志中,我Tomcat7收到由第三方库引起的错误,该库以以下内容开头:

INFO: An error occurred in processing while on a non-container thread. The connection will be closed immediately
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
Run Code Online (Sandbox Code Playgroud)

在非容器线程中发生错误的真正含义是什么?

我试图通过Thread从我的应用程序代码中生成一个新的异常来获取类似的日志消息:

new Thread(){
    @Override
    public void run() {
        Integer.parseInt("boom");
    }
}.start();
Run Code Online (Sandbox Code Playgroud)

但它导致了

Exception in thread "Thread-28" java.lang.NumberFormatException: For input string: "boom"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at ...
Run Code Online (Sandbox Code Playgroud)

所以问题是:当我看到顶部引用的日志时,它意味着什么?在非容器线程中发生错误是什么意思?我该如何重新创建呢?

java tomcat log4j tomcat7

16
推荐指数
2
解决办法
5367
查看次数

在服务器上部署一段时间后无法连接数据库

我在我的服务器上上传了我的war文件,它在部署后完美运行,但一段时间后它显示异常.我正在使用struts2和hibernate

hibernate.cfg.xml

<session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dbName</property>
    <property name="hibernate.connection.username">UserName</property>
    <property name="hibernate.connection.password">Password</property>
    <property name="hibernate.connection.zeroDateTimeBehavior">round</property>  
    <property name="autoReconnect">true</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="maxIdleTime">0</property>
    <property name="use_sql_comments">true</property>
    <property name="hibernate.connection.pool_size">20</property>
    <property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
    <property name="current_session_context_class">thread</property> 
</session-factory>
Run Code Online (Sandbox Code Playgroud)

在控制台上执行查询后,它显示如下 Exception

263512233 [http-bio-12414-exec-1768] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 08003
263512233 [http-bio-12414-exec-1768] ERROR org.hibernate.util.JDBCExceptionReporter - No operations allowed after connection closed.Connection was implicitly closed by the driver.
org.hibernate.exception.JDBCConnectionException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.loader.Loader.doList(Loader.java:2545)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:459) …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate c3p0

9
推荐指数
2
解决办法
1万
查看次数

javax.xml.ws.WebServiceException的问题:com.ctc.wstx.exc.WstxIOException:null

大家下午好.

我们这里有一个非常奇怪的问题.我们有一个网络服务,许多客户端连接,直到周二他开始在控制台上出现以下异常时一切正常:

javax.xml.ws.WebServiceException: com.ctc.wstx.exc.WstxIOException: null
 at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:112)
 at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:284)
 at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:339)
 at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93)
 at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:481)
 at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
 at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
 at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
 at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
 at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:75)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Thread.java:619)
Caused by: com.ctc.wstx.exc.WstxIOException: null
 at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313)
 at com.sun.xml.ws.streaming.XMLStreamWriterUtil.getOutputStream(XMLStreamWriterUtil.java:97)
 at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:319)
 at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142)
 at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109)
 ... 27 more
Caused by: …
Run Code Online (Sandbox Code Playgroud)

java webserver exception

6
推荐指数
0
解决办法
2万
查看次数

防止ClientAbortException

当我尝试将数据发送到客户端浏览器时,我收到此异常.我使用apache POI lib生成一个Excel文件,如下例所示:

workbook = generateData();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + this.filename);
out = response.getOutputStream();
workbook.write(out);
Run Code Online (Sandbox Code Playgroud)

这适用于少量数据,但每次我尝试使用大量数据时它都无法工作.应用程序需要超过30秒才能生成数据,这是否太长,我可以阻止这种情况吗?

ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
    at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:318)
    at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:274)
    ...
Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:539)
    at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:162)
    at org.apache.coyote.Response.doWrite(Response.java:560)
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
Run Code Online (Sandbox Code Playgroud)

java tomcat

5
推荐指数
0
解决办法
2万
查看次数