Я знаю, что вообще не разрешено обращаться к локальным файлам (с java.io) внутри EJB: тем не менее, у меня есть EJB, который должен открыть файл 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 («Ваш InputStream не был ни потоком OLE2, ни потоком OOXML»), поскольку он ожидает InputStream, представляющий ExcelFile.xls, и вместо этого получает поток, представляющий весь my-ejb.jar.
Мои вопросы: вы знаете, как решить эту ситуацию? Какова наилучшая практика для доступа к файлу в EJB?
Большое спасибо!
Что происходит, когда вы удаляете, что слэш? (см. также [эта запись] (http://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath-in-java)) – kiwiwings
Это не поможет ..: ( – Federico