Mongodb 用于CDI的wildfly 8中的自定义jndi对象工厂
我正在尝试使用CDI为wildfly 8注入jndi资源。 为此,我想使用中开发的自定义jnidfactory 这个问题是由于我对wildfly的了解有限,我不知道以下几点 1) 如何在wildfly中激活/附加这个jndi工厂,当然我可以在启动时创建一个对象,并以编程方式为它指定一个jndi名称,但我想探索wildfly的自定义工厂特性 2) 设置对象工厂所需的uri属性的最佳实践是,我假设在工厂内使用System.getProperty就足够了,因为每个安装的DB uri都不同 一旦实现了这一点,我相信我可以使用cdi将其注入到我的类中 我已经尽我最大的努力寻找类似的职位,但找不到任何,如果你认为这是重复的,请告诉我正确的一个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都不同 一旦实现了这
谢谢,如果您想使用
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>