# Servlet unter mehreren Adressen



## etchniker (4. Jul 2011)

Hallo zusammen,

ich habe eine Verständnisfrage. 
Ich habe einen Servlet geschrieben, das sich über eine Datei konfigurieren lässt. Ich möchte nun, dass es für verschiedene Konfigurationen, unterschiedliche Adressen gibt. So dass, wenn www.eineAdresse.de/servlet1 das eine Servlet aufgrufen wird und unter www.eineAdresse.de/servlet2 das andere. 
Es soll auch für jede Konfiguration eine eigene Instanz des Servlets laufen.

Geht so was überhaupt? Wenn ja wie? Zwei jar´s für zwei Konfigurationen deployen?


Gruß
etechniker


----------



## Gelöschtes Mitglied 5909 (4. Jul 2011)

Mach zwei einträge

[xml]
 <servlet-mapping>
[/xml]

in der web.xml


----------



## brauner1990 (5. Jul 2011)

Wofür brauchst du 2 Adressen für ein Servlet?


----------



## etchniker (6. Jul 2011)

ich möchte das unter zwei verschiedenen adressen, zwei verschiedene instanzen laufen mit unterschiedlichen konfigurationen, die dann jeweils andere sachen anzeigen.

edit: 
es ist folgendermaßen geplant: 

mein servlet bekommt die adresse einer Datenbank übergeben, aus dieser liest es die konfiguration aus. In dieser Datenbank speichert er auch noch andere Sachen ab, die abhängig sind von der Konfiguration.

Das soll für zwei Konfigurationen möglich sei, die dann zwei verschiedene Adressen haben.


----------



## brauner1990 (7. Jul 2011)

etchniker hat gesagt.:


> ich möchte das unter zwei verschiedenen adressen, zwei verschiedene instanzen laufen mit unterschiedlichen konfigurationen, die dann jeweils andere sachen anzeigen.


Ok, wäre es dann nicht sinniger eine "Hilfs"-Klasse zu schreiben, welche alle Methoden beinhaltet, aber halt die dynamisierung bietet? Dann sind die 2 Servlets wenigstens klar in Form und Inhalt getrennt.


etchniker hat gesagt.:


> edit:
> es ist folgendermaßen geplant:
> 
> mein servlet bekommt die adresse einer Datenbank übergeben, aus dieser liest es die konfiguration aus. In dieser Datenbank speichert er auch noch andere Sachen ab, die abhängig sind von der Konfiguration.
> ...


Also ein Servlet, woran erkennt es den welche properties es nutzen soll?


----------



## jmarc (8. Jul 2011)

Ich vermute mal, dass es seine URL auslesen kann über die es gerade läuft.


----------



## brauner1990 (8. Jul 2011)

Dann sollten wir auf den etechniker warten...


----------



## etchniker (8. Jul 2011)

hallo,

über die url, die der user aufruft. die entsprechenden parameter (pfad/adresse der db)werden dann an das servlet gesendet. dann soll eine instanz mit diesem parameter erzeugt werden, fall noch keine läuft.

ps. im moment entwickle ich noch andere funktionalitäten des projekts, bin an diesem punkt noch nicht angekommen, deswegen dauert es i.d.R. 1-2 tage bis ich hier ins forum reinschaue

gruß


----------



## Gelöschtes Mitglied 5909 (8. Jul 2011)

Du willst über ein servlet eine Datanbank konfigurieren? oh weia


----------



## etchniker (8. Jul 2011)

raiL hat gesagt.:


> Du willst über ein servlet eine Datanbank konfigurieren? oh weia



nein, in der db ist die konfiguration des servlets. je nachdem welche db geladen wird, läuft das servlet mit der entsprechenden konfiguration.


----------



## FArt (8. Jul 2011)

etchniker hat gesagt.:


> nein, in der db ist die konfiguration des servlets. je nachdem welche db geladen wird, läuft das servlet mit der entsprechenden konfiguration.



Das ist eher mehr als unüblich. Das würde ich anders lösen, wenn ich die Anforderungen kennen würde.


----------



## etchniker (8. Jul 2011)

wie denn? ich habe die freie Wahl wie die Konfiguration für das Servlet geladen wird. Danke


----------



## FArt (8. Jul 2011)

Was spricht denn gegen den Standard?configure servlet - Google-Suche


----------



## etchniker (12. Jul 2011)

hab mir mal den ARtikel zu Creating and Configuring Servlets durchgelesen. Es scheint genau das richtige zu sein für meine Anforderung, nur eine Frage ist mir noch hängen geblieben.
Im Servlet-Mapping werden in den Beispielen unterschiedliche Servlets benutzt:

[XML]<servlet>
  <servlet-name>watermelon</servlet-name>
  <servlet-class>myservlets.watermelon</servlet-class>
</servlet>

<servlet>
  <servlet-name>garden</servlet-name>
  <servlet-class>myservlets.garden</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>watermelon</servlet-name>
  <url-pattern>/fruit/summer/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>garden</servlet-name>
  <url-pattern>/seeds/*</url-pattern>
</servlet-mapping>[/XML]

Würde es auch mit der gleichen Servletklasse funktionieren mit unterschiedlichen Parametern und URLs? Also:

[XML]<servlet>
  <servlet-name>meinServlet_1</servlet-name>
  <servlet-class>com.examples.myservlet</servlet-class>
 <init-param>
    <param-name>db_adresse</param-name> 
    <param-value>adresse_eins</param-value> 
  </init-param>
</servlet>

<servlet>
  <servlet-name>meinServlet_2</servlet-name>
  <servlet-class>com.examples.myservlet</servlet-class>

 <init-param>
    <param-name>db_adresse</param-name> 
    <param-value>adresse_zwei</param-value> 
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>meinServlet_1</servlet-name>
  <url-pattern>/servlet1/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>meinServlet_2</servlet-name>
  <url-pattern>/servlet2/*</url-pattern>
</servlet-mapping>[/XML]

Danke.


----------



## FArt (12. Jul 2011)

Prinzipiell natürlich schon. Warum auch nicht.
Unter Umständen muss man aber auf die Konfiguration des Servers bzgl. Classloading berücksichtigen, um Seiteneffekte mittels statics usw. auszuschließen.

The Apache Tomcat 5.5 Servlet/JSP Container - Class Loader HOW-TO


----------



## etchniker (12. Jul 2011)

FArt hat gesagt.:


> Unter Umständen muss man aber auf die Konfiguration des Servers bzgl. Classloading berücksichtigen, um Seiteneffekte mittels statics usw. auszuschließen.



verstehe ich ehrlich gesagt nicht, aber ich lese mir mal den Artikel durch, villeicht wird es dann klarer 

The Apache Tomcat 5.5 Servlet/JSP Container - Class Loader HOW-TO


----------



## etchniker (21. Jul 2011)

hallo,

also ich bin soweit ferig mit meiner applikation.

ich habe es nun folgendermaßen gemacht:
meine applikation deploye ich in tomcat für die jeweiligen konfigurationen sperat. 
so habe ich unterschiedliche adressen für die jeweiligen konfigurationen. 
localhost:8080/AppMitConf1
localhost:8080/AppMitConf2

funktioniert einwandfrei.


----------

