java-ee – JEE6:@Resource可以注入什么?

我试图找出可以通过@Resource注释注入无状态会话Bean的内容.我在哪里可以找到一份清单?它取决于容器(在我的例子中是Glassfish 3.1.1)吗?

解决方法

JSR-250 (Common Annotations for the Java platform)解决了使用@Resource注释处理类时容器的运行时行为;相关部分是2.3,讨论了@Resource注释.

总的来说,可以使用@Resource注释注释任何可以作为env-entry,service-ref,resource-ref,message-destination-ref或resource-env-ref存在于部署描述符中的资源.可以将实例注入受支持的类的特定java类型列表也在同一部分中指定,并在下面复制:


Java Type                                              Equivalent Resource type

java.lang.String                                              env-entry
java.lang.Character                                           env-entry
java.lang.Integer                                             env-entry
java.lang.Boolean                                             env-entry
java.lang.Double                                              env-entry
java.lang.Byte                                                env-entry
java.lang.Short                                               env-entry
java.lang.Long                                                env-entry
java.lang.Float                                               env-entry
javax.xml.rpc.Service                                         service-ref
javax.xml.ws.Service                                          service-ref
javax.jws.WebService                                          service-ref
javax.sql.DataSource                                          resource-ref
javax.jms.ConnectionFactory                                   resource-ref
javax.jms.QueueConnectionFactory                              resource-ref
javax.jms.TopicConnectionFactory                              resource-ref
javax.mail.Session                                            resource-ref
java.net.URL                                                  resource-ref
javax.resource.cci.ConnectionFactory                          resource-ref
org.omg.CORBA_2_3.ORB                                         resource-ref
any other connection factory defined by a resource adapter    resource-ref
javax.jms.Queue                                               message-destination-ref
javax.jms.Topic                                               message-destination-ref
javax.resource.cci.InteractionSpec                            resource-env-ref
javax.transaction.UserTransaction                             resource-env-ref
Everything else                                               resource-env-ref

请注意表中的最后一项 – 根据规范,可以注入JNDI目录中存在的与资源关联的任何受管对象.

这些类的明确列表,其实例必须由容器注入,可以从Java EE 6 Platform Specification的第5章获得.这不是以任何形式制表,但是,本章规定了应用程序开发人员必须如何请求注入任何重要的资源.本章中列出的大多数资源都是通过指定@Resource注释或明确用于该资源的另一个注释来注入的.

对于特定于EJB容器的资源,EJB 3.1 specification可以重复前面提到的平台规范的第5章的内容.相关细节见第16章“企业Bean环境”,相关细节出现在标题为“Bean Provider的职责”的小节中.

关于Servlet 3.0 Specification,相关细节可以在第15.5.4节中找到,它讨论了servlet容器的@Resource注释语义.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...