Angepasste Skalierungslistener hinzufügen

Sie können mithilfe von WebSphere Application Server Developer Tools for Eclipse ein angepasstes Skalierungslistener-Bundle erstellen. Ein angepasster Skalierungslistener wird über alle anstehenden Skalierungsaktionen benachrichtigt. Der Listener kann die Skalierungsaktion daraufhin zulassen oder verweigern. Außerdem kann der Listener entscheiden, die Aktion zu verarbeiten, und so das Skalierungsverhalten vollständig anpassen.

Vorbereitende Schritte

Vergewissern Sie sich, dass Ihre Liberty-Installation das Feature scalingController-1.0 enthält. Informationen zu Skalierungscontrollern finden Sie unter Automatische Skalierung für Liberty-Verbünde einrichten und Skalierungscontroller.

Informationen zu diesem Vorgang

Sie müssen die Listenerschnittstelle implementieren und die Implementierungsklasse in der Service-Registry registrieren. Ihr Skalierungslistener kann Skalierungsaktionen zulassen, verweigern und verarbeiten.

Die Java-API-Dokumentation für jede Liberty-SPI ist in einer eigenen komprimierten Datei in einem der Unterverzeichnisse des Verzeichnisses ${wlp.install.dir}/dev der API-Dokumentation verfügbar.

Vorgehensweise

  1. Klicken Sie auf Datei > Neu > Andere. Erweitern Sie dann die Anzeige für OSGi.
  2. Klicken Sie auf OSGi-Bundle-Projekt und dann auf Weiter. Das Fenster Neues OSGi-Bundle-Projekt wird geöffnet.
  3. Geben Sie ScalingSPISampleBundle als Projektnamen ein. Wählen Sie WebSphere Application Server Liberty in der Liste der Ziellaufzeitumgebungen aus. Ist keine Laufzeitumgebung vorhanden, klicken Sie auf Neue Laufzeit, um eine WebSphere Application Server Liberty-Laufzeit zu erstellen.
  4. Wählen Sie das Optionsfeld Bundle zur Anwendung hinzufügen ab.
  5. Klicken Sie zweimal auf Weiter und öffnen Sie die Seite OSGi-Bundle.
  6. Markieren Sie auf der Seite OSGi-Bundle die Option Generieren eines Aktivators, also einer Java-Klasse zur Steuerung des Lebenszyklus des Bundle. Übernehmen Sie scalingspisamplebundle.Activator für Aktivatorname und klicken Sie auf Fertigstellen.
  7. Klicken Sie auf Datei > Neu > Andere. Erweitern Sie dann die Anzeige für OSGi.
  8. Klicken Sie auf Liberty-Featureprojekt und dann auf Weiter. Das Fenster Liberty-Featureprojekt wird geöffnet.
  9. Geben Sie ScalingSPISampleFeature als Projektnamen an.
  10. Wählen Sie WebSphere Application Server Liberty in der Liste der Ziellaufzeitumgebungen aus und klicken Sie auf Weiter. Die Auswahlseite für OSGi-Bundles wird geöffnet.
  11. Wählen Sie auf der Seite Auswahlseite für OSGi-Bundles das Bundle ScalingSPISampleBundle 1.0.0 für Enthaltene Bundles aus und klicken Sie auf Fertigstellen.
  12. Klicken Sie auf Fenster > Benutzervorgaben > Plug-in-Entwicklung > Zielplattform und wählen Sie WebSphere Application Server Liberty mit SPI aus.
  13. Klicken Sie auf Anwenden und auf OK.
  14. Erweitern Sie die Anzeige für ScalingSPISampleBundle > BundleContent > META-INF und öffnen Sie die Datei MANIFEST.MF mit dem Plug-in-Manifesteditor.
  15. Wählen Sie das Register Abhängigkeiten aus und fügen Sie die Pakete com.ibm.wsspi.scaling.action.consumer und com.ibm.wsspi.scaling.action.controller dem Teilfenster Importierte Pakete hinzu. Möglicherweise müssen Sie die Tastenkombination Strg+S drücken, um die Änderungen zu speichern.
  16. Fügen Sie im Projekt "ScalingSPISampleBundle" eine Implementierungsklasse mit dem Namen ScalingSPISamplePlugin hinzu. Diese neue Klasse implementiert die Schnittstelle com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin.
    package scalingspisamplebundle;
    
    import com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionType;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionDecision;;
    
    /**
     * Dies ist ein Liberty-Beispielskalierungs-SPI-Plug-in, das als Vorlage für die Entwicklung
     * eines angepassten SPI-Plug-ins dient. In diesem Plug-in wird keine Bearbeitung durchgeführt
     * und der Rückgabewert für den Liberty-Skalierungscontroller ist immer DEFAULT_ACTION.
     * 
     */
    public class ScalingSPISamplePlugin implements ScalingActionPlugin {
    
        /** {@inheritDoc} */
        @Override
        public ActionDecision actionRequired(ScalingActionContext action) {
    
            ActionDecision returnType = ActionDecision.DEFAULT_ACTION;
    
            if (action.getActionType() == ActionType.START_SERVER) {
                returnType = startServer(action);
            }
            else if (action.getActionType() == ActionType.CREATE_SERVER) {
                returnType = createServer(action);
            }
            else if (action.getActionType() == ActionType.STOP_SERVER) {
                returnType = stopServer(action);
            }
    
            return returnType;
    
        }
    
        private ActionDecision startServer(ScalingActionContext action) {
            // Aktionen zum Starten eines Servers ausführen
    
            return ActionDecision.DEFAULT_ACTION;
        }
    
        private ActionDecision createServer(ScalingActionContext action) {
            // Aktionen zum Erstellen eines Servers ausführen
    
            return ActionDecision.DEFAULT_ACTION;
        }
    
        private ActionDecision stopServer(ScalingActionContext action) {
            // Aktionen zum Stoppen eines Servers ausführen
    
            return ActionDecision.DEFAULT_ACTION;
        }
    }
  17. Öffnen Sie im Projekt ScalingSPISampleBundle die Klasse Activator und bearbeiten Sie die Methode start(BundleContext), um Code hinzuzufügen, der den neuen Listener-Service registriert.
    public void start(BundleContext context) throws Exception {
        final Hashtable<String, Object> properties = new Hashtable<String, Object>();
        ScalingSPISamplePlugin scalingSPISamplePlugin = new ScalingSPISamplePlugin();
        context.registerService(ScalingActionPlugin.class, scalingSPISamplePlugin, properties);
    }

    Wenn Sie zum Import einer HashMap (Hashzuordnung) aufgefordert werden, wählen Sie java.util.HashMap für den Import aus.

  18. Klicken Sie mit der rechten Maustaste auf das Projekt ScalingSPISampleFeature und klicken Sie auf Feature installieren, um das Feature in der Liberty-Laufzeitumgebung zu installieren.

    Die Menüoption Feature installieren finden Sie in der Ansicht "Enterprise-Explorer" der Perspektive "Java EE".

  19. Bearbeiten Sie die Datei server.xml, um ScalingSPISampleFeature zu aktivieren.
    ...
    <featureManager>
      ...
      <feature>scalingController-1.0</feature>
      <feature>usr:ScalingSPISampleFeature</feature>
    </featureManager>
    ...

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_wve_add_scaling_listener.html