java - significado - jca que es
¿Necesita un adaptador de recursos JCA 1.6 una ManagedConnectionFactory? (1)
He escrito un adaptador de recursos JCA antes .
Sin embargo, ahora me encuentro en una posición de tener que escribir uno solo para acceder al BootstrapContext
y su WorkManager
asociado, y de manera efectiva por ninguna otra razón.
Si estoy leyendo la especificación correctamente, y esa es mi pregunta, parece que si quiero que alguien pueda usar mi adaptador de recursos de una manera que cumpla con las especificaciones, aún necesito implementar ManagedConnectionFactory
, porque parece que solo las fábricas de conexiones de usuario vendidas por las implementaciones de ManagedConnectionFactory
son elegibles para la inyección a través de la anotación @Resource
.
Adelante, léelo de nuevo; Esperaré. :-)
En un mundo perfecto, me gustaría escribir mi implementación de ResourceAdapter
, anotarla con @Connector
, especificar todos los bits de @ConfigProperty
, empacarla en un archivo .rar
y terminarla.
Sin embargo, me parece que la especificación exige efectivamente que toda la comunicación entre el consumidor (un EJB sin estado en mi caso) y el módulo de adaptador de recursos se realice a través de una fábrica de conexiones de usuario.
Por ejemplo, la sección 6.10.1 dice:
Un adaptador de recursos debe proporcionar implementaciones de las siguientes interfaces:
- javax.resource.spi.ManagedConnectionFactory
- javax.resource.spi.ManagedConnection
- javax.resource.spi.ManagedConnectionMetaData
Pero la sección 18, la sección sobre anotaciones, no parece prever la aplicación de esto de manera significativa.
¿Es este el caso? Supongo que debe ser así, pero me gustaría saber de las personas que han creado un adaptador de recursos 1.6.
"Esta sección describe los requisitos para el contrato de gestión de conexión".
¿Es legal, usando solo anotaciones de JCA 1.6, simplemente definir una implementación de ResourceAdapter con básicamente nada más en el módulo?
Sí. esto esta bien.
La especificación indica en la sección 19.2 que un adaptador de recursos salientes (que debería ser) debe {handwave handwave} hacer uso de la administración de conexiones,
contratos de gestión de transacciones y administración de seguridad. En los tres casos, solo quiero indicar -preferiblemente omitiendo anotaciones y / o código- que no creo que ninguno de ellos
Si no necesita capacidades de comunicación de salida, no tiene que definirlas (fábrica de conexiones, fábrica de conexiones gestionadas, etc.)
¿Es suficiente simplemente construir un POJO que implemente ResourceAdapter, anotarlo con @Connector e ir desde allí?
Sí.
¿Puedo luego inyectar un POJO de este tipo en mi EJB usando la anotación @Resource?
No creo que Java Bean "ResourceAdapter" pueda ser inyectado usando la anotación @Resource. Cada vez que se implementa / habilita el adaptador de recursos / se inicia el servidor,
GlassFish arrancará el adaptador de recursos.