【发布时间】:2014-12-13 13:17:52
【问题描述】:
我正在试验 Java 依赖注入。 SO上的许多问题都在谈论连接jndi资源。但我认为,可以使用 @Resource 注释来连接 java 类。我有一个简单的 servlet,其中有两个要使用 CDI 连接的属性。我正在使用 Tomcat6、Servlet 2.5 和 Weld 配置。
servlet 代码:
@Inject
private HikariConnectionProperties hikariConnectionProperties;
@Resource(name = "connectionProvider")
private IConnectionProvider connectionProvider;
但是,我编译、部署了代码。但是,当有对相应 servlet 的请求时,我会得到 javax.naming.NameNotFoundException: Name connectionProvider is not bound in this Context。
但是,我有ConnectionProvider 类的@Named 注释。 对于两个字段,@Inject 的配置相同。
那么,我的第一个问题是如何解决这个问题?有什么方法可以在不使用 Spring 的@Scope 的情况下指定特定注入的范围(仅使用 JSR 的注释)?由于我是 CDI 的新手,因此任何示例都会有很大帮助。
【问题讨论】:
-
你可以看到this link
ConnectionProvider不应该是@Named,应该是@Resource、@PersistenceContext等 -
@Everv0id 资源也不起作用
-
那么,如果你从注入点删除
(name = "connectionProvider")或将其添加到ConnectionProvider声明中会发生什么? -
@Everv0id 两者都进行了实验。 ): 没有成功。
标签: java servlets dependency-injection cdi