Mongodb 用于CDI的wildfly 8中的自定义jndi对象工厂

Mongodb 用于CDI的wildfly 8中的自定义jndi对象工厂,mongodb,jndi,cdi,java-ee-7,wildfly-8,Mongodb,Jndi,Cdi,Java Ee 7,Wildfly 8,我正在尝试使用CDI为wildfly 8注入jndi资源。 为此,我想使用中开发的自定义jnidfactory 这个问题是由于我对wildfly的了解有限,我不知道以下几点 1) 如何在wildfly中激活/附加这个jndi工厂,当然我可以在启动时创建一个对象,并以编程方式为它指定一个jndi名称,但我想探索wildfly的自定义工厂特性 2) 设置对象工厂所需的uri属性的最佳实践是,我假设在工厂内使用System.getProperty就足够了,因为每个安装的DB uri都不同 一旦实现了这

我正在尝试使用CDI为wildfly 8注入jndi资源。 为此,我想使用中开发的自定义jnidfactory

这个问题是由于我对wildfly的了解有限,我不知道以下几点

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

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

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

我已经尽我最大的努力寻找类似的职位,但找不到任何,如果你认为这是重复的,请告诉我正确的一个


谢谢,

如果您想使用
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\u CLIENT\u 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>
-添加到此目录
mongo-java-driver-2.11.0.jar
library

4) 添加类似这样的内容

到您的
domain.xml
standalone.xml





完成这些步骤后,您可以使用@Resource注释(例如
@Resource(lookup=“java:global/MongoClient”)将MongoClient注入到类中

感谢您的回复,目前我为它制作了一个简单的生成器以继续工作,但我会很快将其移动到JNDI驱动程序,如果我理解正确,这实际上是一个在WildFly服务器中定义模块并将其作为JNDI资源公开的示例。您测试了我的解决方案吗?
<?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>