数据源中的Wildfly 12错误

时间:2018-05-20 23:29:59

标签: java mysql wildfly datasource

我正在尝试在Wildfly 12中创建一个简单的数据源,以便将mysql数据库连接到Java WEB应用程序。

我尝试了两个选项:

  1. 修改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>
    
    1. 使用管理控制台添加数据源
  2. 我正在使用数据源创建一个没有问题的连接:

    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连接中的数据库名称参数无法正常工作。

    我该如何解决这个问题?我没有找到任何额外的参数来指定数据源中的数据库名称。

    感谢您的时间。

1 个答案:

答案 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>

这解决了这个问题。