TomeeでHTTPサーバーを作成していますが、webapp
ディレクトリにジャスパーレポートファイル(.jasper
)が配置されています。ブラウザでhttp://localhost:8080/test.jasper
にアクセスすると、ブラウザはファイルのダウンロードを促します。HTTPサーバーで.jasperファイルを提供するにはどうすればよいですか?
私のJavaプロジェクトでは、そのリンクにアクセスしてレポートをプレビューする簡単なコードを作成しています。私はasync-http-clientライブラリをリクエストしています。私のコードから
DefaultAsyncHttpClient client = new DefaultAsyncHttpClient();
BoundRequestBuilder brb = client.prepareGet("http://localhost:8765/qa/test.jasper");
Future<InputStream> f = brb.execute(new AsyncCompletionHandler<InputStream>() {
@Override
public InputStream onCompleted(Response resp) {
try {
String[][] data = {{"Jakarta"},{"Surabaya"},{"Solo"},{"Denpasar"}};
String[] columnNames = {"City"};
DefaultTableModel dtm = new DefaultTableModel(data, columnNames);
Map<String,Object> params = new HashMap<>();
JasperPrint jPrint = JasperFillManager.fillReport(
resp.getResponseBodyAsStream(),
params,
new JRTableModelDataSource(dtm)
);
JasperViewer jpView = new JasperViewer(jPrint,false);
jpView.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jpView.setSize(800, 600);
jpView.setLocationRelativeTo(null);
jpView.setVisible(true);
} catch (JRException ex) {
System.out.println(ex.getMessage());
}
return resp.getResponseBodyAsStream();
}
});
は、上記の、私は通常、私は
InputStream input = MainContext.class.getResourceAsStream(filename);
を使用することができますが、私は(あまりにストリーム)httpリクエストでファイル入力ストリームを交換したいエラーError loading object from InputStream
を得ました。
私はどのようにhttpサーバで.jasper
ファイルを処理できますか... ...?
通常、 '.jasper'ファイルは提供されません。むしろ '.pdf'や' .csv'などの出力ファイルはサーバ側が '.jasper'ファイルを実行した後に利用可能になります。ユーザーが '.jasper'ファイルをダウンロードすることを期待している場合を除いて、Jaspersoft Studioにダウンロードしてインストールすることを意味し、それを実行し、データベース接続を管理します。 –
はい私は、ユーザがレポートをダウンロードした後、作成するJavaアプリケーションを介して、 '.jasper'ファイルをダウンロードしたいと思っています。レポートは定期的なレポートとしてユーザに表示されます。 – yuda