2016-06-27 12 views
0

Für ein Web-Service-Projekt teilen, ich brauche zwei API-Versionen eines Java EE Web auf meinem Webserver beiServlets in separaten WARs - teilweise ihren Kontextstamm

  • example.com/myservice/v1 und
  • example.com/myservice/v2
  • installieren

Der sicherste Weg, die verschiedenen Versionen zu trennen, scheint die Bereitstellung in verschiedenen WAR-Dateien zu sein, eine für v1 und eine für v2.

I erstellt und bereitgestellt zwei JBoss 6 Java EE 6 Web Profile-Anwendungen mit diesen Einträgen in Jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web> 
    <context-root>/test/v1</context-root> 
</jboss-web> 

und

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web> 
    <context-root>/test/v2</context-root> 
</jboss-web> 

Beide eingesetzt Krieg Dateien und lief ohne Fehler . JBoss beschwerte sich nicht, dass sie den gleichen Wurzelkontextteil /test verwenden.

Ist dies ein Standardverhalten eines Servlet-Containers (angegeben) oder nur ein JBoss-Feature und nicht garantiert tragbar?

Antwort

1

Zum Beispiel, Oracle Docs für Glassfish sagen, dass A context root must start with a forward slash (/); and end with a string - keine Einschränkungen von Schrägstrich in der Kontextwurzel.

Ein anderes Beispiel ist JBoss docs wo es an example of two web applications with nested context roots (paragraph 1) gibt.

Tomcat unterstützt auch verschachtelte Kontextpfade - siehe Abschnitt namens Apache Context Configuration doc.

Es gibt keine Anforderung, in der Spezifikation auch keinen Schrägstrich innerhalb des Kontextstamms zu haben. Ich denke, es bedeutet, dass Sie genauso wie jedes andere Feature davon ausgehen können, dass es auf Ihrem Anwendungsserver funktioniert, aber die Art und Weise, wie es konfiguriert ist, kann abweichen, und natürlich müssen Sie Ihre Anwendung testen, bevor Sie in einen anderen Container wechseln.

0

In Bezug auf Kontext-Root JBoss sagt:

Der Kontext Wurzel einer Web-Anwendung bestimmt, welche URLs Tomcat wird auf Ihre Web-Anwendung übertragen. Wenn der Kontext Ihrer Anwendung root myapp ist, wird jede Anfrage für/myapp oder/myapp/* von Ihrer Anwendung bearbeitet, es sei denn, es existiert ein spezifischeres Kontextstammverzeichnis. Wenn eine zweite Webanwendung dem Kontextstamm myapp/help zugewiesen wurde, würde eine Anforderung für /myapp/help/help.jsp von der zweiten Webanwendung behandelt werden, nicht die erste.

Zwei Kontext Wurzel, die Sie in jboss-web.xml definiert haben, sind i) /test/v1 und ii) /test/v2. Diese beiden sind völlig unterschiedlich, da sie zwei verschiedene URLs angeben.

So Ihre Befürchtung, dass:

JBoss beschwerte sich nicht, dass sie die gleiche Wurzel Kontext Teil/Test verwenden.

hält nicht gut, da sie voneinander verschieden sind.

+0

Danke für Ihre Antwort, zitiert aus einem Link in der angenommenen Antwort von Larry0ua. Ich kann noch nicht upvote, aber werde später tun. Ich habe nicht erwartet, dass JBoss sich beschweren würde - tatsächlich war ich froh, dass JBoss die zwei sich teilweise überschneidenden Kontextwurzeln akzeptiert. – mjn42