NameNotFoundException: Name jdbc ist nicht verpflichtet, die in diesem Zusammenhang
Ich versuche zu definieren, der einen JNDI-DB-Verbindung in einem test-Projekt mit Spring. Ich habe bootstrapped das Projekt mit Spring Roo und somit ist Mavenized. Hier ist der Roo-Skript für die Referenz - (Roo 1.2.1)
project --topLevelPackage org.obliquid.cpool
jpa setup --database MYSQL --provider HIBERNATE --jndiDataSource /jdbc/cpool
web mvc setup
entity jpa --class org.obliquid.cpool.entity.Person
field string --fieldName name
web mvc scaffold --class ~.entity.Person
web mvc all --package ~.web
In src/main/resources/META-INF/spring/applicationContext.xml
ich habe folgende (erstellt von Roo):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
...
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/cpool" resource-ref="true"/>
...
Habe ich src/main/resources/META-INF/context.xml
mit folgendem Inhalt:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp" docBase="cpool" reloadable="true" debug="1">
<Resource name = "jdbc/cpool"
auth = "Container"
type = "javax.sql.DataSource"
username = "dbusername"
password = "dbpassword"
driverClassName = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://localhost:3306/dbname?DateTimeBehavior=convertToNull&characterEncoding=UTF-8"
maxActive = "100"
maxIdle = "4"
maxWait = "20000"
removeAbandoned = "true"
removeAbandonedTimeout="600"
logAbandoned="true"/>
</Context>
Jedoch, wenn ich versuche, führen Sie die Anwendung, die in Tomcat 7.0, bekomme ich die folgende Fehlermeldung:
ERROR org.springframework.web.Kontext.ContextLoader - Kontext-Initialisierung fehlgeschlagen
org.springframework.Bohnen.factory.BeanCreationException: Fehler beim erstellen bean mit dem Namen 'dataSource': Aufruf von init method failed; nested exception is javax.die Benennung.NameNotFoundException: Name jdbc ist nicht verpflichtet, die in diesem Zusammenhang
Was muss ich tun, um richtig definieren der Datenquelle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den context.xml die Datei muss im META-INF-Verzeichnis die Krieg - Datei. Es muss nicht in das classes-Verzeichnis oder in einer jar-Datei.
Setzen Sie den META-INF-Verzeichnis mit der context.xml in das Verzeichnis mit den root der webapp in Ihrem Quell-Ordner-Struktur.
META-INF
Ordner! Also ich habecontext.xml
imsrc/main/webapp/META-INF
, und es wird verpackt in die/META-INF
Ordner der war-Datei und alles funktioniert, ich danke Ihnen so sehr!