Источник данных JNDI с Tomcat 6 и Eclipse
Я не могу получить свой источник данных, работающий с JNDI и Tomcat 6, при запуске его из Eclipse. Я добавил контекст.xml для my / META-INF со следующим содержимым:
<Context>
<Resource name="jdbc/myDB" auth="Container" type="javax.sql.DataSource"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/database"
maxActive="15"
maxIdle="7"
validationQuery="Select 1" />
</Context>
и настроил мой Spring Bean следующим образом:
<bean id="UserDatabase" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/myDB"></property>
<property name="lookupOnStartup" value="true"></property>
<property name="cache" value="true"></property>
<property name="proxyInterface" value="javax.sql.DataSource"></property>
</bean>
Я также добавил Эти строки в свою сеть.XML-код:
<resource-ref>
<description>Connection Pool</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.Datasource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
но по какой-то причине я все еще получаю эту ошибку:
javax.naming.NameNotFoundException: The name jdbc is not associated to this context
at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
Я не могу понять, почему это не работает... Есть идеи?
3 ответов
Я изменил следующее И теперь она работает:
в моем контексте.в XML завершено Context
тег:
<Context docBase="myApp" path="/myApp" reloadable="true" source="org.eclipse.jst.jee.server:app">
и в URL соединения символ &
причинил Cannot create resource
ошибка, не знаю почему, поэтому мой URL теперь похож:
jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=utf-8
обратите внимание:&
int URL...
Если я правильно помню, вы должны получить к нему доступ как
<property name="jndiName" value="java:comp/env/jdbc/myDB"/>
в Spring appcontext замените свое определение на:
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName"
value="java:comp/env/jdbc/myDB"/>
<property name="resourceRef"
value="true" />
</bean>