4

一般に、EJB 内で (java.io を使用して) ローカル ファイルにアクセスすることは許可されていません。それでも、Excel ファイルを開いて apache.poi ライブラリを使用して編集する必要がある EJB があります。私がこのようなことをすると:

@Stateless
public class MyEJB {

public void editExcel(){
...
InputStream in =  MyEJB.class.getClassLoader().getResourceAsStream("/xls/ExcelFile.xls"); 

final Workbook generatedExcel = new XLSTransformer().transformXLS(in, beans);
...

} }

ファイルシステム構造:

MyEar.ear
--my-ejb.jar
---com
-----company
-------ejbs
----------MyEJB.class
---xls
-----ExcelFile.xls

この場合、ZipFile$ZipFileInputStream (ZipFileInputStream のプライベート 内部クラス) のインスタンスを取得し、XLSTransformer は IllegalArgumentException ("Your InputStream は OLE2 ストリームでも OOXML ストリームでもありませんでした") をスローします。 xls を取得し、代わりに my-ejb.jar 全体を表すストリームを取得します。

私の質問: この状況を解決する方法を知っていますか? EJB 内のファイルにアクセスするためのベスト プラクティスは何ですか?

どうもありがとう!

4

1 に答える 1