2016-09-30 34 views
4

Eclipse BIRTレポートツールをラップし、winsw経由でWindowsサービスとして実行するSpringブートアプリケーションがあります。エンジンによって生成されたチャートを含むレポートがレンダリングされると、Springブートは、作成したフォルダに画像ファイルをWindows/Tempディレクトリに保存します。このフォルダとその内容は、スタートアップを超えて保存されますが、これは望ましいものではありません。SpringブートアプリケーションでBIRTによって作成されたイメージファイルの場所を変更する方法

アプリケーションは、ソフトウェアパッケージのすべてのインストールに存在する定義済みの場所に存在するデータフォルダに依存します。そのため、理想的な状況は、パッケージのデータフォルダに簡単に管理できるフォルダを作成することです。これを実現する方法はありますか(埋め込みTomcatサーバーがファイルを見つけて提供できる方法が望ましい)?

編集:問題の画像は、プロセスをレンダリングするのReportEngineによって生成されたので、私はそれがBIRTのものではありませんTomcatのことだと思うが、私はserver.tomcat.basedir=path/to/directoryを追加したことを確認すべきである@Magnus

により応答の結果を更新しました私のapplication.propertiesファイルにそれでも、Windows/Tempに書き込みます。

しかし、この返信は私には考えられました.BIRTのEngineConfigにはsetTempFolderメソッドがあります。目的のフォルダ(プロパティファイルのserver.tomcat.basedirの値)を指すように設定すると、一時フォルダでBIRTが動作しますが、生成されたイメージはまだWindows\Tempディレクトリに保存されます。

編集:更新2

私はEngineConfigでbirt.viewer.working.pathプロパティを設定し、それがReportDesignHandle(または多分ReportRunnable)から値を取得することによって設定されたことを確認することができました。変更された値を使用すると、ReportEngineは適切なディレクトリで作業を行いますが、画像はWindows\Tempフォルダに保存されます。 java.io.tmpdirプロパティをオーバーライドしても何も起こりませんでした。

編集:アップデート3

作品のこの種.. Windows\Tempで生成された画像用のフォルダを作成していないアプリケーションでHtmlRenderOption結果の画像フォルダの場所を設定する(イェーイ!)。しかし、それはHtmlRenderOptionで指定された場所に画像を置いていないので(boo!)、どこの画像を見るかは分かりませんので、そのような画像ファイルを定期的に整理することができます。

答えて

0

デフォルトでは、組み込みのtomcatは、java.io.tmpdirシステムプロパティで指定された一時ディレクトリにディレクトリを作成します。
アプリケーションプロパティでtomcat temp dirを手動で設定できますserver.tomcat.basedir

コードベースを見ると、一時ファイルの作成を扱う場所がいくつかあります。
私は、一時画像ディレクトリが設定されている主な場所を収集することができるので、ParameterAccessorクラスです。
ロジックはかなり複雑ですが、デフォルトは${birt.viewer.working.path}/report/imagesです。
現用パスのシステムプロパティが設定されていないか、ディレクトリが書き込み可能でない場合は、デフォルトでjava.io.tmpdirディレクトリになります。
システムプロパティbirt.viewer.working.pathを設定しようとしましたが、書き込み可能であることを確認します。
それが機能しない場合は、java.io.tmpdirシステムプロパティをオーバーライドする必要があります。

+0

短編小説を参照してください、動作しませんでした。長い話が元の投稿に編集されました。 –

+0

@TheHeadRush私は答えを更新しました。 – Magnus

+0

更新された結果。 –

1

HTMLRenderOptionでimageDirectoryを設定しようとします。

HTMLRenderOption options = new HTMLRenderOption(); 
options.setImageDirectory("path/to/image/directory"); 
... 
renderTask.setRenderOption(options); 

http://www.eclipse.org/birt/documentation/integrating/reapi.php

+0

ほぼあります。詳細については、オリジナル投稿のアップデート3のコメントをご覧ください。 –

+0

ここで画像はどこに生成されていますか? –

+0

イメージディレクトリの絶対パスを設定しましたか?そうしないと、プロジェクトフォルダ内に画像が生成されます。 –

関連する問題