redis 添加jedis模块用作wildfly 11中的插件

htzpubme  于 5个月前  发布在  Redis
关注(0)|答案(1)|浏览(85)

我试图在wildfly-11中安装jedis模块,这样我就可以创建一个数据源。为此,我使用了jedis-5.1.0.jar
1.我已经在$JBOSS_HOME/modules/system/layers/base中创建了org/redis/jdbc/main目录,并在其中复制了我的jedis jar。
1.我还在此目录中创建了一个module.xml,其中包含以下内容。

<?xml version="1.0" encoding="UTF-8"?>    
<module xmlns="urn:jboss:module:1.5" name="org.redis.jdbc">    
    <resources>    
        <resource-root path="jedis-5.1.0.jar"/>    
    </resources>    
    <dependencies>    
        <module name="org.apache.commons.pool2"/>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>    
</module>

字符串
1.对于连接池,我使用的是commons-pool2-2.12.0.jar

<module xmlns="urn:jboss:module:1.5" name="org.apache.commons.pool2">    
     <properties>    
         <property name="jboss.api" value="private"/>    
     </properties>    
     <resources>    
         <resource-root path="commons-pool2-2.12.0.jar"/>    
     </resources>    
     <dependencies>    
     </dependencies>    
 </module>


当我使用--command="/core-service=module-loading:list-resource-loader-paths(module=org.redis.jdbc)运行jboss-cli.sh时,我可以看到模块已正确加载。
现在来看standalone-ha.xml中的数据源。

<datasource jta="true" jndi-name="java:jboss/datasources/REDISDS" pool-name="redisds" enabled="true" use-java-context="true">    
                <connection-url>jdbc:redis://REDIS_IP:6379</connection-url>    
                <driver>redis</driver>    
                <pool>    
                    <min-pool-size>5</min-pool-size>    
                    <max-pool-size>20</max-pool-size>    
                    <prefill>true</prefill>    
                </pool>    
                <security>    
                    <user-name>SAME_AS_PASSWORD</user-name>    
                    <password>PASSWORD</password>    
                </security>    
                <validation>    
                    <background-validation>true</background-validation>    
                    <background-validation-millis>60000</background-validation-millis>    
                    <validate-on-match>true</validate-on-match>    
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>    
                </validation>    
            </datasource>


我还定义了driver

<driver name="redis" module="org.redis.jdbc">
    <!-- <driver-class>redis.clients.jedis.JedisConnectionFactory</driver-class> -->
    <!-- <xa-datasource-class>redis.clients.jedis.RedisDataSource</xa-datasource-class> -->
</driver>


没有驱动程序类存在于jedis-5.1.0.jar中,所以我对它进行了注解。
现在,当我启动wildfly服务器时,我收到以下错误

09:24:18,575 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "redisds")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.redis"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
    "org.wildfly.data-source.redisds is missing [jboss.jdbc-driver.redis]",
    "jboss.driver-demander.java:jboss/datasources/REDISDS is missing [jboss.jdbc-driver.redis]"
]
}
09:24:18,577 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "redisds")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => [
    "jboss.jdbc-driver.redis",
    "jboss.jdbc-driver.redis"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
    "org.wildfly.data-source.redisds is missing [jboss.jdbc-driver.redis]",
    "jboss.driver-demander.java:jboss/datasources/REDISDS is missing [jboss.jdbc-driver.redis]",
    "org.wildfly.data-source.redisds is missing [jboss.jdbc-driver.redis]"
]
}


我怀疑我没有使用兼容的redis jdbc驱动程序。搜索互联网没有提供太多的帮助。有人能好心地指出错误吗?
谢谢

编辑this链接之后,我已经使用cdata jdbc驱动程序创建了一个数据源,但这需要许可。我越来越怀疑,我正在使用的jedis jar不符合jdbc。

6za6bjd0

6za6bjd01#

好吧,我已经弄明白了。我的怀疑是正确的。Jedis不符合JDBC。我找到了this github repo。我克隆了它并运行了mvn package命令。它生成了两个jar redis-jdbc-driver-0.0.2.jarredis-jdbc-driver-core-0.0.2.jar。然后我将jar作为模块添加到我的wildfly中,如下所示

1. module add --name=org.jdbc.jedis.core --resources=redis-jdbc-driver-core-0.0.2.jar
2. module add --name=org.jdbc.jedis.all --resources=redis-jdbc-driver-0.0.2-all.jar --dependencies=org.jdbc.jedis.core

字符串
现在可以测试连接如下

./jboss-cli.sh --connect --controller=JBOSS_IP:9990 --command="/subsystem=datasources/data-source=XXX:test-connection-in-pool"


这里XXX是您的内存pool-name。它现在给出输出

{
    "outcome" => "success",
    "result" => [true]
}

driver-class在驱动配置中为com.itmuch.redis.jdbc.redis.RedisDriver

相关问题