Wie stellen Sie einen KRIEG, die ' s in einem OHR, als die root - ( / ) der Kontext, in Glassfish?
Ich habe eine EAR-Datei, die enthält zwei Kriege, war1.Krieg und war2.Krieg. Meine application.xml die Datei sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<application version="5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
<display-name>MyEAR</display-name>
<module>
<web>
<web-uri>war1.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module>
<web>
<web-uri>war2.war</web-uri>
<context-root>/war2location</context-root>
</web>
</module>
</application>
Diese Ergebnisse in war2.Krieg zur Verfügung stehen, wird auf http://localhost:8080/war2location, das ist richtig, aber war1.Krieg ist auf http://localhost:8080// - beachten Sie die zwei Schrägstriche.
Was mache ich falsch?
Beachten Sie, dass die Kriege " sun-web.xml Dateien werden ignoriert, wenn die in einer OHR.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Glassfish 3.0.1 definieren Sie die Standard-web-Anwendung in der Administrationskonsole:
"Konfiguration\Virtual Server\server\Standard-Modul".
Die drop-down-box enthält alle implementierten war-Modulen.
Standard-web-Modul ist dann erreichbar von http://localhost:8080/.
Dies scheint mir wie ein bug in der glassfish application server.
Es sollte funktionieren, da es bereits definiert Ihr application.xml Datei.
Vielleicht könnten Sie versuchen, die folgenden:
Dies scheint ein bug /feature.
Können Sie festlegen, Glassfish, um eine bestimmte web-Anwendung als root-Anwendung, dh. wenn keine andere Kontext-matches, aber die Anwendung dann immer noch denkt es läuft auf den ursprünglichen Kontext und nicht auf die Wurzel.
Meine Lösung ist die Ausführung des ersten KRIEGES an /w und den Apache umleiten /unabhängig von /w/, was mit einem RedirectMatch. Nicht sehr schön, aber es löst das problem (irgendwie).
Dank jiriki. Die Perfekte Antwort!
Arbeitet in Galssfish 2.1.1 auch!
Konfiguration> HTTP-Service - > Virtual Server> server
oder ändern
default-web-module
parameter indomain.xml
Die gleiche Lösung wie beschrieben via @jiriki und @SteveGreenslade, aber über asadmin.
Gefunden auf: http://www.java.net/node/681176
UPDATE (Glassfish 3.1+):
Mit dem glassfish 3.1+ Sie können es erreichen, ohne Notwendigkeit der Einstellung Standard-web-Modul. Die einzige Stelle, die Sie ändern müssen, ist
wo sollten Sie Platz für Ihre web-Modul:
Dass der job nicht.
Basierend auf andere Antworten präsentieren hier habe ich einen falschen Eindruck, etwas mehr erforderlich ist. Finden Sie unter den verwandten problem, verursacht durch Verwirrung: http://www.java.net/forum/topic/glassfish/glassfish/asadmin-restart-domain-not-working-war-inside-ear-default-web-module
Grundsätzlich:
sollte auch funktionieren, basiert auf dem code (https://svn.java.net/svn/glassfish~svn/tags/3.1.2/web/web-glue/src/main/java/com/sun/enterprise/web/WebContainer.java):
allerdings habe ich nicht testen diese option
http://localhost:8080//
sollte noch eine gültige URL sein, die ist äquivalent zuhttp://localhost:8080/
Ich würde Experimentieren mit dem verlassen des context-root of war1 leer (obwohl, ich bin mir nicht sicher, ob das erlaubt). Oder es zu verändern
<context-root>.</context-root>
.Ansonsten würd ich sagen, dass die generierte URI wird ein Fehler auf glassfish ist ein Teil, da habe ich noch nie gesehen, dass mithilfe der Sonne.
Haben Sie es gegeben, die anderen versuchen, auf eine neuere version von Glassfish? (3.0.1 kam gerade heraus).
Habe ich in der Lage, zu bekommen a-single - KRIEG in eine explodierte OHR für die Bereitstellung auf http://localhost/ mit Glassfish 3.0.1. Wie Sie erwähnt haben, sun-web.xml scheint ignoriert zu werden (im inneren des explodierten Ohren zumindest).