2

我正在尝试使用 CDI 为 Wildfly 8 注入 jndi 资源。为此,我想使用https://github.com/juanlmelo/mongo-jndi-plugin/中开发的自定义 jnidfactory

问题是由于我对wildfly的了解有限,我不知道以下内容。

1)如何在wildfly中激活/附加这个jndifactory,当然我可以在启动时创建一个对象并以编程方式为其分配一个jndi名称,但想探索wildfly的自定义工厂功能

2) 设置对象工厂所需的 uri 属性的最佳实践,我假设在工厂内使用 System.getProperty 就足够了,因为每次安装的 DB uri 都会有所不同

一旦实现这一点,我相信我可以使用 cdi 将它注入我的类中。

我已尽力寻找类似的帖子,但找不到任何帖子,如果您认为这是重复的,请指出正确的帖子。

谢谢,

4

1 回答 1

2

如果您想将自定义 JNDI 工厂添加到 Wildfly,请使用https://github.com/juanlmelo/mongo-jndi-plugin/您需要做几件事:

1)您需要更改一点实现https://github.com/juanlmelo/mongo-jndi-plugin/blob/master/src/main/java/com/mongodb/jndi/MongoClientJNDIFactory.java
- 第 38 行更改为:
String mongoURI = (String) environment.get(MONGO_CLIENT_URI);
并注释掉或删除第 39-49 行

2)然后运行命令mvn clean package并创建目录,例如:
wildfly-8.1.0.Final/modules/com/mongodb/jndi/main/
复制那里mongo-jndi-plugin-1.0.jar并在那里创建module.xml包含内容的文件:

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.mongodb.jndi">
    <resources>
        <resource-root path="mongo-jndi-plugin-1.0.jar"/>
    </resources>
    <dependencies>
         <module name="com.mongodb.driver"/>
        <module name="javax.api"/>
    </dependencies>
</module>

3)添加mongo驱动
-create 目录:wildfly-8.1.0.Final/modules/com/mongodb/driver/main
-create there file:module.xml并放在那里:

<?xml version="1.0" ?> 
<module xmlns="urn:jboss:module:1.1" name="com.mongodb.driver">
<resources>
    <resource-root path="mongo-java-driver-2.11.0.jar"/>
</resources>
<dependencies>
    <module name="javax.api"/>
</dependencies> 
</module>

-添加到这个目录mongo-java-driver-2.11.0.jar

4)添加这样的东西
<subsystem xmlns="urn:jboss:domain:naming:2.0"> <bindings> <object-factory name="java:global/MongoClient" module="com.mongodb.jndi" class="com.mongodb.jndi.MongoClientJNDIFactory"> <environment> <property name="mongoClientURI" value="mongodb://username:password@yourdomain.com:27017,username:password@yourdomain.com:27017"/> </environment> </object-factory> </bindings> <remote-naming/> </subsystem>

到你的domain.xmlstandalone.xml



瞧,在此步骤之后,您可以使用 @Resource 注释将MongoClient
注入到您的类中(例如。@Resource(lookup = "java:global/MongoClient"

于 2014-08-15T20:45:14.600 回答