簡體   English   中英

如何在servlet(或任何其他Java類)中使用@Resource批注?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM