Tomcat vs Weblogic JNDI-Suche
Den Weblogic-Server, die wir verwenden, wurden so konfiguriert, dass die JNDI-datasource-Namen wie "appds".
Entwicklung (localhost), wir laufen könnte Tomcat und wenn deklariert, in der <Kontext> - Abschnitt server.xml, Tomcat hängen JNDI-Datenquellen auf "java:comp/env/jdbc/*" in der JNDI-Struktur.
Problem: bei Weblogic entspricht der JNDI-lookup "appds" während in Tomcat, es scheint, dass, ich muss den formalen "java:comp/env/jdbc/appds". Ich fürchte, die Tomcat-version ist eine implizite Norm, aber ich kann leider nicht ändern, Weblogic config ... das bedeutet also, dass wir am Ende mit zwei verschiedenen spring config-Dateien (wir sind mit spring 2.5) zu erleichtern, die verschiedenen Umgebungen.
Ist es ein eleganter Weg, um diese Probleme anzugehen. Kann ich die JNDI-Namen direkt in Tomcat? Kann Frühling nehmen Sie einen Namen, und suchen Sie in beiden Orten? Google-Suche oder Anregungen wäre toll.
InformationsquelleAutor der Frage Luther Baker | 2008-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
JndiLocatorSupport
hat eine EigenschaftresourceRef
. Wenn diese Einstellung true, "java:comp/env/" - Präfix wird automatisch vorangestellt. Also ich glaube, es wäre richtig, zu differenzieren, diesen parameter beim verschieben von Tomcat, Weblogic.InformationsquelleAutor der Antwort martsraits
Wie ein einzelnes Feld JNDI name die in Ihrer web-app
Hab ich kämpfte mit diesem für ein paar Monate mich. Die beste Lösung ist, um Ihre Anwendung ist tragbar, so dass Sie das gleiche Feld JNDI name die in Tomcat und Weblogic.
Um dies zu tun, ändern Sie Ihre
web.xml
undspring-beans.xml
eine einzige jndi-name, und stellen eine Zuordnung zu den einzelnen herstellerspezifischen jndi-Namen.Ich habe jede Datei unten.
Benötigen Sie:
<resource-ref />
Eintrag in web.xml für Ihre app zu verwenden, einen einzigen NamenWEB-INF/weblogic.xml
zum zuordnen der jndi-name der Ressource verwalteten WebLogicMETA-INF/context.xml
zum zuordnen der jndi-name für die Ressource verwaltet von TomcatAls Allgemeine Regel, lieber über Ihren jndi-Namen in Ihrem app wie
jdbc/MyDataSource
undjms/ConnFactory
und vermeiden Sie, indem Sie mitjava:comp/env/
.Auch, Datenquellen und-Verbindungs-Factorys sind am besten verwaltet durch den container und werden mit JNDI. Es ist ein häufiger Fehler zu instanziieren Datenbank connection pools in Ihrer Anwendung.
Frühjahr
web.xml
weblogic.xml
META-INF/context.xml (für Tomcat)
InformationsquelleAutor der Antwort Leonel
Habe ich es geschafft den trick mit Tomcat und WebLogic mit dem Frühling. Hier ist eine Beschreibung, wie es funktionierte für mich.
InformationsquelleAutor der Antwort duffymo
Folgende config funktioniert in Tomcat und Weblogic für mich.
Im Frühjahr:
In Weblogic Admin Console erstellen Sie eine JDBC-Ressource namens
jdbc/AgriShare
. Unter 'Ziele', STELLEN Sie SICHER, dass SIE das ZIEL DER DATENQUELLE AN DEN SERVER, die SIE BEREITSTELLEN, die IHRE APP!. Gerade dieser Punkt kostete mich einige Zeit, gerade jetzt...InformationsquelleAutor der Antwort Val Blant
Wie wäre es mit einem evironment-variable? Set Entwickler-Maschinen mit der tomcat-name und-Produktion mit der Weblogic-Namen. Sie können sogar Ihre code verwenden Sie die default - (WebLogic), falls die variable nicht vorhanden ist.
InformationsquelleAutor der Antwort Marcio Aguiar
Wie sind Sie mit dem Verweis auf die Ressource in den Frühling?
Dies ist, was wir für tomcat:
Kontext:
Frühling:
Den jee-namespace stammt aus:
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd
InformationsquelleAutor der Antwort harmanjd
Einrichten der Datenquelle in der Anwendung selbst ist nicht so verrückt 🙂 ich würde sagen, dass ist sogar zwingend erforderlich, wenn die Anwendung implementiert werden soll, die auf einem raster. Fluss, GigaSpaces, oder ähnliches.
Hinweis: ich sage nicht, dass die Verbindungs-Einstellungen müssen auch hardcoded werden, innerhalb des KRIEGES, die Sie brauchen, um geliefert werden, zum Zeitpunkt der Bereitstellung/runtime. Dies vereinfacht das management von cloud-Instanzen, da es nur auf Platz konfigurieren.
Konfigurieren von Ressourcen der container macht nur Sinn, wenn mehrere Applikationen gibt, und Sie können freigegebene Ressource.
Wieder, in der cloud Art von Einsätzen es ist nur eine Anwendung pro servlet-container-Instanz.
InformationsquelleAutor der Antwort Konstantin
Meine Anwendung auch ein ähnliches problem gehabt und dies ist, wie ich es gelöst:
1)
WEB-INF/classes/application.properties
enthält den Eintrag:2) Auf der WLS Maschine, ich habe einen Eintrag in der
/etc/sysenv
Datei:3) ich konfiguriert Frühjahr lookup JNDI-vis der Eigenschaft
${ds.jndi}
mit einemPropertyPlaceholderConfigurer
bean mitclasspath:application.properties
undfile:/etc/sysenv
als Standorte. Ich habe auch dieignoreResourceNotFound
zutrue
so dass Entwickler müssen nicht/etc/sysenv
auf Ihre Maschinen.4) ich führe einen integration-test mit Ladung+Jetty und ich konnte Sie nicht richtig einrichten einer JNDI-Umgebung gibt. So habe ich einen fallback
BasicDataSource
konfiguriert, auch mit dendefaultObject
Eigenschaft vonJndiObjectFactoryBean
.InformationsquelleAutor der Antwort Binil Thomas