由于新的缺少/不满意的依赖项,wildfly无法启动

时间:2018-11-17 19:43:47

标签: postgresql hibernate jdbc wildfly

当我尝试启动我的wildfly服务器时,出现此错误:

2018-11-17 21:29:55,203 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "org.postgresql")

])-故障描述:“ WFLYJCA0041:无法加载驱动程序[org.postgresql]的模块”

ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "swap")

])-失败描述:{“ WFLYCTL0180:缺少依赖项/不可用依赖项的服务” => [     “缺少jboss.driver-demander.java:jboss/datasources/swap [jboss.jdbc-driver.org_postgresql]”,     “缺少jboss.data-source.java:jboss/datasources/swap [jboss.jdbc-driver.org_postgresql]” ]} 2018-11-17 21:30:07,625错误[org.jboss.as.controller.management-operation](控制器引导线程)​​WFLYCTL0013:操作(“添加”)失败-地址:([     (“子系统” =>“数据源”),     (“数据源” =>“交换”) ])-失败描述:{“ WFLYCTL0180:缺少依赖项/不可用依赖项的服务” => [     “缺少jboss.driver-demander.java:jboss/datasources/swap [jboss.jdbc-driver.org_postgresql]”,     “缺少jboss.data-source.java:jboss/datasources/swap [jboss.jdbc-driver.org_postgresql]”,     “缺少jboss.data-source.java:jboss/datasources/swap [jboss.jdbc-driver.org_postgresql]” ]}

这是我的standalone.xml:

<datasources>
            <datasource jndi-name="java:jboss/datasources/swap" pool-name="swap" enabled="true" use-java-context="true">
                <connection-url>jdbc:postgresql://127.0.0.1:5432/swap?useUnicode=yes&amp;characterEncoding=UTF-8</connection-url>
                <driver>org.postgresql</driver>
                <security>
                    <user-name>postgres</user-name>
                    <password>postgres</password>
                </security>
            </datasource>
            <drivers>
                <driver name="org.postgresql" module="org.postgresql">
                    <driver-class>org.postgresql.Driver</driver-class>
                    <xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>

这是我的postgresql模块:

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

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

您的module.xml无效。缺少<dependencies>标签。请尝试以下操作:

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

编辑:

module.xml文件和postgresql-42.2.5.jar必须位于C:\wildfly\wildfly-9.0.2.Final\modules\system\layers\base\org\postgresql\main中。还建议将模块直接放入C:\wildfly\wildfly-9.0.2.Final\modules\中。因此,对于您的情况C:\wildfly\wildfly-9.0.2.Final\modules\org\postgresql\main。还可以看看EAP7 Documentation。考虑使用jboss-cli

答案 1 :(得分:0)

对于 WildFly 服务器的 PostgresSQL 配置,您应该按照以下步骤操作。

第一步:添加PostgreSQL模块

如果不存在,则创建新文件夹 ${wildfly_home}/modules/system/layers/base/org/postgresql/main/

通过此链接下载最新的驱动程序 Jar => https://jdbc.postgresql.org/download.html 并放在上述文件夹下。

也在那个新文件夹中,创建 module.xml 并放置以下配置。

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">

    <resources>
        <resource-root path="postgresql-42.2.23.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
            
</module>

可能是 jar 版本需要在 resource-root 中更新。

第 2 步:从 standalone.xml

更新数据库配置

删除现有的 <driver> 配置并添加新配置,如下所示。

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

删除现有的 <datasource> 配置并添加新配置,如下所示。

<datasource jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true" use-java-context="true">
    <connection-url>jdbc:postgresql://127.0.0.1:5432/swap?useUnicode=yes&amp;characterEncoding=UTF-8</connection-url>
    <driver>postgresql</driver>
    <security>
        <user-name>postgres</user-name>
        <password>postgres</password>
    </security>
    <pool>
        <max-pool-size>20</max-pool-size>
    </pool>
</datasource>
        

default-bindings 数据源名称从 PostgresDS 修改为 ExampleDS

<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/PostgresDS" ...

确保您已在 PostgreSQL 数据库服务器中创建了 swap 数据库。

现在,运行服务器,一切都会好的。