Accès à Java Connector Architecture (JCA) à partir d'un environnement non géré

StackOverflow https://stackoverflow.com/questions/2760251

  •  02-10-2019
  •  | 
  •  

Question

Nous utilisons un JCA pour l'interface avec une ressource réseau à faible niveau de l'intérieur WebSphere, mais nous avons une obligation d'être en mesure d'accéder à la même ressource réseau externe de Tomcat (c.-à-pas dans un environnement géré). La communication du réseau et mises en page de protocole est très bavard, donc nous préférons ne pas copier / coller plusieurs milliers de lignes de code (et ensuite de les maintenir séparément).

À la lecture de la spécification JCA, il est censé être un soutien pour exécuter le code dans un environnement non géré (comme Tomcat). Malheureusement, je ne sais pas ce les interfaces sont censés faire, ou comment les appeler à l'extérieur d'un environnement géré (la spécification est assez vague).

Y a-t-il des exemples de mise en œuvre là-bas qui montrent comment modifier un JCA pour être utilisable dans un environnement non géré?

Merci!

Était-ce utile?

La solution

Nous avons eu affaire similaire, où nous avons développé un connecteur pour accéder au stockage WebDav externe, et je voulais l'utiliser aussi d'une application autonome (non géré).

Je ne crois que la meilleure façon est de résoudre cette question au niveau de la conception, et d'organiser votre code d'une manière qui est JCA-agnostique et peut être facilement réutilisé la logique de base du connecteur. Ensuite, vous pouvez envelopper ce avec le code spécifique JCA qui expose le connecteur à l'AS. Il pourrait probablement même être emballé dans deux pot -. C'est au moins la solution que nous choisissons (mais nous empaqueté tout en un .jar)

Sinon, un connecteur JCA est la "colle" entre les trois parties suivantes:

  1. le serveur d'applications
  2. l'EIE
  3. la composante applicative.

Il devrait être possible de simuler les AS avec une implémentation légère des classes nécessaires, puis utilisez le connecteur JCA directement.

Un travail principal de l'AS par rapport à un connecteur JCA est de gérer la mise en commun des connexions, et de ce que je me souviens, l'interface correspondante que vous devez alors mettre en œuvre est ConnectionManager.

Le connecteur JCA reçoit une référence à un ConnectionManager, mais la mise en œuvre est AS spécifique. Rédaction d'une mise en œuvre légère qui permet la mise en commun rudimentaire (ou pas du tout mise en commun) semble réalisable.

J'avais écrit une fois diagramme séquence du mécanisme de l'allocation de connexion. Peut-être vous trouverez utile. Une autre interface est ResourceAdapter où vous définissez le démarrage / arrêt, mais facile à invoquer manuellement.

(Il y a probablement un peu plus que cela, et bien sûr dépend de ce que vos utilisations du connecteur JCA. Par exemple, si elle utilise Work et le WorkManager, il devient beaucoup plus compliqué à la maquette. Même remarque si la connecteur est transactionnel. Mais il ne semble pas être votre cas.)

Dans le cas contraire, je pense que le printemps a un certain soutien pour JCA, il peut être utile d'avoir un regard comment ils l'ont fait.

  

À la lecture de la spécification JCA, il y a   soi-disant un certain soutien pour exécuter la   code dans un environnement non géré

Pouvez-vous mentionner la partie spécifique de la spécification que vous faites référence à propos?

scroll top