[jboss-user] [EJB 3.0] - EJB 3.0 and env-entry injection

Ondrej Zizka do-not-reply at jboss.com
Fri Oct 8 15:28:26 EDT 2010


Ondrej Zizka [http://community.jboss.org/people/ozizka%40redhat.com] created the document:

"EJB 3.0 and env-entry injection"

To view the document, visit: http://community.jboss.org/docs/DOC-15944

--------------------------------------------------------------
package org.acme;
 
public class MyClass {
 
  @Resource(name="providerURL") String field;
 
}
 
 
<env-entry>
 <env-entry-name>providerURL</env-entry-name>
 <env-entry-type>java.lang.String</env-entry-type>
 <env-entry-value>ldap://localhost:389/</env-entry-value>
</env-entry>



OR



package org.acme;
 
public class MyClass {
  @Resource String field;
}
 
<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://localhost:389/</env-entry-value>
</env-entry>
 



OR


package org.acme;
 
public class MyClass {
  String field;
}
 
<env-entry>
 <env-entry-name>providerUrl</env-entry-name>
 <env-entry-type>java.lang.String</env-entry-type>
 <env-entry-value>ldap://localhost:389/</env-entry-value>
 <injection-target>
 <injection-target-class>org.acme.MyClass</injection-target>
 <injection-target-name>field</injection-target-name>
 </injection-target>
</env-entry>







@Resource int maxExemptions = 4;

<env-entry>
   <env-entry-name>maxExemptions</env-entry-name>
   <env-entry-type>java.lang.Integer</env-entry-type>
   <env-entry-value>15</env-entry-value>
</env-entry>




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


@Stateless(name="TestEnvEntry")
@Remote(TestEnvEntry.class)
@RemoteBinding(jndiBinding="TestEnvEntry")
public  class TestEnvEntryBean   implements TestEnvEntry
{
 
  private  static final Logger log = Logger.getLogger(TestEnvEntryBean.class);
 
  @Resource(name="maxExceptions") private int maxExceptions = 4;
 
  @Resource private int numExceptions = 3;
 
  private int minExceptions = 1;
 
  public int getMaxExceptions()  {  return maxExceptions;   }
 
  public int getNumExceptions() {  return numExceptions;   }
 
  public int getMinExceptions() {  return minExceptions;  }
 
}




<ejb-jar>
  <display-name>EnvEntry Tests</display-name>
  <enterprise-beans>


    <ejb-name>TestEnvEntry</ejb-name>
    <env-entry>
      <env-entry-name>maxExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>15</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>minExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>5</env-entry-value>
      <injection-target>
        <injection-target-class>org.jboss.ejb3.test.enventry.TestEnvEntryBean</injection-target-class>
        <injection-target-name>minExceptions</injection-target-name>
      </injection-target>
    </env-entry>
    <env-entry>
      <env-entry-name>org.jboss.ejb3.test.enventry.TestEnvEntryBean/numExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>10</env-entry-value>
    </env-entry>



    <ejb-name>ExtendedTestEnvEntry</ejb-name>
    <env-entry>
      <env-entry-name>maxExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>14</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>minExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>6</env-entry-value>
      <injection-target>
        <injection-target-class>org.jboss.ejb3.test.enventry.ExtendedTestEnvEntryBean</injection-target-class>
        <injection-target-name>minExceptions</injection-target-name>
      </injection-target>
    </env-entry>
    <env-entry>
      <env-entry-name>org.jboss.ejb3.test.enventry.ExtendedTestEnvEntryBean/numExceptions</env-entry-name>
      <env-entry-type>java.lang.Integer</env-entry-type>
      <env-entry-value>11</env-entry-value>
    </env-entry>


  </enterprise-beans>
</ejb-jar>



--------------
Here is an example.
All three work but I have shown the first 2 in this example

*ejb-jar.xml*

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ../../../testapp/ejb-jar_3_0.xsd ">
  <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>




package com.suresh.ejb.test;
 
import java.sql.Connection;
import java.sql.ResultSet;
 
import javax.annotation.Resource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
 
 
 
import com.suresh.ejb.test.Hello;
 
@javax.ejb.Stateless(name="com.suresh.ejb.test.HelloBean")
@javax.ejb.TransactionAttribute (value=javax.ejb.TransactionAttributeType.SUPPORTS)
@javax.annotation.Resource(name="jdbc/user",
  type=DataSource.class,
  authenticationType=javax.annotation.Resource.AuthenticationType.CONTAINER,
  mappedName="java:UserDB")
public class HelloBean implements Hello {
 
  @Resource private String urls;
  @Resource(name="username") private String provider;
  @Resource(name="password") private String pwd;
  @Resource private String location;
 
  public String greet() {
    return urls + " " + location + " " + pwd + " " + provider + " at " + greet1();
  }
 
  //example of datasource
  public String greet1() {
    String data = null;
    Connection c = null;
 
    try {
      Context ctx = new InitialContext();
      DataSource ds = (DataSource) ctx.lookup("java:comp.ejb3/env/jdbc/user");
     ResultSet rs = ds.getConnection().createStatement().executeQuery("select sysdate from dual");
     while (rs.next()) {
       data = rs.getString(1);
     }
    } catch (Exception e) {
       System.err.println(e);
       e.printStackTrace();
    } finally {
       try {
       c.close();
    } catch (Exception e) {
    }
  }
  return data;
  }
}




Hello.java
package comsuresh.ejb.test;
 
import javax.ejb.Remote;
 
@Remote
public interface Hello {
  public String greet();
}




This article was generated from the following discussion:  http://community.jboss.org/thread/106082 EJB 3.0 and env-entry injection
--------------------------------------------------------------

Comment by going to Community
[http://community.jboss.org/docs/DOC-15944]

Create a new document in EJB 3.0 at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2029]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20101008/d8b4992d/attachment-0001.html 


More information about the jboss-user mailing list