Esta no es la forma correcta de hacer las cosas. Los recursos se deben agregar al nombre jndi local de EJB individuales. Esto es para separar el nombre de jndi utilizado en el código de bean de global jndi bindings establecido por el bean deployer. El mapeo del bean local jndi binding y el global binding se puede manejar a través de los descriptores de implementación específicos del servidor de aplicaciones ejb-jar.xml
.
Así, en lugar, usted debe declarar su @Resource
(lo que equivale a una indicación del nombre <resource-ref>
elemento de referencia de recurso y tipo) de esta manera:
@Resource(name = "jms/queue/aQueue")
private Queue queue;
Luego, en un descriptor de despliegue-servidor de aplicaciones específicas (por GlassFish es sun-ejb-jar.xml
, para JBoss es jboss.xml
, para WebLogic es weblogic-ejb-jar.xml
, etc.), declara un elemento <resource-ref>
que indica el nombre de referencia del recurso y el enlace jndi global a través del elemento <jndi-name>
.
<resource-ref>
<res-ref-name>jms/queue/aQueue</res-ref-name>
<jndi-name>resource/foo/bar/ONE_QUEUE</jndi-name>
</resource-ref>
Una vez que obtendrá todo el asunto de trabajo, será fácil de variabalize este descriptor de despliegue específico de servidor de aplicaciones utilizando Maven para diferentes entornos con perfiles y filtrado. Simplemente use una propiedad, active el filtrado de recursos y establezca diferentes valores en los perfiles. Algo así:
<resource-ref>
<res-ref-name>jms/queue/aQueue</res-ref-name>
<jndi-name>${my.jndi.name}</jndi-name>
</resource-ref>
ahora que se siente mejor :) – Bozho