我正在使用JBoss 7.1.1下的MySQL开发Web应用程序。 我已经按照其中一个教程在我的服务器上安装MySQL驱动程序。我创建了适当的目录,我在其中放置了驱动程序:
modules
|--com
|--mysql
|--main
|--mysql-connector-java-5.1.18-bin.jar
|--module.xml
我的module.xml
如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.18-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
我还在standalone.xml
中添加了数据源和驱动程序:
<datasources>
<datasource jndi-name="java:jboss/datasources/my_db" pool-name="MySqlDS">
<connection-url>jdbc:mysql://localhost:3306/my_db</connection-url>
<driver>com.mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>root</user-name>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="com.mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
然后我尝试将它注入我的bean并使用它:
@Startup
@Singleton
public class StartupBean {
private static final Logger LOGGER = LogManager.getLogger(StartupBean.class);
@Resource(mappedName = "java:jboss/datasources/my_db")
private DataSource ds;
@PostConstruct
public void init() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
LOGGER.error("MySQL driver not found!", e);
}
}
}
不幸的是,当我尝试找到驱动程序时,我得到:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我也尝试过不检查驱动程序,只需拨打ds.getConnection()
。它没有任何例外。但是当我尝试在我的连接上调用方法时,我得到:
java.lang.AbstractMethodError: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6.getSchema()
这就是问题所在。配置连接时我错过了什么? DataSource根据日志进行绑定。我也尝试过更新的驱动程序版本(5.1.35-bin),但它没有改变任何东西。我的mysql数据库的版本是5.6.24。