Show TOC

Zugriff auf den AS Java Thread-ManagerLocate this document in the navigation structure

  • Die Java-Klasse Ihres Adapters, die in einem eigenen Thread laufen soll, muss das Standard-Interface java.lang.Runnable implementieren.
  • Der Thread kann als AS Java Application-Thread über die Instanz SAPAdapterResource gestartet werden.
    Hinweis

    Öffnen Sie hierzu SPIManagedConnectionFactory.java und suchen Sie nach der Zeichenkette CS_THSTR.

  • Eine Instanz von SAPAdapterResource muss zuvor über JNDI ermittelt werden.

    Das Objekt ist im JNDI-Verzeichnis unter dem Schlüssel SAPAdapterResources abgelegt.

    Hinweis

    Öffnen Sie hierzu SPIManagedConnectionFactory.java und suchen Sie nach der Zeichenkette CS_THREADMGR.

  • Der Adapter selbst muss das Thread-Lifetime-Management implementieren und er muss den Thread zum richtigen Zeitpunkt starten und stoppen.

    Der Thread muss beispielsweise in einem Senderadapter, der aktiv geschaltet wird, gestartet werden.

    Der Thread-Status wird in einer eigenen Variable verwaltet.

    Implementieren Sie geeignete start()- und stop() -Methoden.

  • Der Adapter darf eigene Threads nur für Senderkanäle starten.

    Für Empfängerkanäle erzeugt das Messaging-System den Thread.

  • Lassen Sie den Adapter, wenn er untätig ist, keine Threads in den Cache oder in einen eigenen Thread-Pool aufnehmen.

    Der AS Java verwaltet hierzu einen Anwendungs- und einen System-Thread-Pool.

    Für beide Pools ist eine Obergrenze für die Anzahl der Threads festgelegt.

    Die Obergrenzen für die Threads der Pools werden über dem Parameter MaxThreadCount in den Kernel-Services ApplicationThreadManager und ThreadManager bestimmt.

    Stellen Sie sicher, dass der Thread-Verbrauch des Adapter deutlich unter dieses Werten liegt. Raten Sie Ihren Kunden bei Bedarf, diese Werte hoch zu setzen.

    Weitere Informationen: Thread System

  • Für Empfängerkanäle setzt das Messaging-System eine weitere Obergrenze für Worker-Threads pro Adaptertyp.

    Sie können die Obergrenze im Service PI AF Core über den Parameter messaging.connectionDefinition konfigurieren.

    Der Parameterwert kann beispielsweise folgendermaßen gesetzt sein:

    name=myAdapter_http://myAdapterNamespace, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=7, Recv.maxConsumers=7, Call.maxConsumers=7, Rqst.maxConsumers=7)

    Weitere Informationen: Properties for Service XPI AF Core