~~Title: Den Server via JNDI ansprechen~~
Der Server für JVx Clients wird entweder in der aktuellen JVM instanziert oder am Applikationsserver wie z.B. Tomcat, JBoss. In der aktuellen VM genügt der Aufruf
Server server = new Server();
um eine Server Instanz zu erstellen. Doch dadurch besteht die Gefahr das mehrere Server Instanzen erstellt werden (kann aber durchaus erwünscht sein). Um den Server als Singleton zu behandeln steht die Methode
Server server = Server.getInstance();
zur Verfügung. Durch diese Verwendung wird zusätzlich versucht eine Server Instanz via JNDI anzusprechen.
Am Applikationsserver wird durch den ServletServer eine neue Instanz des Servers erstellt. Das wird durch den Aufruf von
Server server = Server.getInstance();
erledigt. Wenn der Server nun als JNDI Resource zur Verfügung steht, übernimmt der Applikationsserver die Instanzierung des Servers. Dadurch könnte z.B eine Server Instanz für alle Applikationen eines Applikationsservers verwendet werden.
\\ \\
Die Konfiguration einer globalen JNDI Resource wird für den Applikationsserver Tomcat wie folgt durchgeführt:
**conf/server.xml**:
...
...
...
Der ResourceLink im DefaultContext kann auch im META-INF/context.xml der jeweiligen Web Applikation definiert werden. Das ist immer abhängig von der Konfiguration des Servers bzw. der Web Applikation. Ein mögliches Beispiel:
Um den Server nur für einzelne Web Applikationen via JNDI bereitzustellen ist die Konfiguration wie folgt durchzuführen:
**META-INF/context.xml**:
Egal ob der Server für alle oder für einzelne Web Applikationen bereitgestellt wird. Es ist zu empfehlen den Deployment Deskriptor in allen Fällen zu konfigurieren:
...
...
...
Object factory for Server instances.
jvx/server
com.sibvisions.rad.server.Server
Container
Im Falle eines globalen Servers müsste der Deployment Deskriptor nicht angepasst werden, ist jedoch zu empfehlen um die verwendeten Resourcen zu überblicken.
\\
**Hinweis**
Wenn der Server global konfiguriert wird müssen auch alle Applikations-Daten wie z.B. rad Verzeichnis, .class Dateien, global zur Verfügung stehen, da nicht der Applikations ClassLoader verwendet wird!