<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
<table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tbody>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tbody>
<tr>
<td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
<h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
<!-- To have a header image/logo replace the name below with your img tag -->
<!-- Email clients will render the images when the message is read so any image -->
<!-- must be made available on a public server, so that all recipients can load the image. -->
<a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
EJB 3.0 and env-entry injection
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/ozizka%40redhat.com">Ondrej Zizka</a> in <i>EJB 3.0</i> - <a href="http://community.jboss.org/docs/DOC-15944">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> org.acme;
 
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> MyClass <font color="navy">{</font>
 
  @Resource(name=<font color="red">"providerURL"</font>) String field;
 
<font color="navy">}</font>
 
 
<env-entry>
<env-entry-name>providerURL</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ldap:<font color="darkgreen">//localhost:389/</env-entry-value></font>
</env-entry>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>OR</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java">
<font color="navy"><b>package</b></font> org.acme;
 
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> MyClass <font color="navy">{</font>
  @Resource String field;
<font color="navy">}</font>
 
<env-entry>
<env-entry-name>org.acme.MyClass/field</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ldap:<font color="darkgreen">//localhost:389/</env-entry-value></font>
</env-entry>
 
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>OR</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> org.acme;
 
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> MyClass <font color="navy">{</font>
  String field;
<font color="navy">}</font>
 
<env-entry>
<env-entry-name>providerUrl</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>ldap:<font color="darkgreen">//localhost:389/</env-entry-value></font>
<injection-target>
<injection-target-class>org.acme.MyClass</injection-target>
<injection-target-name>field</injection-target-name>
</injection-target>
</env-entry>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>@Resource int maxExemptions = 4;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><env-entry><br/>   <env-entry-name>maxExemptions</env-entry-name><br/>   <env-entry-type>java.lang.Integer</env-entry-type><br/>   <env-entry-value>15</env-entry-value><br/></env-entry></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>If you download the entire source from CVS (jboss-head), there are examples in the ejb3 JUnit tests. Take a look at the enventry test. Here is an example bean and ejb-jar.xml</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java">@Stateless(name=<font color="red">"TestEnvEntry"</font>)
@Remote(TestEnvEntry.class)
@RemoteBinding(jndiBinding=<font color="red">"TestEnvEntry"</font>)
public  <font color="navy"><b>class</b></font> TestEnvEntryBean   <font color="navy"><b>implements</b></font> TestEnvEntry
<font color="navy">{</font>
 
  private  <font color="navy"><b>static</b></font> <font color="navy"><b>final</b></font> Logger log = Logger.getLogger(TestEnvEntryBean.class);
 
  @Resource(name=<font color="red">"maxExceptions"</font>) <font color="navy"><b>private</b></font> <font color="navy"><b>int</b></font> maxExceptions = 4;
 
  @Resource <font color="navy"><b>private</b></font> <font color="navy"><b>int</b></font> numExceptions = 3;
 
  <font color="navy"><b>private</b></font> <font color="navy"><b>int</b></font> minExceptions = 1;
 
  <font color="navy"><b>public</b></font> <font color="navy"><b>int</b></font> getMaxExceptions()  <font color="navy">{</font>  <font color="navy"><b>return</b></font> maxExceptions;   <font color="navy">}</font>
 
  <font color="navy"><b>public</b></font> <font color="navy"><b>int</b></font> getNumExceptions() <font color="navy">{</font>  <font color="navy"><b>return</b></font> numExceptions;   <font color="navy">}</font>
 
  <font color="navy"><b>public</b></font> <font color="navy"><b>int</b></font> getMinExceptions() <font color="navy">{</font>  <font color="navy"><b>return</b></font> minExceptions;  <font color="navy">}</font>
 
<font color="navy">}</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-xml">
<span class="jive-xml-tag"><ejb-jar></span>
  <span class="jive-xml-tag"><display-name></span>EnvEntry Tests<span class="jive-xml-tag"></display-name></span>
  <span class="jive-xml-tag"><enterprise-beans></span>
    <span class="jive-xml-tag"><ejb-name></span>TestEnvEntry<span class="jive-xml-tag"></ejb-name></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>maxExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>15<span class="jive-xml-tag"></env-entry-value></span>
    <span class="jive-xml-tag"></env-entry></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>minExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>5<span class="jive-xml-tag"></env-entry-value></span>
      <span class="jive-xml-tag"><injection-target></span>
        <span class="jive-xml-tag"><injection-target-class></span>org.jboss.ejb3.test.enventry.TestEnvEntryBean<span class="jive-xml-tag"></injection-target-class></span>
        <span class="jive-xml-tag"><injection-target-name></span>minExceptions<span class="jive-xml-tag"></injection-target-name></span>
      <span class="jive-xml-tag"></injection-target></span>
    <span class="jive-xml-tag"></env-entry></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>org.jboss.ejb3.test.enventry.TestEnvEntryBean/numExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>10<span class="jive-xml-tag"></env-entry-value></span>
    <span class="jive-xml-tag"></env-entry></span>
    <span class="jive-xml-tag"><ejb-name></span>ExtendedTestEnvEntry<span class="jive-xml-tag"></ejb-name></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>maxExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>14<span class="jive-xml-tag"></env-entry-value></span>
    <span class="jive-xml-tag"></env-entry></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>minExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>6<span class="jive-xml-tag"></env-entry-value></span>
      <span class="jive-xml-tag"><injection-target></span>
        <span class="jive-xml-tag"><injection-target-class></span>org.jboss.ejb3.test.enventry.ExtendedTestEnvEntryBean<span class="jive-xml-tag"></injection-target-class></span>
        <span class="jive-xml-tag"><injection-target-name></span>minExceptions<span class="jive-xml-tag"></injection-target-name></span>
      <span class="jive-xml-tag"></injection-target></span>
    <span class="jive-xml-tag"></env-entry></span>
    <span class="jive-xml-tag"><env-entry></span>
      <span class="jive-xml-tag"><env-entry-name></span>org.jboss.ejb3.test.enventry.ExtendedTestEnvEntryBean/numExceptions<span class="jive-xml-tag"></env-entry-name></span>
      <span class="jive-xml-tag"><env-entry-type></span>java.lang.Integer<span class="jive-xml-tag"></env-entry-type></span>
      <span class="jive-xml-tag"><env-entry-value></span>11<span class="jive-xml-tag"></env-entry-value></span>
    <span class="jive-xml-tag"></env-entry></span>
  <span class="jive-xml-tag"></enterprise-beans></span>
<span class="jive-xml-tag"></ejb-jar></span></code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>--------------</p><p>Here is an example.<br/>All three work but I have shown the first 2 in this example</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong>ejb-jar.xml</strong></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java"><?xml version=<font color="red">"1.0"</font> encoding=<font color="red">"UTF-8"</font>?>
<ejb-jar version=<font color="red">"3.0"</font>
xmlns=<font color="red">"http://java.sun.com/xml/ns/javaee"</font>
xmlns:xsi=<font color="red">"http://www.w3.org/2001/XMLSchema-instance"</font>
xsi:schemaLocation=<font color="red">"http://java.sun.com/xml/ns/javaee ../../../testapp/ejb-jar_3_0.xsd "</font>>
  <enterprise-beans>
    <session>
      <ejb-name>com.suresh.ejb.test.HelloBean</ejb-name>
      <remote>com.suresh.ejb.test.Hello</remote>
      <ejb-class>com.suresh.ejb.test.HelloBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
      <env-entry>
        <env-entry-name>com.suresh.ejb.test.HelloBean/urls</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>@ldap.url@</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>username</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>@user.name@</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>password</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>what</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>com.suresh.ejb.test.HelloBean/location</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>Australia</env-entry-value>
      </env-entry>
      <resource-ref>
        <res-ref-name>jdbc/user</res-ref-name>
        <res-type>javax.sql.Datasource</res-type>
        <res-auth>Container</res-auth>
        <mapped-name>java:UserDB</mapped-name>
      </resource-ref>
 
    </session>
  </enterprise-beans>
 
</ejb-jar>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> com.suresh.ejb.test;
 
<font color="navy"><b>import</b></font> java.sql.Connection;
<font color="navy"><b>import</b></font> java.sql.ResultSet;
 
<font color="navy"><b>import</b></font> javax.annotation.Resource;
<font color="navy"><b>import</b></font> javax.naming.Context;
<font color="navy"><b>import</b></font> javax.naming.InitialContext;
<font color="navy"><b>import</b></font> javax.sql.DataSource;
 
 
 
<font color="navy"><b>import</b></font> com.suresh.ejb.test.Hello;
 
@javax.ejb.Stateless(name=<font color="red">"com.suresh.ejb.test.HelloBean"</font>)
@javax.ejb.TransactionAttribute (value=javax.ejb.TransactionAttributeType.SUPPORTS)
@javax.annotation.Resource(name=<font color="red">"jdbc/user"</font>,
  type=DataSource.class,
  authenticationType=javax.annotation.Resource.AuthenticationType.CONTAINER,
  mappedName=<font color="red">"java:UserDB"</font>)
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> HelloBean <font color="navy"><b>implements</b></font> Hello <font color="navy">{</font>
 
  @Resource <font color="navy"><b>private</b></font> String urls;
  @Resource(name=<font color="red">"username"</font>) <font color="navy"><b>private</b></font> String provider;
  @Resource(name=<font color="red">"password"</font>) <font color="navy"><b>private</b></font> String pwd;
  @Resource <font color="navy"><b>private</b></font> String location;
 
  <font color="navy"><b>public</b></font> String greet() <font color="navy">{</font>
    <font color="navy"><b>return</b></font> urls + <font color="red">" "</font> + location + <font color="red">" "</font> + pwd + <font color="red">" "</font> + provider + <font color="red">" at "</font> + greet1();
  <font color="navy">}</font>
 
  <font color="darkgreen">//example of datasource</font>
  <font color="navy"><b>public</b></font> String greet1() <font color="navy">{</font>
    String data = <font color="navy"><b>null</b></font>;
    Connection c = <font color="navy"><b>null</b></font>;
 
    <font color="navy"><b>try</b></font> <font color="navy">{</font>
      Context ctx = <font color="navy"><b>new</b></font> InitialContext();
      DataSource ds = (DataSource) ctx.lookup(<font color="red">"java:comp.ejb3/env/jdbc/user"</font>);
     ResultSet rs = ds.getConnection().createStatement().executeQuery(<font color="red">"select sysdate from dual"</font>);
     <font color="navy"><b>while</b></font> (rs.next()) <font color="navy">{</font>
       data = rs.getString(1);
     <font color="navy">}</font>
    <font color="navy">}</font> <font color="navy"><b>catch</b></font> (Exception e) <font color="navy">{</font>
       System.err.println(e);
       e.printStackTrace();
    <font color="navy">}</font> <font color="navy"><b>finally</b></font> <font color="navy">{</font>
       <font color="navy"><b>try</b></font> <font color="navy">{</font>
       c.close();
    <font color="navy">}</font> <font color="navy"><b>catch</b></font> (Exception e) <font color="navy">{</font>
    <font color="navy">}</font>
  <font color="navy">}</font>
  <font color="navy"><b>return</b></font> data;
  <font color="navy">}</font>
<font color="navy">}</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><br/>Hello.java</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>package</b></font> comsuresh.ejb.test;
 
<font color="navy"><b>import</b></font> javax.ejb.Remote;
 
@Remote
<font color="navy"><b>public</b></font> <font color="navy"><b>interface</b></font> Hello <font color="navy">{</font>
  <font color="navy"><b>public</b></font> String greet();
<font color="navy">}</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>This article was generated from the following discussion: <a class="jive-link-thread-small" href="http://community.jboss.org/thread/106082">EJB 3.0 and env-entry injection</a></p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Comment by <a href="http://community.jboss.org/docs/DOC-15944">going to Community</a></p>
<p style="margin: 0;">Create a new document in EJB 3.0 at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2029">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>