2017-06-30 3 views
1

私は以下の問題があります。私はC:\Tomcat85\webapps\MyWebApp\Excel\myExcel.xlsにExcelファイルを書きます。Tomcat 8.5が新しいコンテンツを認識するのに時間がかかります

Javaアプリケーションがファイルの書き込みを終了するとすぐに、ユーザーがそれを使用するためのダウンロードを実行します。これにより404エラーが発生します。

私が数秒待ってページをリロードすると、すべてのダウンロードが正常に行われます(または、javaで5秒のスリープを追加すると、同じように動作します)。

私が結論づけているのは、この新しいExcelファイルが存在することをTomcatが認識して5秒後に提供できるということです。

Tomcatがこのタスクをより高速に実行できるようにする方法はありますか?たぶん、web.xml内のいくつかの設定を使って、 "/ Excel /"フォルダを別の方法で扱います。

Windows 10 64ビット、Tomcat 8.5、Java 7(java8を試してみることもできますが、違いはないと思います)

いくつかのコード:

new ExcelExport(remoteHandle, context).execute(outFileName, outMessage); 
// Thread.sleep(5000); 
httpContext.wjLoc = formatLink(outFileName); 
  • 睡眠はテストに応じて、コメントやコメントを外しています。睡眠から、私は404を得て、5秒で睡眠はうまくいきます。
  • httpContet.wjLocは、ファイルへのリンクとしてダウンロードを実行するだけです。私は、ファイルエクスプローラで、それは準備と書き込み可能な参照として

wiritingは、正常に動作しているが、私はURLでそれを開こうとする場合、私はデフォルトでキャッシュされているのと同じ404

+2

サンプルコードを投稿できますか?遅延を引き起こすあなたのコードにいくつかのリークがあるかもしれません。 –

+0

ちょっとしたコードを追加しました。あなたの興味に感謝します。 –

答えて

1

Resourcesを取得します。キャッシュエントリの再確認の間の時間(ミリ秒単位)は、パラメータによって定義され、this documentationで参照されます。デフォルトでは、その値は5秒です。

キャッシュを無効にする場合は、cachingAllowedfalseに設定するだけです。

+0

ありがとうItalo、私はあなたのアイデアをtryedしかしそれは動作しませんでした。私は/META-INF/context.xmlを追加し、内部に: ""を追加しました。その後、作業フォルダを削除し、Tomcatを再起動しました。結果は同じ404です。また、cachingAllowed = "false"で試しましたが、変更はありません。何が私の考えを維持している、私はキャッシュを無効にしたくないということですそれはTTLを減らす、私はそれがより速く利用できるようにしたい。他の考え?再びおかげで、フェデリコ。 –

+1

@FedericoAlvarez 'Context'要素には' cacheTTL'と 'cachingAllowed'パラメータがありません。 'Resources'要素があります。 'Resources'要素は、' Context'コンポーネントの中にネストすることができます(MAY)。 'Resources'要素がない場合は、追加します。 ''のようになります。 –

+0

ありがとうItalo!それはうまくいった!これにより: ' 'となります。今私は尋ねるべきです:これはパフォーマンスpenltyを持っていますか? Beacauseリソースはキャッシュされません(TTLを1に設定します)。あなたの経験は何ですか?再びおかげで、フェデリコ。 –

関連する問題