我正在尝试在Wildfly 12中创建一个简单的数据源,以便将mysql数据库连接到Java WEB应用程序。
我尝试了两个选项:
修改standalone-full.xml以添加如下数据源:
<datasource jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/MyDatabaseName</connection-url>
<driver>mysql</driver>
<pool>
<min-pool-size>2</min-pool-size>
<max-pool-size>5</max-pool-size>
</pool>
<security>
<user-name>myuser</user-name>
<password>mypassword</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
</drivers>
我正在使用数据源创建一个没有问题的连接:
Context initCtx = new InitialContext(), envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MyDS");
this.connection = ds.getConnection();
Java连接可以正常运行但是当我创建一个servlet来查询我的数据库时,我得到了这样的异常:
“表”用户“未找到; SQL语句:从用户中选择*,其中username ='myusername'”
我已经运行了一些测试,我注意到Java连接到数据库但没有连接到特定模式,我运行了一个类似“SELECT DATABASE()FROM DUAL”的查询,结果是“TEST”。所以我猜想URL连接中的数据库名称参数无法正常工作。
我该如何解决这个问题?我没有找到任何额外的参数来指定数据源中的数据库名称。
感谢您的时间。
答案 0 :(得分:0)
好吧,在尝试了一些修改后,我意识到我必须将下一个代码放在web.xml文件中:
<resource-ref>
<res-ref-name>jdbc/MyDS/<res-ref-name>
<jndi-name>jdbc:mysql://localhost:3306/MyDatabaseName</jndi-name>
</resource-ref>
这解决了这个问题。