Пул подключений к базе данных MySQL

Я пытаюсь сделать что-то, казалось бы, простое :настроить небольшой пул соединений с базой данных, чтобы сервлет (только один )не создавал мой сервер со скоростью 1 соединение в секунду.

На Ubuntu 10.04с последним обновлением/обновлением я использую Eclipse Jetty 8.1.5.v20120716. Я пытаюсь подключиться к серверу MySQL 5.1.

Мой сервлет называется gcm, поэтому в ${jetty}/contextsу меня есть этот gcm.xmlфайл:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
  <New id="jdbc/myds" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/myds</Arg>
    <Arg>
      <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
        <Set name="Url">jdbc:mysql://localhost:3306/chat</Set>
        <Set name="User">root</Set>
        <Set name="Password">sillyness</Set>
      </New>
    </Arg>
  </New>
  <Set name="contextPath">/</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/gcm</Set>
  <Set name="extractWAR">true</Set>
</Configure>

Когда я запускаю Jetty с java -jar start.jar -port=8080, все запускается нормально, пока я не попытаюсь попасть в базу данных из своего сервлета. Часть обработки кода запроса выглядит следующим образом:

 public static List<String> getDevices()
    throws javax.naming.NamingException, java.sql.SQLException {
    synchronized (regIds) {
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myds");
        Connection conn = null;
        Statement stmt = null;

        try {
            conn = ds.getConnection();

            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from chatdevice");

        //blah,blah,blah...

Я получаю ошибку:

    javax.naming.NameNotFoundException; remaining name 'jdbc/myds'
        at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:500)
        at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
        at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
        at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:546)
        at org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
        at javax.naming.InitialContext.lookup(InitialContext.java:409) 
        at com.google.android.gcm.demo.server.Datastore.getDevices(Datastore.java:98)

Как заставить Jetty найти код базы данных?

5
задан Alexander Farber 15 June 2016 в 12:00
поделиться