2010-01-11 9 views

Antwort

5

Ich glaube nicht. Zitiert Load objects in the JNDI tree:

die Administrationskonsole verwenden, können Sie WebLogic Server J2EE-Service und Komponenten, wie RMI, JMS, EJBs und JDBC-Datenquellen, in der JNDI-Struktur laden.

Und in der Tat, ich konnte nicht einen Weg ein String oder URL mit der Konsole hinzuzufügen finden.

AFAIK, der normale Weg ist es, ein env-entry in Ihrem Deployment Descriptor zu setzen (web.xml, ejb-jar.xml):

<env-entry> 
    <env-entry-name>string/foo</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>foobar</env-entry-value> 
</env-entry> 

<env-entry> 
    <env-entry-name>url/bar</env-entry-name> 
    <env-entry-type>java.net.URL</env-entry-type> 
    <env-entry-value>http://foobar/</env-entry-value> 
</env-entry> 
+2

Aber wenn ich es in web.xml einfügen, müssen alle Änderungen neu erstellt und neu implementiert werden. Es ist seltsam, dass ich die JDBC-Konfiguration auf den Server stellen kann, so dass Änderungen nicht neu erstellt werden müssen, aber ich kann meine benutzerdefinierten Variablen (z. B. Passwort zum Mail-Konto, das in der Mail-Sitzung nicht konfiguriert werden kann) dort nicht speichern müssen sie in meiner Bewerbung behalten. –

+0

müssen das gleiche tun ... wow, das stinkt. – MeBigFatGuy

+1

Sie sollten die Datei plan.xml zum Aktualisieren/Überschreiben der Standardwerte aus der Datei web.xml verwenden –

1

Ich habe dies erreicht mit genau dem gleichen Problem. In Websphere beispielsweise kann ich JNDI beliebige Parameter wie temporäre Verzeichnisse, Kennwörter und andere Informationen hinzufügen, ohne das EAR neu kompilieren zu müssen.

Ich habe eine Weile gesucht und scheint Weblogic fehlt diese Funktion. Ich habe eine Hilfsklasse geschrieben, die JNDI zuerst nach einem bestimmten Konfigurationsschlüssel durchsucht, und wenn sie nicht gefunden wird, greift sie auf die Suchumgebung oder Systemvariablen zurück.

Vielleicht könnte dies verbessert werden, um auch nach diesen Eigenschaften zu suchen, denen der Name der Anwendung oder der zur Laufzeit erkannte Kontextstamm vorangestellt wird, um Namenskonflikte zu vermeiden, wenn mehrere Instanzen derselben EAR bereitgestellt werden.