如何在wildfly 10中配置数据源?

时间:2015-10-12 12:45:45

标签: java xml postgresql datasource wildfly

我开始介绍野生蝇学习。 我已经下载了服务器的分发版 现在我正在尝试配置数据源,但我看到以下错误:

Unexpected HTTP response: 500

Request
{
    "address" => [
        ("subsystem" => "datasources"),
        ("data-source" => "PostgreDataSource")
    ],
    "operation" => "test-connection-in-pool"
}

Response

Internal Server Error
{
    "outcome" => "failed",
    "failure-description" => "WFLYJCA0040: failed to invoke operation: WFLYJCA0042: failed to match pool. Check JndiName: java:jboss/datasources/PostgreDataSource",
    "rolled-back" => true
}

我的步骤:
1.创建文件夹wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\modules\org\postgres\main并从postgresql-9.0-801.jdbc4.jar复制\.m2\repository\postgresql\postgresql\9.0-801.jdbc4

2.Created module.xml(在wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\modules内):

以下内容:

<module xmlns="urn:jboss:module:1.0" name="org.postgres"> 
  <resources> 
    <resource-root path="postgresql-9.0-801.jdbc4.jar"/> 
  </resources> 
   <dependencies> 
     <module name="javax.api"/> 
     <module name="javax.transaction.api"/> 
   </dependencies> 
</module> 
  1. 像这样修改了standalone.xmlwildfly-10.0.0.CR2\wildfly-10.0.0.CR2\standalone\configuration)(抱歉 - 我不知道如何复制xml,以便其他用户可以看到它(此处显示完整内容:http://collabedit.com/psk4a) ):
  2. 请帮助理解我的错误?

    enter image description here

5 个答案:

答案 0 :(得分:5)

下面给出了驱动程序配置和数据源创建以及如何使其全局可见,以便所有J2EE部署可以在需要时访问特定模块。

1。 PostGreSQL驱动程序配置

在wildfly-8.2.0.Final \ modules目录中的模块内创建如下目录结构,并放置提到的文件和驱动程序jar。 目录:wildfly-8.2.0.Final \ modules \ org \ postgresql \ main

文件:module.xml

entry: {'./src', '/Authentication'}

JAR:PostGreSQL驱动程序:postgresql-9.4-1204.jdbc41.jar

注意:您可以选择驱动程序版本,请确保在module.xml文件中反映该版本名称。 请注意,module.xml文件中提到的驱动程序名称=&#34; org.postgresql“应该与standalone.xml文件中的数据源配置相匹配。

注意:PostGreSQL驱动程序版本应该与系统中的java版本兼容。 在这个例子中,java是1.7&amp;使用的PostGreSQL驱动程序是postgresql-9.4-1204.jdbc41.jar。

2。配置DataSources

数据源在WildFly 8.2.0.Final \ standalone \ configuration中的standalone.xml文件中配置。 作为第一步,在standalone.xml文件中配置PostGreSQL驱动程序引用,如下面的标记

    <!--<?xml version="1.0" encoding="UTF-8"?>-->
    <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
        <resources>
            <resource-root path="postgresql-9.4-1204.jdbc41.jar"/>
        </resources>
        <dependencies><module name="javax.api"/></dependencies>
    </module>

1。添加数据源详细信息:

请在内部标记中添加

<driver name="postgresql" module="org.postgresql">
<datasource-class>org.postgresql.Driver</datasource-class>
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>

2.通过添加使发布的驱动程序全局可见   到

部分

这是:

<datasource jndi-name="java:/db1" pool-name="db1" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/dbname</connection-url>
<driver>postgresql</driver>
<security>
    <user-name>user_name</user-name>
    <password>password</password>
</security>
</datasource>

注意:全局模块是一组JBoss模块,它们将作为依赖项添加到每个Java EE部署的JBoss模块中。此类依赖关系允许Java EE部署查看全局模块导出的类。请参阅:https://docs.jboss.org/author/display/WFLY8/Subsystem+configuration

完成上述配置后,请启动WildFly实例。

答案 1 :(得分:3)

module.xml移至wildfly-10.0.0.CR2\wildfly-10.0.0.CR2\modules\org\postgres\main

后问题已解决

答案 2 :(得分:1)

我不是100%肯定,但如果我在网络上看到一些链接,则可能是由默认池设置引起的。您可以尝试将特定池配置设置添加到数据源:

<datasource jndi-name="blabla"... >
  <pool>  
    <min-pool-size>1</min-pool-size>  
    <max-pool-size>20</max-pool-size>  
    <prefill>true</prefill>            
  </pool>  
</datasource>

我基于这个stackoverflow线程:WildFly jdbc connection with Oracle

答案链接到这个相关的JBoss论坛帖子:https://developer.jboss.org/thread/257721

顺便提一下,Wildfly配置文档中提到了池设置。这是Wildfly 9,但我无法想象Wildfly 10中的变化很多:https://docs.jboss.org/author/display/WFLY9/DataSource+configuration

答案 3 :(得分:1)

我想说我只使用wildfly管理控制台(http://localhost:9990/console/)解决了这个问题。不是那么简单的解决方案,但它的工作原理。我只是从外部目录中指出了JDBC驱动程序jar,并在创建了数据源之后。手动没有xml,也没有修改wildfly的目录结构。 对于java 8 + postgresql 9.5,我使用了postgresql-42.1.1.jar。我之所以遇到问题只是因为我选择了错误的驱动程序并且数据库名称错误。

答案 4 :(得分:1)

尽管本主题有些陈旧,但我想强调一下,建议将数据源安装为模块的推荐方式是使用CLI“模块添加”命令,该命令为模块和module.xml创建完整路径。配置文件。这使得整个过程不易出错。

module add --name=org.postgres --resources=[JDBC JAR FILE] --dependencies=javax.api,javax.transaction.api

此外,我在这里看到了数据源的全局模块的用法。对于JDBC驱动程序,这不是常见的做法,因为全局模块旨在用于所有应用程序都通用且不需要维护的共享库。如果数据库已升级,而您却忘记了更新模块配置中的JDBC驱动程序,则可能会导致数据源配置不一致。

参考:How to configure a Datasource in WildFly