首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wildfly 10中未找到JNDI @Resource

Wildfly 10中未找到JNDI @Resource
EN

Stack Overflow用户
提问于 2016-06-29 18:25:50
回答 1查看 1.3K关注 0票数 0

我试图通过Wildfly 10上的RestEasy webservice中的@Resource注解来访问JNDI Oracle数据源,但返回了null。它使用InitialContext.lookup方法。下面是我的java代码:

代码语言:javascript
复制
@Path("/rest")
public class ServiceTest {
    @Resource(name = "jdbc/OracleDS") DataSource source1;
    @Resource(name = "java:/jdbc/OracleDS") DataSource source2;
    @Resource(lookup = "java:/jdbc/OracleDS") DataSource source3;

    @GET
    @Path("/test")
    @Produces(MediaType.TEXT_PLAIN)
    public String testJNDI () {
        try {
            javax.naming.Context initCtx = new InitialContext();
            DataSource source4 = (DataSource)initCtx.lookup("java:/jdbc/OracleDS");
            initCtx.close();
            return "" + source1 + " / " + source2 + " / " + source3 + " / " + source4;
        } catch (Exception error) {
            e.printStackTrace();
    }
}

这是我的standalone.xml数据源定义:

代码语言:javascript
复制
<datasource jta="true" jndi-name="java:/jdbc/OracleDS" pool-name="OracleDS" enabled="true" use-ccm="true" statistics-enabled="true">
   <connection-url>
       jdbc:oracle:thin:@192.168.10.20:1521:log
   </connection-url>
   <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
   <driver>oracle</driver>
   <pool>
       <initial-pool-size>1</initial-pool-size>
       <max-pool-size>10</max-pool-size>
   </pool>
   <security>
       <user-name>user</user-name>
       <password>passw</password>
   </security>
   <validation>
       <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
       <background-validation>true</background-validation>
       <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
       <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
   </validation>
   <timeout>
        <blocking-timeout-millis>30000</blocking-timeout-millis>
        <idle-timeout-minutes>15</idle-timeout-minutes>
        <query-timeout>300</query-timeout>
   </timeout>
   <statement>
       <track-statements>nowarn</track-statements>
   </statement>
</datasource>

这是我的module.xml代码:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
    <resources>
        <resource-root path="ojdbc6.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

服务输出如下:

代码语言:javascript
复制
null / null / null / org.jboss.as.connector.subsystems.datasources.WildFlyDataSource@4b1881

为什么source4创建了资源,而其他人没有?我原以为至少source3会像source4一样。@Resource定义中有什么错误吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-06-30 01:42:52

确保WEB-INF目录中有beans.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

This will enable CDI in your application.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38096879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档