Java 在JBoss AS7中使用@DataSourceDefinition配置MySQL数据源
我能够在standalone.xml中配置MySQL数据源,并且工作正常。但是我想使用Java 在JBoss AS7中使用@DataSourceDefinition配置MySQL数据源,java,mysql,java-ee-6,jboss7.x,Java,Mysql,Java Ee 6,Jboss7.x,我能够在standalone.xml中配置MySQL数据源,并且工作正常。但是我想使用@DataSourceDefinition注释配置数据源 @DataSourceDefinition( className = "com.mysql.jdbc.Driver", name = "java:global/jdbc/MyDS", serverName="localhost", portNumber=3306, user
@DataSourceDefinition
注释配置数据源
@DataSourceDefinition(
className = "com.mysql.jdbc.Driver",
name = "java:global/jdbc/MyDS",
serverName="localhost",
portNumber=3306,
user = "root",
password = "admin",
databaseName = "test"
)
@Stateless
public class DBConfig {
public void test() { //there should be atleast one method, so this dummy
}
}
如何在JBoss AS7中使用@DataSourceDefinition配置MySQL数据源
我已经尝试过的是:
@DataSourceDefinition(
className = "com.mysql.jdbc.Driver",
name = "java:global/jdbc/MyDS",
serverName="localhost",
portNumber=3306,
user = "root",
password = "admin",
databaseName = "test"
)
@Startup
public class DBConfig {
}
与此persistence.xml一起使用:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="javaee6-app" transaction-type="JTA">
<jta-data-source>java:global/jdbc/MyDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
java:global/jdbc/MyDS
我在WEB-INF/lib
中有mysql连接器jar文件
但当我部署应用程序时,会出现以下错误:
(DeploymentScanner线程-2){“JBAS014653:复合操作
失败并被回滚。失败的步骤:“=>{”操作步骤2”
=>{“JBAS014771:缺少/不可用依赖项的服务”=>[“jboss.persistenceunit.\“javaee6 app.war#javaee6 app \”jboss.naming.context.java.global.jdbc.MyDSMissing[jboss.persistenceunit.\“javaee6 app.war \”jboss.naming.context.java.global.jdbc.MyDS]}}
一个建议是将jboss中standalone.xml或domain.xml中的数据源名称配置为7。并在jboss模块中配置mysql连接器jar。然后重试 配置Mysql连接器jar请参考此链接 Standalone.xml中的数据源配置请参阅此链接
我自己想出来的 JBossAS7扫描过程似乎有一些缺陷。根据JavaEE6规范,它应该扫描
@DataSourceDefinition
任何类上的注释。但是,如果我们把它放在一个具有@无状态
注释的类上,它就可以正常工作
@DataSourceDefinition(
className = "com.mysql.jdbc.Driver",
name = "java:global/jdbc/MyDS",
serverName="localhost",
portNumber=3306,
user = "root",
password = "admin",
databaseName = "test"
)
@Stateless
public class DBConfig {
public void test() { //there should be atleast one method, so this dummy
}
}
另外,您可能遇到的下一个问题是: java.lang.ClassCastException:com.mysql.jdbc.Driver无法转换为javax.sql.DataSource
@DataSourceDefinition
的原因参数className
必须提供DataSource
实现(请参见javadoc),而不是驱动程序类
对于MySQL,它可以是:
className = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
className = "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"
className = "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" // XA transaction
我已经提到,我能够在standalone.xml中配置DataSource。我正在寻找基于@DataSourceDefinition的配置。您是否在Jboss模块中配置了Mysql连接器Jar?