JSR-250 (Общие аннотации для платформы Java) обращается к поведению контейнера во время выполнения при обработке классов с аннотацией @Resource
;соответствующий раздел - 2.3, где обсуждается аннотация @Resource
.
В общем, любой ресурс, который может присутствовать в дескрипторе развертывания в виде env-entry
, service-ref
, resource-ref
, message-destination-ref
или resource-env-ref
можно пометить аннотацией @Resource
для инъекции.Список определенных типов Java, экземпляры которых могут быть внедрены в поддерживаемые классы, также указан в том же разделе и воспроизводится ниже:
<b>
Java Type Equivalent Resource type
</b>
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, может быть внедрен.
Определенный список таких классов, экземпляры которых должны быть внедрены контейнером, можно получить из главы5 спецификации платформы Java EE 6 .Это не приведено в таблицах ни в какой форме, но, тем не менее, в главе указано, как разработчик приложения должен запросить внедрение какого-либо значительного ресурса.Большинство ресурсов, перечисленных в этой главе, вводятся путем указания аннотации @Resource
или другой аннотации, которая явно используется для этого ресурса.
Спецификация EJB 3.1 может повторять содержимое вышеприведенногоупомянутая глава 5 спецификации платформы, для ресурсов, специфичных для контейнера EJB.Соответствующие подробности приведены в главе 16 под названием «Среда Enterprise Bean», а соответствующие подробности представлены в подразделах «Обязанности поставщика компонентов».
Относительно спецификации Servlet 3.0 соответствующие подробности можно найти в Разделе 15.5.4, где обсуждается семантика аннотации @Resource
для контейнера сервлета.