Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Das MessageSpecifier-Interface  Dokument im Navigationsbaum lokalisieren

Verwendung

Angenommen, sie möchten ein Attachment an Ihre Message hängen. In diesem Fall muß die Proxy-Laufzeit dies beim Zusammenbauen der Message berücksichtigen. Die Proxy-Laufzeit stellt ein Interface MessageSpecifier zur Verfügung, um spezielle Dienste der Proxy-Laufzeit nutzen zu können.

Integration

Das Interface MessageSpecifier ist ein Attribut Ihres generierten Client- beziehungsweise Server-Proxies und hat den vollqualifizierenden Namen com.sap.aii.proxy.xiruntime.core.MessageSpecifier.

Zugriff auf Methoden von MessageSpecifier

Sender-Seite

Auf Sender-Seite können Sie nicht direkt auf das MessageSpecifier-Interface zugreifen, weil der Zugriff auf das Proxy-Objekt über die Proxy-Bean gekapselt ist. Statt dessen müssen Sie sich über die Proxy-Bean-Methoden eine Instanz des MessageSpecifier-Interface holen, dessen Methoden verwenden (siehe unten) und wieder an die Proxy-Klasse zurückschicken. Es gibt die folgenden Methoden:

·      MessageSpecifier $messageSpecifier()

Holt eine Instanz des MessageSpecifier-Interface und initialisiert alle Attribute.

·      MessageSpecifier $messageSpecifierRead()

Liest das MessageSpecifier-Interface, ohne bisher gesetzte Attribute zu initialisieren. Dies ist beispielsweise notwendig, wenn Sie die Methode getMessageIdLastSent() nach einem Proxy-Aufruf verwenden wollen.

Achtung

Sie könnnen diese Methode nur verwenden, wenn Sie die Client-Bean als Stateful Session Bean deployen. Nur so ist sichergestellt, dass die J2EE-Anwendung auf Client-Seite beim Methoden-Zugriff auf die Bean tatsächlich immer dieselbe Bean-Instanz referenziert. Bei Stateless Beans kann das von Methode zu Methode eine andere Instanz aus dem Bean-Pool sein. Den Typ der Bean geben Sie im Deployment-Deskriptor (Datei ejb-jar.xml) an.

·      void $messageSpecifier(MessageSpecifier ms)

Schickt die MessageSpecifier-Instanz an die Proxy-Klasse zurück.

Empfänger-Seite

Die implementierende Klasse für das Server-Proxy-Interface ist abgeleitet von der Java-Proxy-Runtime-Klasse AbstractProxy. Daher können Sie in der Implementierung direkt auf eine Instanzen-Variable messageSpecifier zugreifen. In diesem Fall holt sich die generierte Bean die Instanz vor dem Aufruf der implementierenden Klasse und übergibt sie am Ende wieder an die Proxy-Klasse.

Funktionsumfang

Messaging-System (MS) für J2EE-Anwendung

Methode

Bedeutung

public void setMessagingTimeoutInMSec
(long timeout);

Legt die Gültigkeitsdauer einer Message fest:

·      Kann eine asynchrone Message nicht innerhalb der Gültigkeitsdauer an den Integration Server versendet werden, wird sie für das MS-Monitoring persistiert.

·      Erhält das Messaging-System auf eine synchrone Message innerhalb der Gültigkeitsdauer keine Response-Message, wird ein Fehler an die Anwendung zurückgegeben. Falls die Response-Message danach noch empfangen wird, persistiert das Messaging-System diese Message ebenfalls für das MS-Monitoring.

public void
setQueueId(String id)

Mit dieser Methode können Sie hintereinander mehreren asynchronen Messages einen Serialisierungskontext zuweisen, um für diese Messages den Quality of Service exactly once in order zu garantieren. Der String id darf höchstens 16 Zeichen lang sein und nur Großbuchstaben enthalten. Alle asychronen Messages mit dem gleichen Serialisierungskontext werden beim Empfänger in der gleichen Reihenfolge empfangen, wie sie beim COMMIT WORK auf der Sender-Seite in die Ausgangs-Queue aufgenommen worden sind.

public String
getQueueId()

Gibt den vorher gesetzten Serialisierungskontext zurück.

Payload (siehe auch: Abrufen der Payload)

Methode

Bedeutung

public String getInputPayload()

Gibt die Payload der Input-Message zurück (nach dem Aufruf eines Client-Proxies oder während der Inbound-Verarbeitung)

public String getOutputPayload()

Gibt die Payload der Output-Message zurück (nach dem Aufruf eines Client-Proxies)

public void
setPayload(
String payload )

Mit dieser Methode können Sie die Payload selbst setzen, anstatt sie über die an das Proxy übergebenen Daten erzeugen zu lassen. In diesem Fall ist die Anwendung für das korrekte Format der Payload verantwortlich. Die Proxy-Laufzeit füllt nur den Message-Header und leitet die Message mit der übergebenen Payload weiter.

Setzen des Empfängers

Methode

Bedeutung

public void addReceiverService( String service)

Hinzufügen eines Service zur Menge aller Empfänger-Services des Client-Proxies

public void addReceiver(
 java.lang.String partyName,
 java.lang.String partyAgency,
 java.lang.String partyScheme,
 java.lang.String service)

Hinzufügen eines Empfängers zur Menge aller Empfänger des Client-Proxies. Die Angabe von Kommunikationspartner, vergebender Agentur und Identifikationsschema ist wichtig bei Unternehmens-übergreifender Kommunikation.

public boolean removeReceiverService(String service)

Löschen eines spezifizierten Service aus der Menge aller Empfänger-Services des Server-Proxies

public void clearReceivers()

Löschen aller spezifizierten Empfänger.

Attachments

Methode

Bedeutung

public MessageAttachment createAttachment( String name, String type, Object data)

Erzeugt ein neues Attachment-Objekt. Für type sollte der MIME-Type angegeben werden (zum Beispiel 'text/html').

public MessageAttachment addAttachment( String name, String type, Object data)

Erzeugt ein neues Attachment-Objekt, fügt dieses der Menge der Attachments hinzu und gibt das Attachment-Objekt zurück.

public void addAttachment( MessageAttachment attachment)

Fügt der Menge der Attachments ein neues hinzu.

public boolean removeAttachment(MessageAttachment attachment);

Löscht das spezifizierte Attachment

public void clearAttachments();

Löscht alle Attachments. Diese Methode sollten Sie auf jeden Fall auf Empfängerseite aufrufen, damit empfangene Attachments nicht zurückgeschickt werden.

public MessageAttachment getAttachment(String name);

Gibt das Attachment mit dem Namen name zurück.

public java.util.Enumeration getAttachments();

Gibt eine Aufzählung aller Attachments zurück.

Ermitteln des Senders beim Empfänger

Methode

Bedeutung

public String
getSenderService()

Ermitteln des Service einer empfangenen Message beim Empfänger.

public String
getSenderPartyName()

Ermitteln des Namens eines Kommunikationspartners einer empfangenen Message beim Empfänger.

public String
getSenderPartyAgency()

Ermitteln der vergebenen Agentur einer empfangenen Message beim Empfänger.

public String
getSenderPartyScheme()

Ermitteln des Identifikationsschemas einer empfangenen Message beim Empfänger.

Message-ID abfragen

Methode

Bedeutung

public
com.sap.guid.IGUID
getMessageID()

Abfrage der Message-ID bei Empfang einer Message. Mit der Methode toString() erhalten Sie die String-Repräsentation der ID.

public
com.sap.guid.IGUID
getMessageIDLastSent()

Abfrage der Message-ID nach dem Versenden einer Message. Mit der Methode toString() erhalten Sie die String-Repräsentation der ID.

public com.sap.guid.IGUID
getRefToMessageID

Abfrage der ID einer Message, die von dieser Message referenziert wird. Beispielsweise ‚merkt’ sich eine Response-Message über dieses Feld zu welcher Request-Message sie gehört.

Anfordern von Acknowledgments

Methode

Angefordertes Acknowledgment
und Bedeutung

public void
setSystemAckRequested(
String ackListenerName)

Positives System-Acknowledgment

Der Empfänger wurde erfolgreich erreicht; für Server-Proxies bedeutet dies, dass die implementierende Klasse zum Server-Proxy gefunden wurde und die Methode zur Inbound-Verarbeitung aufgerufen werden konnte.

 

public void
setSystemErrorAckRequested(
String ackListenerName)

Negatives System-Acknowledgment

Die Laufzeit der Exchange Infrastructure meldet einen Fehler während der Übertragung beziehungsweise der Verarbeitung der Message auf dem Weg zum Empfänger. Beispielsweise kann ein Fehler in einem Mapping-Programm oder ein nicht im Empfängersystem vorhandenes Server-Proxy dieses Acknowledgment auslösen.

public void
setApplicationAckRequested(
String ackListenerName)

Positives Anwendungs-Acknowledgment

Die Message wurde vom Empfänger erfolgreich verarbeitet.

public void
setApplicationErrorAckRequested(
String ackListenerName)

Negatives Anwendungs-Acknowledgment

Während der Verarbeitung der Message beim Empfänger ist ein Fehler aufgetreten.

Hinweis

Wann eine Message von einem Empfänger erfolgreich verarbeitet worden ist, hängt vom Empfänger ab: Bei einem Server-Proxy ist dies der Fall, wenn die beim Empfänger ausgeführte Methode keine Ausnahme ausgelöst hat, bei einem Integrationsprozess können Sie im Sendeschritt explizit ein Acknowledgment versenden (siehe Abschnitt Acknowledgment senden unter Sendeschritt).

 

 

 

 

 

Ende des Inhaltsbereichs