[Tomcat] Broken Pipeで致命的エラー

うーん、100%出力されるエラー、どうしていいかわからず・・・。

2006/09/15 15:31:47 org.apache.jk.server.JkCoyoteHandler action
致命的: Error in action code
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:446)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:654)
    at org.apache.jk.server.JkCoyoteHandler.action(JkCoyoteHandler.java:444)
    at org.apache.coyote.Response.action(Response.java:183)
    at org.apache.coyote.Response.finish(Response.java:305)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:301)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:673)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:607)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:786)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
    at java.lang.Thread.run(Thread.java:595)
2006/09/15 15:31:47 org.apache.jk.common.HandlerRequest invoke
情報: Unknown message 0

とある一覧表示のページに「詳細」ボタンを設け、その詳細ボタンが押されると、DBから詳細情報を読み出して別ウィンドウに表示する仕組みを作ったのですが・・・この別ウィンドウを閉じると、上記のような致命的エラーが出てしまう・・・。

ちょっとネットで調べてみると、IEに原因があるかもしれません、との情報が。試しにOperaで同じ操作をしてみると、Operaでは上記エラーが出ない。さらに謎だ~(;´Д`)

ひとまずこの件は保留にするので、忘れないようにメモメモφ(..)

解決法追記

解決した方法は、別ウィンドウを出したあとにソケットを閉じる、というものでした。

socketWrite0() がソケットに対して何かを書こうとしたけど、ソケットがすでに閉じているからBroken pipeになるので、別ウィンドウを表示したらソケットを閉じる処理を入れて、その後はソケットに対して書き込みをしないようにする、という感じの処理。
(Exceptionが発生したらキャッチして何かしていたかも…)

確か上記のような処理で解決していたと思います。

コメント

タイトルとURLをコピーしました