2010-11-11 9 views
9

He leído que JCA es para integración de EIS heredada. ¿Esta especificación está orientada a los proveedores y no al desarrollador de la aplicación? Tengo curiosidad por saber de casos de uso donde los desarrolladores escribieron adaptadores JCA para resolver sus problemas técnicos o comerciales.Casos de uso para JCA

+1

Una buena pregunta, estos son algunos de los animales más raros que se encuentran en el reino J2EE/JEE. Intente buscar libros sobre el tema: | –

Respuesta

10

He escrito conectores JCA para todo tipo de sistemas finales (FTP, SFTP, archivos, sistemas financieros).

Esto es principalmente en el sector de banca de inversión donde tengo que enviar datos comerciales y/o estáticos a varios sistemas dentro y fuera del banco. Cualquier cosa, desde los servicios web RESTFul JSON/XML hasta las llamadas de socket a un mainframe, puede estar involucrado en una transacción comercial.

Así JCA viene en realidad es práctico es que proporciona un modelo de programación uniforme y puede ser gestionado por servidores de aplicaciones que ayudan a la puesta en común de la transaccionalidad, etc.

desea que el archivo de FTP que contiene el comercio muy caro para llegar (transaccionalmente garantizado)? JCA es una tecnología que puede usar para abordar eso.

< enchufe flagrante > voy a añadir que actualmente trabajo en un proyecto de código abierto llamado Ikasan que tiene gratuitas conectores JCA </flagrante enchufe > al igual que varios otros proyectos, como la mula e Integración de primavera. Por lo tanto, no es frecuente que el desarrollador promedio tenga que escribir el suyo.

+0

¿Puede explicarme más sobre 1) el enfoque que debemos tomar al escribir un adaptador jca utilizando llamadas de socket como ejemplo 2) cuál es el motivo para realizar llamadas desde el adaptador en lugar de realizar una llamada de socket directamente desde el código 3) ¿Cómo puede una llamada de socket participar en una transacción? No hay forma de propocionar la transacción al receptor de llamadas ¿verdad? ¿Puedes explicar más sobre cuál es la semántica de las transacciones en este escenario? –

+1

@Pangea: este es un tema profundo, pero en resumen: 1) Depende de si está escribiendo un conector entrante o un conector saliente (querrá leer sobre eso). 2) Tener un adaptador JCA es bueno porque separa los aspectos de conexión de la lógica empresarial central, el adaptador (generalmente incluido como RAR) se ocupará del manejo del socket, la agrupación de conexiones, la propagación de transacciones y mucho más (lea en JCA en el sitio de Oracle). 3) Ver 1), a veces es posible propagar la transacción que inicia su gestor de transacciones o que se inicia su gestor de transacciones. –

+1

Me quedé sin espacio para comentarios, pero para continuar 3). Piensa en cómo funciona una conexión/transacción de base de datos: es el mismo principio. El servidor de la aplicación puede iniciar la transacción que se propaga a la base de datos a través del conector de la base de datos. Sí, la mayoría de la conectividad de la base de datos está escrita como JCA debajo del capó :-) –

2

El JCA significa J2EE Connector Architecture, proporciona los medios para conectar componentes que se ejecutan en un servidor de aplicaciones J2EE con el mundo externo, muchos sistemas heterogéneos existentes.

En J2EE, puede escribir código de capa de presentación ejecutándose en contenedor web y enterprise bean en contenedor EJB, pero su aplicación no está en un vacío, necesita acceder a otros sistemas y su sistema necesita acceso a otro sistema . JCA solo proporciona una API estándar para acceder a sistemas externos, o a la que acceden sistemas externos.

Si usted es un proveedor de sistemas EIS, eso está bien, porque quiere que se acceda a su sistema en un servidor J2EE.

Si usted es un desarrollador de aplicaciones, también puede necesitar JCA, ya que puede necesitar acceder a otro sistema sin el adaptador de recursos JCA listo para usar en la aplicación, simplemente escriba el adaptador de recursos para usted.

2

JCA es un conjunto de contratos de conexión, hilos, transacciones, seguridad y ciclo de vida. Al cumplir estos contratos, puede descargar la mayor parte de su gestión de conexión, gestión de subprocesos, gestión de transacciones, seguridad, empaquetado, implementación, activación, desactivación, etc. al contenedor (servidor de aplicaciones compatible con JCA). Jca también proporciona un cci opcional (interfaz de cliente común) que permite a las aplicaciones acceder al adaptador.

Ahora bien, si escribir un conector compatible con jca o no realmente depende de los requisitos de sus aplicaciones.

Las personas generalmente escriben adaptadores jca para acceder a sistemas de archivos, jms, bases de datos, ldap, correo electrónico, mainframes, aplicaciones empaquetadas y casi cualquier otra EIS. Realmente es una prerrogativa del desarrollador averiguar si escribir uno es necesario, pero no es trivial escribir uno.

+0

Tengo un componente que habla con una aplicación tcp/ip. Toma los objetos como entrada y los traduce a cadenas de bytes fijos, los envía a la aplicación tcp/ip, obtiene la respuesta y luego transforma el gráfico resp to obj. El problema que tengo actualmente es que cada vez que este componente cambia, tengo que volver a empaquetar mi aplicación a medida que el componente se incluye junto con ella. ¿Tiene sentido implementar este componente como un adaptador JCA? De esta forma, puedo volver a implementar el adaptador y reiniciar mi aplicación. No es necesario volver a empaquetar. ¿Esto funciona? Inicialmente pensé en OSGi para poder realizar actualizaciones in situ. –

+0

Pero hacer que este componente heredado compatible con OSGi sea un trabajo adicional y parece que los sistemas de compilación que tenemos tampoco son compatibles con osgi, así que es más trabajo de lo que deseamos. –

+0

Creo que será mejor dejar que el adaptador se enfoque en el punto de integración, es decir, el mecanismo de handshake y la lectura/escritura de bytes desde/a un socket tcp/ip y deje que su aplicación haga el resto. Oracle tiene un adaptador jca de socket que es posible que desee verificar @ref. http://docs.oracle.com/cd/E21764_01/integration.1111/e10231/adptr_sock.htm#BABGEIBH –