我正在尝试使用cdi为wildfly 8注入jndi资源。
为此,我想使用在https://github.com/juanlmelo/mongo-jndi-plugin/
这个问题是由于我对野生苍蝇的了解有限,我不知道以下几点。
1)如何在wildfly中激活/附加这个jndi factory,当然我可以在启动时创建一个对象,并以编程方式为它分配一个jndi名称,但是我想探索wildfly的自定义工厂特性
2)设置对象工厂所需的uri属性的最佳实践是,我假设在工厂内使用system.getproperty就足够了,因为每个安装的db uri都是不同的
一旦实现了这一点,我有信心使用cdi将其注入到我的课程中。
我已经尽我最大的努力寻找类似的职位,但找不到任何,如果你认为这是重复的请指给我一个正确的。
谢谢,

最佳答案

如果您想使用https://github.com/juanlmelo/mongo-jndi-plugin/将自定义jndi工厂添加到wildfly,您需要做一些事情:
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驱动程序
-创建目录:wildfly-8.1.0.Final/modules/com/mongodb/driver/main
-创建那里的文件: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 annotation(例如@Resource(lookup = "java:global/MongoClient"

关于mongodb - 野生蝇8中的自定义jndi对象工厂用于CDI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25311699/

10-16 19:48