mysql - Jboss连接池未连接数据库

标签 mysql postgresql jboss

我正在使用 JBoss 7.1,并且我正在尝试通过应用程序服务器创建数据库连接池。我使用的是 mysql 数据库,但我也尝试使用 Postgre 数据库,错误是一样的。一切似乎都正常,但是当我尝试访问该应用程序时,控制台上出现错误,提示我与数据库的连接失败。我的代码如下:

我的 Jbossstandalone.xml。

<datasource jndi-name="java:jboss/jdbc/exampleDS" pool-name="jdbc/exampleDS" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:mysql://127.0.0.1:3306/example?useSSL=false</connection-url>
                    <driver>mysql-connector-java-5.1.43-bin.jar</driver>
                    <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>
                        <password>password</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                    </validation>
                </datasource>
<driver name="mysql-connector-java-5.1.43-bin.jar" module="com.mysql">
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlDataSource</xa-datasource-class>
                    </driver>

我的 web.xml

<resource-ref>
        <description>example</description>
        <res-ref-name>jdbc/exampleDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

我的java代码

private ServiceLocator() {
    try {
        this.initCtx = new InitialContext();
        this.envCtx = (Context) initCtx.lookup("java:comp/env");
        DataSource ds = (DataSource)
                envCtx.lookup("jdbc/exampleDS");
    } catch (NamingException e) {
        ApplicationException apRE = new ApplicationException(ErrorCode.E_JDNI001, e);
        LogService.getLog().fatal(apRE.getMessage(), apRE);
        throw apRE;
    }
}

最后,当我启动jboss服务器时,没有出现任何错误,但控制台说我的数据库的表不存在。

感谢帮助<3

最佳答案

我已经修复了错误。 首先要做的是创建一个 jboss-web.xml,其中 web.xml(在我的例子中是 webapp/WEB-INF)。它必须类似于以下内容:

<jboss-web>    
  <resource-ref>  
    <res-ref-name>jdbc/exampleDS</res-ref-name>  
    <jndi-name>java:jboss/jdbc/exampleDS</jndi-name> 
  </resource-ref>  
</jboss-web>  

创建后,我们必须在modules->com->mysql->main中创建一个module.xml,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
    <resource-root path="mysql-connector-java-5.1.43-bin.jar"/>
</resources>
<dependencies>
   <module name="javax.api"/>
   <module name="javax.transaction.api"/>
</dependencies>
</module>

您还必须在主目录中插入您使用的 .jar。 关于javacode,您需要更改 initCtx.lookup("java:comp/env");为此: initCtx.lookup("java:");

就这些了:)

关于mysql - Jboss连接池未连接数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935482/

相关文章:

mysql - MySQL 8.0新认证协议(protocol)

php - pg_close 在使用持久的 postgres 连接时?

java - jBOSS+ ESAPI java.lang.ClassCastException : org. jboss.logmanager.log4j.BridgeLogger 无法转换为 org.owasp.esapi.Logger

mysql - 如何在mysql 5.7中的json数组类型上创建索引

mysql - 表名作为列中的值

php - 配方数据库 - 添加具有现有或额外成分的配方

postgresql - 绿梅 : Getting filenames processed via an external table

postgresql - ETL 工具还是临时解决方案?

java - 在 Wildfly 9 上运行 Renjin Java-API

java - 异构Java EE集群