In BeanConnect geben Sie beim Deployment einer Managed Connection Factory den EIS Partner an, der über diese Managed Connection Factory angesprochen werden soll. Sie verwenden die Methode lookup()
, um nach der Connection Factory zu suchen und um ein Connectivity Objekt durch den Aufruf der Methode getConnection()
zu erhalten.
Über die CCI-Verbindung, die Sie von der CCI-Connection Factory erhalten, können Sie ein Interaction Objekt anfordern. Das Interaction Objekt implementiert eine execute()
-Methode, um eine Interaktion zu initiieren. Die Methode execute()
kennt außer einem BCCciInteractionSpec
-Objekt auch noch Input- und Output-Datensatz. In diesem BCCciInteractionSpec
-Objekt definieren Sie ein interactionVerb
(SYNC_SEND
, SYNC_SEND_RECEIVE
oder SYNC_RECEIVE
) und gleichzeitig den Namen der EIS-Anwendung.
Somit können Sie eine Interaktion durch Bereitstellung passender Daten steuern, anstatt Methoden aufzurufen. Die Standardeinstellung für interactionVerb
lautet SYNC_SEND_RECEIVE
.
Weitere Einzelheiten hierzu finden Sie in der JavaDoc zu BeanConnect.
Programm-Framework für dialogbasierte Kommunikation (CCI)
Für dialogbasierte Kommunikation mit der Serveranwendung mittels des CCI-Interfaces in BeanConnect führen Sie folgende Aktionen aus:
Richten Sie den Initial-Kontext ein:
javax.naming.InitialContext ic = new InitialContext();
Referenzieren Sie eine Connection Factory:
javax.resource.cci.ConnectionFactory cf =
(ConnectionFactory)ic.lookup("java:comp/env/eis/myEIS");Der von
eis/myEIS
referenzierten Connection Factory wird ein Dialog-Service als Standard-Service zugewiesen.
Richten Sie die Verbindung ein:
javax.resource.cci.Connection con =(Connection)cf.getConnection();
Alternativ kann eine EJB sicherheitsbezogene Daten (Benutzerkennung/Passwort) in einem
BCCciConnectionSpec
Objekt an BeanConnect weiterleiten. In diesem Fall geben Sie ein:net.fsc.jca.communication.cci.BCCciConnectionSpec; cred = new BCCciConnectionSpec("myuser", "mypass"); javax.resource.cci.Connection con = (Connection)cf.getConnection(cred);
Erstellen Sie ein
Interaction
-Objekt und einInteractionSpec
-Objekt:Interaction ix = (Interaction)con.createInteraction(); BCCciInteractionSpec is = new BCCciInteractionSpec(InteractionSpec.SYNC_SEND_RECEIVE);
Während ein
Interaction
-Objekt aus demConnection
-Objekt erstellt wird, für das es verwendet werden soll, wird dasInteractionSpec
-Objekt mit einem Konstruktor der Implementierungsklasse erstellt.Ein
Interaction
-Objekt ermöglicht einer EJB die Kommunikation mit einer EIS-Anwendung. EinInteractionSpec
-Objekt verfügt über Properties, mit denen eine Interaktion mit dieser EIS-Anwendung durchgeführt werden kann. Es wird von einer Interaktion zur Ausführung der angegebenen Funktion in der EIS-Anwendung verwendet.
Erstellen Sie ein
BCRecord
-Objekt, das als Container für die Nachricht an das EIS dient, sowie ein weiteresBCRecord
-Objekt, das als Container für die Reply Message dient. Dies geschieht mittels einesBCRecordFactory
-Objekts:net.fsc.jca.communication.cci.BCRecordFactory rf = (BCRecordFactory)cf.getRecordFactory(); net.fsc.jca.communication.cci.BCRecord reqrec = (BCRecord) rf.createBCRecord("request"); net.fsc.jca.communication.cci.BCRecord replrec = (BCRecord) rf.createBCRecord("reply");
Nach dem Erstellen enthält ein
BCRecord
-Objekt ein leeresOltpMessage
-Objekt, dasaus demBCRecord
-Objekt abgerufen werden kann. In der Folge kann dasBCRecord
-Objekt mitOltpMessageRecord
- oderOltpMessagePart
-Objekten bestückt werden.
Versorgen Sie das
OltpMessage
-Objekt der für das EIS bestimmten Nachricht mit Daten (hier: zweiOltpMessagePart
-Objekte):net.fsc.jca.communication.OltpMessage request = reqrec.getOltpMessage(); request.addMessagePart("request - message part1"); request.addMessagePart("request - message part2");
Führen Sie die Interaktion aus:
ix.execute(is, reqrec, replrec);
Das aus diesem Aufruf zurückgegebene
BCRecord
-Objekt enthält wieder einOltpMessage
-Objekt, das seinerseits die Antwort enthält, die von der EIS-Anwendung in einemOltpMessageRecord
oder in einemOltpMessagePart
-Objekt gesendet wurde.
Reply Message empfangen:
net.fsc.jca.communication.OltpMessage reply = replrec.getOltpMessage(); java.util.Iterator<net.fsc.jca.communication.OltpMessagePart> it = reply.getMessageParts(); net.fsc.jca.communication.OltpMessagePart msgPart; String msgText=""; while (it.hasNext()) { msgPart = (OltpMessagePart) it.next(); msgText += msgPart.getText(); }
Schließen Sie die Verbindung:
con.close();
Weitere Informationen zur Programmierung der CCI-Interfaces finden Sie in der JavaDoc zur CCI.
Ein Code-Beispiel finden Sie im Beispiel 15 im Code-Beispiele für Outbound-Kommunikation .
Programm-Framework für asynchrone Kommunikation (CCI)
Für asynchrone Kommunikation mit der Serveranwendung mittels des CCI-Interfaces in BeanConnect führen Sie folgende Aktionen aus:
Richten Sie den Initial-Kontext ein:
javax.naming.Context ic = new InitialContext();
Referenzieren Sie eine Connection Factory:
javax.resource.cci.ConnectionFactory cf =
(ConnectionFactory)ic.lookup("java:comp/env/eis/myAsyncEIS");
Richten Sie die Verbindung ein:
javax.resource.cci.Connection con =(Connection)cf.getConnection();
Alternativ kann eine EJB sicherheitsbezogene Daten (Benutzerkennung/Passwort) in einem
BCCciConnectionSpec
Objekt an BeanConnect weiterleiten. In diesem Fall geben Sie ein:net.fsc.jca.communication.cci.BCCciConnectionSpec cred = new BCCciConnectionSpec("myuser", "mypass"); javax.resource.cci.Connection con = (Connection)cf.getConnection(cred);
Erstellen Sie ein
Interaction
-Objekt und einInteractionSpec
-Objekt:Ein
Interaction
-Objekt ermöglicht einer EJB die Kommunikation mit einer Partneranwendung. EinInteractionSpec
-Objekt verfügt über Properties, mit denen eine Interaktion mit einer Partneranwendung durchgeführt werden kann. Es wird von einer Interaktion zur Ausführung der angegebenen Funktion in der EIS-Anwendung verwendet.Während ein
Interaction
-Objekt aus demconnection
-Objekt erstellt wird, für das es verwendet werden soll, wird dasInteractionSpec
-Objekt mit einem Konstruktor der Implementierungsklasse erstellt:Interaction ix = (Interaction)con.createInteraction(); net.fsc.jca.communication.cci.BCCciInteractionSpec is = new BCCciInteractionSpec(InteractionSpec.SYNC_SEND, "ASYNTAC");
Die Zuweisung des asynchronen Services
ASYNTAC
legt fest, dass asynchrone Kommunikation stattfindet.Hier erzielt
SYNC_SEND
dieselbe Wirkung wie einflush()
-Aufruf bei der Verwendung der BeanConnect-spezifischen Interfaces.
Erstellen Sie ein
BCRecord
-Objekt, das als Container für die Anforderungsnachricht dient. Dies geschieht mit Hilfe einerrecordFactory
:net.fsc.jca.communication.cci.BCRecordFactory rf= (BCRecordFactory)cf.getRecordFactory(); net.fsc.jca.communication.cci.BCRecord reqrec = rf.createBCRecord("request");
Nach dem Erstellen enthält ein
BCRecord
-Objekt ein leeresOltpMessage
-Objekt, das aus demBCRecord
-Objekt abgerufen werden kann, und dem dannOltpMessageRecord
-Objekte und/oderOltpMessagePart
-Objekte zugewiesen werden können.
Versorgen Sie das
OltpMessage
-Objekt des Anforderungsdatensatzes mit Daten (hier:zweiOltpMessagePart
-Objekte):net.fsc.jca.communication.OltpMessage request = reqrec.getOltpMessage(); request.addMessagePart("request - message part1"); request.addMessagePart("request - message part2");
Führen Sie die Interaktion aus:
ix.execute(is, reqrec);
Schließen Sie die Verbindung:
con.close();