Erweiterte Verbindungsmöglichkeiten und anwendungsspezifische Settings für EJB-Clients

Pimp your EJB-Client


In komplexeren Anwendungen steigen die Anforderungen an einen Client. Hierfür sind die im letzten ­Artikel vorgestellten Möglichkeiten unter Umständen nicht ausreichend. Mit einigen Erweiterungen kann das Verhalten an die eigenen Bedürfnisse jedoch angepasst werden.

Die im vorangegangenen Artikel [1] vorgestellten Verbindungsmöglichkeiten haben keinen Einfluss auf die Selektion der Server. Alles wird über den Identifier der EJB geregelt. Clients, die aus verschiedenen Gründen, wie Lastverteilung oder Anwendungsdaten, Einfluss auf die Selektion benötigen, müssen entsprechende Mechanismen implementieren, um das Verhalten an die eigenen Bedürfnisse anzupassen.

Artikelserie

Teil 1: Verbindungsmöglichkeiten und Unterschiede zu früheren Versionen

Teil 2: Komplexe Szenarien und NodeSelectoren

Ändern der EJB-Selektion ohne Cluster

Wird kein Cluster Context verwendet – das ist der Fall, wenn die EJBs nicht als @Clustered annotiert sind, der Server nicht in einer Cluster-Konfiguration läuft oder die Konfiguration des Clients falsch ist –, so kann durch Angabe der voll qualifizierten Klasse mit der Property deployment.node.selector (Listing 1) die Default-Implementierung (RandomDeploymentNodeSelector) ausgetauscht werden. Die Klasse muss org.jboss.ejb.client.DeploymentNodeSelector implementieren. Die Methode selectNode(...) erhält eine Liste der Namen von ­Nodes, die die gewünschte EJB bereitstellen, und muss den Namen einer dieser Nodes zurückliefern. Es wird immer die gleiche Instanz des Selektors verwendet, sodass die Implementierung Multi-Thread-fähig sein muss.

Listing 1

remote.connections=one, two, ... remote.connection.one.host=host1 remote.connection.one.port=4447 remote.connection.two.host=host2 remote.connection.two.port=4447 ... deployment.node.selector=<voll qualifizierter name der DeploymentNodeSelector Implementierung>

Die Liste der verfügbaren Nodes enthält nur diejenigen Ziele, die auch in der Lage sind, den Request für diese Kombination aus Anwendung/Modul/Distinct-Name zu bearbeiten. Die Auswahl einer Node aus dieser Liste kann dann anhand der übergebenen Namen oder einer internen Implementierung vorgenommen werden.

Es wäre zum Beispiel möglich, eine Konfiguration auf dem Client zu hinterlegen, wie die Anzahl der Requests auf die verschiedenen Nodes verteilt werden sollen, um eine unterschiedliche Leistungsfähigkeit der Server berücksichtigen zu können.

Weiterhin kann mittels einer Implementation, die einen ThreadLocal verwendet, die Auswahl bei...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang