arrow_back history picture_as_pdf This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~~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 <file java> Server server = new Server(); </file> 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 <file java> Server server = Server.getInstance(); </file> 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 <file java> Server server = Server.getInstance(); </file> 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**: <file xml server.xml> <GlobalNamingResources> ... ... ... <Resource auth="Container" factory="org.apache.naming.factory.BeanFactory" name="globalserver" type="com.sibvisions.rad.server.Server"/> </GlobalNamingResources> <DefaultContext> <ResourceLink name="jvx/server" global="globalserver" type="com.sibvisions.rad.server.Server" /> </DefaultContext> </file> 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: <file xml context.xml> <?xml version="1.0" encoding="UTF-8"?> <Context> <ResourceLink name="jvx/server" global="globalserver" type="com.sibvisions.rad.server.Server" /> </Context> </file> Um den Server nur für einzelne Web Applikationen via JNDI bereitzustellen ist die Konfiguration wie folgt durchzuführen: **META-INF/context.xml**: <file xml context.xml> <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jvx/server" auth="Container" type="com.sibvisions.rad.server.Server" factory="org.apache.naming.factory.BeanFactory"/> </Context> </file> 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: <file xml web.xml> <web-app ...> ... ... ... <resource-ref> <description>Object factory for Server instances.</description> <res-ref-name>jvx/server</res-ref-name> <res-ref-type>com.sibvisions.rad.server.Server</res-ref-type> <res-auth>Container</res-auth> </resource-ref> </web-app> </file> Im Falle eines globalen Servers müsste der Deployment Deskriptor nicht angepasst werden, ist jedoch zu empfehlen um die verwendeten Resourcen zu überblicken. \\ **<fs 20px>Hinweis</fs>** 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!