質問: in.read(buff, 0, buff.length)) != -1) { out.write(buff, 0, len); } out.flush(); } catch (IOException e) { } } catch (Exception e) { } } ``` 上記プログラムの *createKMZ()* 内部の処理時間がかかるためタイムアウトが発生していると推測しているため *createKMZ()* を非同期処理にし、HTTP接続を維持することができれば解決するのではないかと考えていますが 実装の方法がわかりません。 どなたか同じような問題に直面した経験がある方がいらっしゃれば解決方法をご教示頂きたいと思います。 よろしくお願いいたします。 ### 補足情報(言語/FW/ツール等のバージョンなど) Server version: Apache Tomcat/8.0.39 OS Version: 3.10.0-514.el7.x86_64 JVM Version: 1.8.0_111-b15
回答: broken pipeが出ている原因となる例外を握りつぶしているため、原因が特定できないと思料します。 createKMZ(); の実装内容(特にファイル出力の部分)がないので明確な回答ではないですが、例えば1つの処理中にもう1つのリクエストが要求された場合、コードを拝見した限りでは全く同じファイルへ出力したものを読み込んでいるため、例外が出ているのではないでしょうか。 最低でもスタックトレースは出して例外を正しく判断できるようにすべきでしょう。 ``` } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } ```