Как сделать имена JNDI совместимыми как с GlassFish, так и с WildFly?

Я занимаюсь разработкой приложения Java EE 7, и у меня есть требование, чтобы приложение было развернуто на серверах приложений, работающих под управлением GlassFish 4.0 или WildFly 8.1.0. У меня проблема в том, что GlassFish и WildFly используют несколько разные форматы для имен JNDI, но я не вижу, как сделать мое приложение совместимым с обоими.

В GlassFish мой файл persistence.xml ссылается на источник данных jdbc / myDataSouce, но в WildFly источником данных должен быть java: / jdbc / myDataSource.

То же самое относится и к классам, аннотированным @Resource. В GlassFish аннотацией для класса, использующего JavaMail, будет @Resource (name = "mail / myMailSession"), но для развертывания на WildFly это должно быть @Resource (name = "java: mail / myMailSession").

Я знаю, что мог бы распаковать файлы EAR и JAR для ручного редактирования файлов, таких как persistence.xml, но я не могу сделать это для классов, которые были аннотированы @Resource.

Есть ли способ разрешить развертывание моего скомпилированного приложения на GlassFish и WildFly без поддержки двух разных версий кода? Я предполагаю, что ответ, вероятно, лежит в дескрипторах развертывания приложения, но я не могу найти примеров, которые покрывают эти два сценария.

Кто-нибудь может указать мне правильное направление, пожалуйста?

Ответы на вопрос(2)

Ваш ответ на вопрос