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?