Como faço para tornar os nomes JNDI compatíveis com o GlassFish e o WildFly

Estou desenvolvendo um aplicativo Java EE 7 e tenho um requisito para que o aplicativo seja implantado em servidores de aplicativos executando o GlassFish 4.0 ou o WildFly 8.1.0. O problema que tenho é o GlassFish e o WildFly usar formatos ligeiramente diferentes para nomes JNDI, mas não consigo ver como tornar meu aplicativo compatível com ambos.

No GlassFish, meu arquivo persistence.xml faz referência à fonte de dados jdbc / myDataSouce, mas no WildFly a fonte de dados precisa ser java: / jdbc / myDataSource.

O mesmo também vale para as classes anotadas com @Resource. No GlassFish, a anotação para uma classe usando JavaMail seria @Resource (name = "mail / myMailSession"), mas para implantar no WildFly, seria necessário @Resource (nome = "java: mail / myMailSession").

Sei que poderia descompactar os arquivos EAR e JAR para editar manualmente arquivos como persistence.xml, mas não posso fazer isso para classes que foram anotadas com @Resource.

Existe uma maneira de permitir que meu aplicativo compatível seja implantado no GlassFish e no WildFly sem manter duas versões diferentes do código? Suponho que a resposta provavelmente esteja nos descritores de implantação específicos do aplicativo, mas não consigo encontrar nenhum exemplo que cubra esses dois cenários.

Alguém poderia indicar-me a direção correta, por favor?

questionAnswers(2)

yourAnswerToTheQuestion