Exemple d'adaptateur
Si vous souhaitez utiliser un transport qui n'est pas fourni avec HCL Commerce, vous disposez d'un exemple d'adaptateur que vous pouvez utiliser comme base pour développer un adaptateur de ressource JCA.
- Classes Java
- Fichiers de métadonnées
- Fichier descripteur de déploiement
Exemples de classes Java d'adaptateur
Les exemples de classes Java se trouvent dans le répertoire suivant :
- WCServer_enterprise_archive/Enablement-JCASampleConnector/connectorModule
Fichier de métadonnées
L'exemple d'adaptateur contient les fichiers de métadonnées suivants :
- META-INF/MANIFEST.MF
- Répertorie les fichiers JAR et les classes nécessaires aux classes d'implémentation de l'exemple d'adaptateur pendant l'exécution. Cet exemple d'adaptateur de ressources fait référence au fichier Enablement-BaseComponentsLogic.jar et au fichier Enablement-IntegrationLogic.jar.
Fichier descripteur de déploiement
L'exemple d'adaptateur contient le fichier de descripteur de déploiement suivant :
- META-INF/ra.xml
- Le fichier ra.xml répertorie les classes d'implémentation pour les méthodes JCA. Pour un exemple de fichier ra.xml, voir Exemple : Fichier descripteur de déploiement ra.xml.
Comment un message est envoyé à l'aide de l'exemple d'adaptateur de transport
Cela décrit le flux d'un lorsqu'il est envoyé via l'exemple d'adaptateur sous un environnement géré tel que le serveur d'applications WebSphere. Voici les étapes d'un message envoyé par l'intermédiaire de l'exemple d'adaptateur de transport :
- Le système de messagerie HCL Commerce trouve la fabrique de connexions J2C de l'adaptateur à travers le nom JNDI associé à l'adaptateur d'exemple,
eis/JCASample. La classe d'implémentation de la méthode de la fabrique de connexion J2C est spécifiée par la valeur de l'élément connectionfactory-impl-class dans le fichier de descripteur de déploiement ra.xml. - L'objet SampleConnectionFactory est construit et transmis aux classes d'implémentation javax.resource.spi.ConnectionManager et javax.resource.spi.ManagedConnectionFactory.
- Le système de messagerie appelle la méthode SampleConnectionFactory.getConnection(javax.resource.cci.ConnectionSpec) pour obtenir un objet javax.resource.cci.Connection en construisant un objet SampleConnectionRequestInfo. Les objets SampleConnectionRequestInfo et SampleManagedConnectionFactory sont transmis à la méthode SampleConnectionManager.allocate(ManagedConnectionFactory,ConnectionRequestInfo). Cela crée l'objet javax.resource.cci.Connection.
- La méthode SampleConnectionManager.allocate(ManagedConnectionFactory,ConnectionRequestInfo) appelle l'une des méthodes suivantes :
- SampleManagedConnectionFactory.createManagedConnection(javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo), qui construit et renvoie SampleManagedConnection().
- (Utilisé conjointement avec le regroupement de connexions) SampleManagedConnectionFactory.matchManagedConnection(java.util.Set, javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo), qui obtient une connexion correspondante. SampleManagedConnectionFactory.matchManagedConnection renvoie null. Il appelle createManagedConnection pour créer un nouvel objet SampleConnection.
L'objet SampleConnectionSpec se compose de deux champs : userName et password. L'objet SampleInteractionSpec contient un champ : input (java.lang.String). ConnectionRequestInfo est généralement nécessaire pour créer ManagedConnection, de sorte que ConnectionRequestInfo contient les champs ConnectionSpec. Par conséquent, l'exemple d'objet SampleConnectionRequestInfo de l'adaptateur contient les champs userName et password.
- (Utilisé conjointement avec le regroupement de connexions) Pour utiliser le regroupement de connexions s'exécutant sous WebSphere Application Server, les méthodes ConnectionRequestInfo.equals(java.lang.Object) et hashCode() doivent être implémentées. SampleConnectionRequestInfo.hashCode() renvoie le code de hachage des chaînes concatenées : userName et password. Ces méthodes sont utilisées par le serveur d'applications WebSphere pour déterminer les connexions possibles et transmettre les connexions réutilisables à ManagedConnectionFactory.matchManagedConnection(java.util.Set, javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo). La méthode matchManagedConnection recherche un objet ManagedConnection approprié à partir de l'ensemble de connexions réassurables transmises par le serveur d'applications WebSphere.
- SampleConnection est renvoyé au système de messagerie. Les interfaces Connection.createInteraction(), javax.resource.cci.Interaction.execute(javax.resource.cci.InteractionSpec, com.ibm.commerce.messaging.outboundservice.WCMSRecord, com.ibm.commerce.messaging.outboundservice.WCMSRecord) et javax.resource.cci.Interaction.close() sont appelées pour envoyer le message. SampleInteraction.execute(javax.resource.cci.InteractionSpec, javax.resource.cci.Record, javax.resource.cci.Record) écrit ce qui suit dans SystemOut.log :
************************************************** a test message **************************************************Où :
- message test
- Le contenu du message sortant, si le champ d'entrée de SampleInteractionSpec est messages de test. Si la valeur du champ d'entrée n'est pas messages de test, une exception est générée.
- SampleConnection.close() appelle SampleManagedConnection.sendEvent(javax.resource.spi.ConnectionEvent.CONNECTION_CLOSED, java.lang.Exception, Object) pour déclencher l'événement CONNECTION_CLOSED.
- Le serveur d'applications WebSphere appelle SampleManagedConnection.cleanup() et destroy(). Remarque : Si le regroupement de connexions est utilisée, la méthode destroy() qui détruit la connexion physique à la ressource d'entreprise est appelée après le délai d'expiration inutilisé des paramètres du regroupement de connexions.