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>

Or with an env-entries.properties file as follows:

META-INF/env-entries.properties
org.superbiz.foo.MyBean/myDate = 2008-04-19
  • No labels