Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Programm-Framework für Common Client Interface (CCI)

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:

  1. Richten Sie den Initial-Kontext ein:

    javax.naming.InitialContext ic = new InitialContext();
     

  2. 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.
     

  3. 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);
  4. Erstellen Sie ein Interaction-Objekt und ein InteractionSpec-Objekt:

    Interaction ix = (Interaction)con.createInteraction();
    BCCciInteractionSpec is = new 
       BCCciInteractionSpec(InteractionSpec.SYNC_SEND_RECEIVE);
    

    Während ein Interaction-Objekt aus dem Connection-Objekt erstellt wird, für das es verwendet werden soll, wird das InteractionSpec-Objekt mit einem Konstruktor der Implementierungsklasse erstellt.

    Ein Interaction-Objekt ermöglicht einer EJB die Kommunikation mit einer EIS-Anwendung. Ein InteractionSpec-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.
     

  5. Erstellen Sie ein BCRecord-Objekt, das als Container für die Nachricht an das EIS dient, sowie ein weiteres BCRecord-Objekt, das als Container für die Reply Message dient. Dies geschieht mittels eines BCRecordFactory-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 leeres OltpMessage-Objekt, dasaus dem BCRecord-Objekt abgerufen werden kann. In der Folge kann das BCRecord-Objekt mit OltpMessageRecord- oder OltpMessagePart-Objekten bestückt werden.
     

  6. Versorgen Sie das OltpMessage-Objekt der für das EIS bestimmten Nachricht mit Daten (hier: zwei OltpMessagePart-Objekte):

    net.fsc.jca.communication.OltpMessage request = 
    reqrec.getOltpMessage();
    request.addMessagePart("request - message part1");
    request.addMessagePart("request - message part2"); 
  7. Führen Sie die Interaktion aus:

    ix.execute(is, reqrec, replrec);

    Das aus diesem Aufruf zurückgegebene BCRecord-Objekt enthält wieder ein OltpMessage-Objekt, das seinerseits die Antwort enthält, die von der EIS-Anwendung in einem OltpMessageRecord oder in einem OltpMessagePart-Objekt gesendet wurde.
     

  8. 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();
    } 
  9. 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:

  1. Richten Sie den Initial-Kontext ein:

    javax.naming.Context ic = new InitialContext();
     

  2. Referenzieren Sie eine Connection Factory:

    javax.resource.cci.ConnectionFactory cf =
         (ConnectionFactory)ic.lookup("java:comp/env/eis/myAsyncEIS");
     

  3. 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);
  4. Erstellen Sie ein Interaction-Objekt und ein InteractionSpec-Objekt:

    Ein Interaction-Objekt ermöglicht einer EJB die Kommunikation mit einer Partneranwendung. Ein InteractionSpec-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 dem connection-Objekt erstellt wird, für das es verwendet werden soll, wird das InteractionSpec-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 ein flush()-Aufruf bei der Verwendung der BeanConnect-spezifischen Interfaces.
     

  5. Erstellen Sie ein BCRecord-Objekt, das als Container für die Anforderungsnachricht dient. Dies geschieht mit Hilfe einer recordFactory:

    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 leeres OltpMessage-Objekt, das aus dem BCRecord-Objekt abgerufen werden kann, und dem dann OltpMessageRecord-Objekte und/oder OltpMessagePart-Objekte zugewiesen werden können.
     

  6. Versorgen Sie das OltpMessage-Objekt des Anforderungsdatensatzes mit Daten (hier:zwei OltpMessagePart-Objekte):

    net.fsc.jca.communication.OltpMessage request = 
    reqrec.getOltpMessage();
    request.addMessagePart("request - message part1");
    request.addMessagePart("request - message part2"); 
  7. Führen Sie die Interaktion aus:

    ix.execute(is, reqrec);
     

  8. Schließen Sie die Verbindung:

    con.close();