Поместите ресурс в classpath во время выполнения - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно создать экземпляр org. apache .camel.guice.Main в моем приложении. По причинам, в которые я не хочу входить, я не могу упаковать файл jndi.properties в свой jar / bundle, который будет использоваться org. apache .camel.guice.Main.run () для bootstrap приложение. Я также не могу ничего записать в файловую систему.

У меня действительно есть свойства, которые обычно go в jndi.properties доступны во время выполнения как объект java, карта строк и так далее. Могу ли я записать их в jndi.properties «dynamici c» и поместить их в путь к классам (или добавить в загрузчик классов как «ресурс»)? Что-то вроде:

this.getClass().putResourceAsStream(properties);

Так что сторонние фреймворки, которые нужно загрузить через getResource () или getResourceAsStream (), могут это сделать?

1 Ответ

0 голосов
/ 09 апреля 2020

Мне удалось заставить это работать, выполнив 4 вещи:

  1. Использование конструктора в InitialContext, который принимает java .util.Properties в качестве аргумента для создания контекста
  2. Использование хака в Activator, чтобы убедиться, что в моем пакете приложения используется загрузчик классов контекста комплекта, а не загрузчик классов контекста потока
  3. Используйте требование комплектации в дополнение к импорту пакетов в заголовке.
  4. Использование org. apache .camel.guice.Main.run () для запуска верблюда

Большое спасибо Торбьёрну Андерсену в комментариях, что заставило меня go вернуться и поближе взглянуть на InitialContext api.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...