Настройка Jetty 6 для использования источника данных commons.dbcp - PullRequest
3 голосов
/ 21 июля 2011

Привет! Я пытаюсь настроить Jetty 6.1.26 для использования пула подключений, и мне трудно.

Я положил commons-dbcp-1.4.jar, commons-pool-1.5.6.jar и mysql-connector-java-5.1.16 в моя папка Jetty / lib / ext.

Я также добавил ссылки на эти банки в моем Jetty / pom.xml

<dependencies>
   ...
   <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
  </dependency>
  <dependency>
    <groupId>commons-pool</groupId>
    <artifactId>commons-pool</artifactId>
    <version>1.5.6</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.16</version>
  </dependency>
</dependencies>

В моем веб-проекте в eclipse мой файл jetty-env.xml (в WEB-INF) выглядит так:

<Configure class="org.mortbay.jetty.webapp.WebAppContext">

<New id="MySQLDB" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>MySQLDB</Arg>
<Arg>
 <New class="org.apache.commons.dbcp.BasicDataSource">
    <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
    <Set name="url">jdbc:mysql://host_ip</Set>
    <Set name="username">user</Set>
    <Set name="password">pwd</Set>
    <Set name="auth">Container</Set>
    <Set name="maxActive">-1</Set>
    <Set name="maxIdle">30</Set>
    <Set name="maxWait">10000</Set>
    <Set name="minEvictableIdleTimeMillis">600000</Set>
    <Set name="name">MySQLDB</Set>
    <Set name="removeAbandoned">true</Set>
    <Set name="removeAbandonedTimeout">5000</Set>
    <Set name="timeBetweenEvictionRunsMillis">10000</Set>
    <Set name="type">javax.sql.DataSource</Set>
 </New>
</Arg>

</Configure>

Однако, когда я запускаю Jetty (используя java -jar start.jar в моем каталоге Jetty), я получаю это исключение:

java.lang.NoSuchMethodException: class org.apache.commons.dbcp.BasicDataSource.setAuth(class java.lang.String)

Как правильно настроить Jetty? Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

В вашем коде у вас естьКонтейнер инструкция говорит для вызова метода setAuth класса.Но у класса нет ничего подобного.

2 голосов
/ 21 июля 2011

Удалите строки <Set name="auth">Container</Set> и <Set name="type">javax.sql.DataSource</Set> из конфигурации: исключение говорит вам, что эти функции не существуют в классе org.apache.commons.dbcp.BasicDataSource.

...