JNDI DataSource с Tomcat 6 и Eclipse - PullRequest
9 голосов
/ 14 июня 2011

Я не могу заставить мой DataSource работать с JNDI и Tomcat 6 во время его запуска из Eclipse.Я добавил context.xml в свой / 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>

Я также добавилэто строки моего web.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 ]

6 голосов
/ 15 июня 2011

Я изменил следующее и теперь оно работает:

В моем context.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&amp;characterEncoding=utf-8

Обратите внимание на &amp; int URL ...

4 голосов
/ 14 июня 2011

Если я правильно помню, вы должны получить к нему доступ как

<property name="jndiName" value="java:comp/env/jdbc/myDB"/>
1 голос
/ 14 июня 2011

В приложении appcontext Spring замените определение следующим:

...