Вопрос

Я пытаюсь развернуть пружинный пакет в OSGI (Fuse ESB). На мой взгляд, проект Maven позаботится о том, чтобы любой файл, доступный в папке ресурсов, будет доступен в Project ClassPath. Я сохранил файл в соответствии с ресурсами/Meta-Inf/Spring/Repo/test.db4o.

Вот запись в весеннем контексте.


<bean id="objectContainer" class="org.springmodules.db4o.ObjectContainerFactoryBean">
    <property name="databaseFile" value="classpath:META-INF/spring/repo/test.db4o" />
</bean>

После того, как я установлю и пытаюсь запустить приложение, я получаю следующее исключение.


java.io.FileNotFoundException: OSGi resource[classpath:META-INF/spring/repo/test.db4o|bnd.id=258|bnd.sym=taxonomydaoimplbundle] cannot be resolved to absolute file path because it does not reside in the file system: bundle://258.0:1/META-INF/spring/repo/test.db4o

Я пробовал разные комбинации, но Осги, похоже, не распознает этот файл. Любой указатель будет оценен.

-Спасибо

Это было полезно?

Решение

Я нашел эту проблему наконец. ObjectContainerFactoryBean полагается на OsgiresourceBundle для загрузки ресурса в качестве объекта файла. Хотя osgiresourcebundle обнаруживает метод, называемый getFile (), он не работает так, как задумано в среде OSGI. Он всегда ожидает протокола файла, тогда как ресурс, возвращаемый в виде URI, имеет протокол «пакет». Отсутствует исключение. Обходной путь - это использовать входные или geturl. Поскольку у меня не было исходного кода ObjectContainerFactoryBean, мне пришлось расширить этот класс, чтобы предоставить мою собственную реализацию, которая загружает файл в качестве входного потока.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top