[英]How to use @Resource annotation in servlet (or in any other Java class)?
我正在嘗試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
使用相同的配置。
因此,我的第一個問題是如何解決此問題? 而且有什么方法可以指定特定注入的范圍(僅使用JSR的注釋)而無需使用Spring的@Scope
? 因為我是CDI的新手,所以任何例子都對我有很大的幫助。
@Resource
僅在您在容器中設置資源時才在Tomcat中工作。 這是為您自己的參考: http : //tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html
它期望您在Tomcat中綁定一個名為“ connectionProvider”的JNDI條目。 CDI不會將元素綁定到JNDI,它具有自己的對象到范圍的內部映射。 @Inject
在這里起作用,因為您可能尚未在資源配置中為此類設置資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.