У меня есть EJB, который использует дополнительные файлы ресурсов (текстовые файлы шаблонов, помещенные в каталог, называемый «шаблоны»). Я не знаю, как получить доступ к содержимому каталога «templates» из приложения Java EE.
Я пытался поместить каталог в папку «EarContent / templates» или «EarContent / APP-INF / lib / templates» в проекте EAR. Каталог развертывается в домене weblogic, как и ожидалось. (Я искал это в файловой структуре домена weblogic.)
Но когда я хочу получить доступ к файлам, все пути к ресурсам, по-видимому, относятся к корневому каталогу домена weblogic, а не к развернутому приложению. Таким образом
URL dirURL = this.getClass().getClassLoader().getResource("templates");
возвращает "файл: / / templates",
File file = new File("templates");
открывает файл в « / templates» (если есть).
Как правильно получить доступ к дополнительным файлам ресурсов?
Редактировать: Я обнаружил, что, когда я помещаю каталог "templates" в проект EAR как "EarContent / APP-INF / classes / templates", обе части кода, упомянутые выше, находят его. Но каталог "classes" не является подходящим местом для размещения каталога "templates" в ... (Хотя бы потому, что среда IDE отфильтровывает в этом каталоге файлы, не относящиеся к классам, и не отображает их.)
Редактировать: Я немного играл с ним. Используя FileMon, я вижу, что weblogic полностью игнорирует каталоги, указанные в пути к классу MANIFEST.MF. Я пробовал как манифесты EJB, так и EAR, а weblogic даже не пытается найти путь, указанный в манифесте.
Manifest-Version: 1.0
Class-Path: APP-INF/