The following built-in types are supported for @Resource injection in EJBs via <env-entry> elements in a META-INF/ejb-jar.xml or via plain properties in a META-INF/env-entries.properties file.
EJB 3.0 required types:
- java.lang.Boolean
- java.lang.Byte
- java.lang.Character
- java.lang.Double
- java.lang.Float
- java.lang.Integer
- java.lang.Long
- java.lang.Short
- java.lang.String
OpenEJB 3.0 additional types:
- java.lang.Class
- java.lang.Enum (any subclass of)
- java.io.File
- java.math.BigDecimal
- java.math.BigInteger
- java.net.Inet4Address
- java.net.Inet6Address
- java.net.InetAddress
- java.net.URI
- java.net.URL
- java.util.ArrayList
- java.util.Date
- java.util.HashMap
- java.util.Hashtable
- java.util.IdentityHashMap
- java.util.LinkedHashMap
- java.util.LinkedHashSet
- java.util.LinkedList
- java.util.List
- java.util.Map
- java.util.Properties
- java.util.Set
- java.util.SortedMap
- java.util.TreeMap
- java.util.TreeSet
- java.util.Vector
- java.util.WeakHashMap
- java.util.logging.Logger
- java.util.regex.Pattern
- javax.management.ObjectName
- javax.naming.Context
- org.apache.commons.logging.Log
- org.apache.log4j.Logger
To use an OpenEJB additional type in xml, simply declare it as <env-entry-type>java.lang.String</env-entry-type> and it will be converted on the fly to the field/setter type used by the bean class. For example:
package org.superbiz.foo; import java.util.Date; @Stateless public class MyBean { @Resource private Date myDate; }
Works with an ejb-jar.xml as follows:
META-INF/ejb-jar.xml
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="false"> <enterprise-beans> <session> <ejb-name>MyBean</ejb-name> <env-entry> <env-entry-name>org.superbiz.foo.MyBean/myDate</env-entry-name> <env-entry-value>2008-04-19</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> </session> </enterprise-beans> </ejb-jar>