невозможно подключиться к базе данных в пуле соединений сервлетов JDBC с помощью файла META-INF / context.xml - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь подключиться к базе данных MySQL, используя сервлет, используя файл context.xml.Ссылаясь на пример, представленный на сайте:

http://viralpatel.net/blogs/2009/09/database-connection-pooling-tomcat-eclipse-db.html

Но я получаю исключение: javax.naming.NameNotFoundException: jdbc не привязан

, после этого я добавил тег вweb.xml, тогда он также не работал и выдал еще одно исключение:

Ошибка при развертывании;- вложенный throwable: (javax.naming.NamingException: resource-ref: jdbc / mytest не имеет действительной привязки JNDI. Проверьте jboss-web / resource-ref.)

(Примечание: mytest - это имя моей базы данных)

дополнительные сведения: я добавил сведения о конфигурации для ссылки context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Specify a JDBC datasource -->
    <Resource name="jdbc/mytest" auth="Container"
        type="javax.sql.DataSource" username="root" password="mysql"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/mytest"
        maxActive="10" maxIdle="4" />
</Context>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>testjdbc</display-name>
<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/mytest</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref> 

  <servlet>
    <description></description>
    <display-name>TestServlet</display-name>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.mytest.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>

</web-app>

servlet.java:

public void init() throws ServletException 
 {
        try 
        {
            // Get DataSource
            Context initContext  = new InitialContext();
            Context envContext  = (Context)initContext.lookup("java:/jdbc/mytest");
            dataSource = (DataSource)envContext.lookup("jdbc/mytest");

        } 
         catch (NamingException e) 
         {
            e.printStackTrace();
        }
    }

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Учебное пособие, которое вы упомянули, предназначено для Tomcat, но теперь вы используете jboss-web.

У каждого сервера может быть несколько свой способ настройки источника данных JNDI. Для jboss-web вы можете обратиться к это .

0 голосов
/ 06 февраля 2012

Когда ресурс Datasource определен с именем = "jdbc: testdb" в context.xml, вам нужно найти это же имя в вашем методе InitialContext.lookUp ().Имя базы данных (mytest) должно быть указано в URL-адресе соединения.

...