web.xml
ist eine Standard-JavaEE-Datei und ihre Struktur ist in der Servlet-Spezifikation gut dokumentiert. In web.xml
deklarieren Sie die URL, wie es in Ihrem lokalen JNDI-Namespace (java:comp/env
) bekannt ist.
web.xml
sollte innerhalb WEB-INF
, unterhalb Ihrer WAR-Projektstruktur befinden. Wenn Sie eine IDE (wie Eclipse) zum Erstellen von Webprojekten verwenden, sollte diese Datei bereits für Sie erstellt werden (es sei denn, Sie verwenden Servlet Specification 2.5 und höher - Servlet Specification 2.5 ist in JavaEE 5.0 enthalten - wobei Deployment-Deskriptoren optional sind).
ibm-web-bnd.xml
ist eine WebSphere-spezifische Datei. Es enthält die Bindung deklarierter Artefakte (z. B. eine URL-Definition) in eine echte Artefakte. Sie sollten in der Dokumentation von IBM nachlesen, um das Format dieser Datei herauszufinden.
Die Datei ibm-web-bnd.xml
sollte sich im selben Verzeichnis wie web.xml
befinden.
Das id
Attribut resource-ref
kann auf einen beliebigen Wert eingestellt werden, die Sie mögen, solange sie durch eine passende id
Attribut innerhalb ibm-web-bnd.xml
Querverweis ist. Auf diese Weise kann WebSphere Definitionen in ibm-web-bnd.xml
mit Definitionen in web.xml
korrelieren. Die zufällige Zeichenfolge, die Sie im Lernprogramm sehen, wird von RAD oder WSAD erstellt. Sie können dort einen beliebigen Bezeichner platzieren.
EDIT (hinzugefügt Anleitung)
Auf den Punkt gebracht, ist der Prozess dies:
In web.xml
, können Sie die lokalen JNDI-Namen definieren. Das ist der Name, unter dem sich Ihr Java-Code auf die URL bezieht. Zum Beispiel myWebsiteUrl
. Ihr Code muss eine JNDI-Suche unter java:comp/env/myWebsiteUrl
durchführen. Die Definition ist in dieser Richtung:
<resource-env-ref>
<resource-env-ref-name>myWebsiteUrl</resource-env-ref-name>
<resource-env-ref-type>java.net.URL</resource-env-ref-type>
</resource-env-ref>
In WebSphere selbst, eine URL-Definition hinzufügen. Der Schlüssel dort ist der JNDI-Name in WebSphere JNDI-Struktur, über die die URL bekannt sein wird. Sie können dort einen beliebigen Wert einstellen, obwohl es (per Konvention) empfohlen wird, dass Sie ihm url/
voranstellen. Zum Beispiel: url/test
.
In ibm-web-bnd.xml
, müssen Sie myWebsiteUrl
(sah-up von der Anwendung) binden url/test
(die der JNDI-Name ist, mit dem WebSphere die URL kennt). Die Definition wird entlang der Linien sein:
<resource-env-ref name="myWebsiteUrl" binding-name="url/test"/>
Schritt 3 ist nicht erforderlich. Wenn ibm-web-bnd.xml
zum Zeitpunkt der Bereitstellung nicht vorhanden ist, fordert Sie der GUI-basierte Implementierungsablauf (der bei der Bereitstellung von Anwendungen über die WAS-Verwaltungskonsole verwendet wird) zur Eingabe der Bindungswerte auf. (Wenn Sie mit Hilfe von Skripten bereitstellen, können Sie immer noch die ibm-web-bnd.xml
Datei weglassen, solange Sie die Bindungen in einer anderen Art und Weise angeben, aber das ist über den Rahmen dieser Antwort. Lesen Sie die IBM-Dokumentation über Strategie Dateien und AdminApp.installApplication
)
Hinweis: Solange Sie JavaEE 5.0 und höher verwenden, benötigen Sie das Attribut id
in den Definitionen nicht. Der Artikel, den Sie gerade lesen, ist übrigens sehr veraltet.
Hallo, Isaac. Danke für deine Antwort! Können Sie mir beibringen, wie WebSphere für die JNDI-Verwendung eingerichtet wird? Ich habe keinen Hintergrund zu JNDI und das ist das erste Mal, dass ich eine URL-Ressource erstelle, also denke ich, dass ich etwas falsch verstanden habe. – Arci
Basierend auf meinem Verständnis muss ich für die Verwendung von JNDI eine URL-Ressource auf WebSphere einrichten, bei der ich eine URL im Schlüsselwertpaar deklarieren muss (z. B. url1 = http://www.website.com/url1). Der Schlüssel wird in der Web-Anwendung verwendet, wobei er sich auf das 'java: comp/env/key'-Format beziehen kann. Nach dem, was ich im Tutorial verstanden habe, muss ich WebSphere web.xml und ibm-web-bnd.xml und nicht die web.xml und die ibm-web-bnd.xml von WAR einstellen. Oder bezieht sich das Tutorial auf das XML meiner WAR-Datei? Wenn ja, wo kann ich den Wert meiner URLs auf WebSphere festlegen? – Arci
Bearbeitete die Antwort. – Isaac