Wie zu verwenden JNDI-DataSource zur Verfügung gestellt von Tomcat im Frühjahr?
Es wird gesagt, dass im Frühjahr javadoc-Artikel über DriverManagerDataSource
Klasse, die diese Klasse ist sehr einfach und es wird empfohlen,
verwenden eine JNDI DataSource zur Verfügung gestellt durch den container. Solche
DataSource
ausgesetzt sein können, alsDataSource
bean in eine Datei ApplicationContext Spring überJndiObjectFactoryBean
Die Frage ist: wie kann ich dies erreichen?
Zum Beispiel, wenn ich möchte DataSource
bean für den Zugriff auf meine benutzerdefinierte MySQL-Datenbank, was würde ich benötigen? Was soll ich schreiben, die im Kontext der Konfiguration, etc?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn mit Spring XML-schema-basierte Konfiguration setup in den Frühling Zusammenhang wie diesem:
Alternativ setup mit einfachen bean-Konfiguration wie diese:
Können Sie erklären, die JNDI-Ressource in der tomcat server.xml mit so etwas wie dieses:
Und verweisen Sie die JNDI-Ressource aus der Tomcat web context.xml wie diese:
Referenz-Dokumentation:
Edit: Diese Antwort wurde aktualisiert für Tomcat 8 und Feder 4. Es wurden ein paar Namen der Eigenschaft änderungen für Tomcat Standard datasource-Ressourcenpool einrichten.
<jee:jndi-lookup jndi-name="java:comp/env/jdbc/databaseName">
. Ich würde gerne wissen, welcher Ansatz besser ist als Sie auch mit einexpected-type
Attribut. Danke.Mit Spring JavaConfig-Mechanismus können Sie es ja gerne machen:
Vorausgesetzt, Sie haben eine "sampleDS" datasource-definition innerhalb der tomcat-Konfiguration ist, können Sie fügen Sie folgende Zeilen in Ihre
applicationContext.xml
Zugriff auf die datasource über JNDI.Müssen Sie definieren den namespace und schemaLocation-für
jee
Präfix verwenden:Dokumentation: C. 2.3.1 -
<jee:jndi-lookup/>
(simple)Beispiel:
Brauchen Sie nur, um herauszufinden, welche JNDI-Namen appserver gebunden hat, um die Datenquelle zu. Dies ist vollständig server-spezifische, konsultieren Sie die Dokumentation auf Ihrem server, um herauszufinden, wie.
Denken Sie daran, zu erklären, das
jee
namespace an der Spitze der Bohnen-Datei, wie in C. 2.3 Das jee-schema.Weiteres feature:
statt server.xml Sie können hinzufügen, die "Ressource" - tag in
your_application/META-INF/Context.xml
(nach tomcat-docs)
wie diese:
Laut Apache-Tomcat-7-JNDI Datasource HOW-TO-Seite es muss eine Ressource-Konfiguration in web.xml:
Das funktioniert für mich
In den Frühlings-Klasse können Sie injizieren einer bean annotiert werden, wie
und fügen Sie diese in Ihre context.xml
Können Sie erklären, die JNDI-Ressource in der tomcat server.xml mit
zurück context.xml de Frühling fügen Sie diese
wenn, wie dies exmple Sie injizieren Verbindung zur Datenbank, stellen Sie sicher, dass die MySQL-jar im tomcat-lib-Verzeichnis, da sonst tomcat nicht in der Lage, erstellen Sie die MySQL-Datenbank Verbindungs-pool.
Ich fand diese Lösung sehr hilfreich, in eine saubere Art und Weise zu entfernen xml-Konfiguration vollständig.
Bitte überprüfen Sie das db-Konfiguration über JNDI und spring framework.
http://www.unotions.com/design/how-to-create-oracleothersql-db-configuration-using-spring-and-maven/
In diesem Artikel erklären, wie einfach es ist, erstellen Sie eine db-confguration basierend auf Datenbank jndi(db/test) - Konfiguration. sobald Sie fertig sind mit der Konfiguration dann alle db-repositories geladen werden über das jndi. Ich Tat nützlich finden. Wenn @Pierre Problem hat, dann lasst es mich wissen. Es ist die komplette Lösung schreiben, die db-Konfiguration.