Java/EJB3/Context

Материал из Java эксперт
Перейти к: навигация, поиск

Context Injection

   <source lang="java">

File: AnotherBean.java import javax.ejb.Stateless; @Stateless public class AnotherBean implements AnotherBeanLocal {

 public void doAnother(){
   System.out.println("from another bean");
 }

}

File: AnotherBeanLocal.java

public interface AnotherBeanLocal {

 public void doAnother();

}

File: Employee.java

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.PostRemove;

@Entity public class Employee implements java.io.Serializable {

 private int id;
 private String firstName;
 private String lastName;
 @Id
 @GeneratedValue
 public int getId() {
   return id;
 }
 @PostRemove
 public void postRemove()
 {
    System.out.println("@PostRemove");
 }
 public void setId(int id) {
   this.id = id;
 }
 public String getFirstName() {
   return firstName;
 }
 public void setFirstName(String first) {
   this.firstName = first;
 }
 public String getLastName() {
   return lastName;
 }
 public void setLastName(String last) {
   this.lastName = last;
 }

}

File: EmployeeBean.java import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.SessionContext; import javax.ejb.Stateless; @Stateless @EJB(name = "audit", beanInterface = AnotherBeanLocal.class) public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 @Resource SessionContext context;
 public EmployeeBean() {
 }
 public void doAction() {
   System.out.println("doAction");
   AnotherBeanLocal a = (AnotherBeanLocal) context.lookup("audit");;
   a.doAnother();
 }

}

File: EmployeeServiceLocal.java import java.util.Map; import javax.ejb.Local;

@Local public interface EmployeeServiceLocal {

 public void doAction();

}

File: EmployeeServiceRemote.java

import javax.ejb.Remote; @Remote public interface EmployeeServiceRemote {

 public void doAction();

}

File: jndi.properties java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099

File: Main.java import javax.ejb.EJB; import javax.naming.InitialContext; public class Main {

 public static void main(String[] a) throws Exception {
   EmployeeServiceRemote service = null;
   // Context compEnv = (Context) new InitialContext().lookup("java:comp/env");
   // service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
   service = (EmployeeServiceRemote) new InitialContext().lookup("EmployeeBean/remote");
   service.doAction();
 }

}


      </source>
   
  
 
  



Explicityly Set Context with JNDI

   <source lang="java">

File: HelloServiceBean.java

import javax.ejb.Stateless; @Stateless public class HelloServiceBean implements HelloServiceLocal, HelloServiceRemote {

   public String sayHello(String name) {
       return "Hello1, "  + name;
   }

}


File: HelloServiceLocal.java

import javax.ejb.Local; @Local public interface HelloServiceLocal {

   public String sayHello(String name);

}

File: HelloServiceRemote.java


import javax.ejb.Remote; @Remote public interface HelloServiceRemote{

   public String sayHello(String name);

}

File: jndi.properties java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099

File: Main.java import java.util.*; import javax.naming.*;

public class Main{

  public static void main(String[] a) throws Exception{
   /* get a initial context. By default the settings in the file
    * jndi.properties are used.
    * You can explicitly set up properties instead of using the file.
    * 
   
   Properties properties = new Properties();
   properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
   properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
   properties.put("java.naming.provider.url","localhost:1099");
    */   
       String name = "jexp";
       HelloServiceRemote service = null;
       
       //Context compEnv = (Context) new InitialContext().lookup("java:comp/env");
       
       //service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
       service = (HelloServiceRemote)new InitialContext().lookup("HelloServiceBean/remote");
       System.out.println(service.sayHello(name));

  }

}


      </source>
   
  
 
  



Initialize javax.naming.InitialContext with System.getProperties

   <source lang="java">

public class InitContext {

 public static void main(String args[]) throws Exception {
   javax.naming.Context ctx = new javax.naming.InitialContext(System.getProperties());
   System.err.println("Success!");
 }

}

</source>
   
  
 
  



Use Context To Lookup Another Ejb

   <source lang="java">

File: AnotherBean.java import javax.ejb.Stateless; @Stateless public class AnotherBean implements AnotherBeanLocal {

 public void doAnother(){
   System.out.println("from another bean");
 }

}

File: AnotherBeanLocal.java

public interface AnotherBeanLocal {

 public void doAnother();

}

File: Employee.java

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.PostRemove;

@Entity public class Employee implements java.io.Serializable {

 private int id;
 private String firstName;
 private String lastName;
 @Id
 @GeneratedValue
 public int getId() {
   return id;
 }
 @PostRemove
 public void postRemove()
 {
    System.out.println("@PostRemove");
 }
 public void setId(int id) {
   this.id = id;
 }
 public String getFirstName() {
   return firstName;
 }
 public void setFirstName(String first) {
   this.firstName = first;
 }
 public String getLastName() {
   return lastName;
 }
 public void setLastName(String last) {
   this.lastName = last;
 }

}

File: EmployeeBean.java import javax.ejb.EJB; import javax.ejb.EJBException; import javax.ejb.Stateless; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; @Stateless @EJB(name = "audit", beanInterface = AnotherBeanLocal.class) public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 public EmployeeBean() {
 }
 public void doAction() {
   System.out.println("doAction");
   try {
     Context ctx = new InitialContext();
     AnotherBeanLocal a = (AnotherBeanLocal) ctx.lookup("java:comp/env/audit");
     a.doAnother();
   } catch (NamingException e) {
     throw new EJBException(e);
   }
 }

}

File: EmployeeServiceLocal.java import java.util.Map; import javax.ejb.Local;

@Local public interface EmployeeServiceLocal {

 public void doAction();

}

File: EmployeeServiceRemote.java

import javax.ejb.Remote; @Remote public interface EmployeeServiceRemote {

 public void doAction();

}

File: jndi.properties java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099

File: Main.java import javax.ejb.EJB; import javax.naming.InitialContext; public class Main {

 public static void main(String[] a) throws Exception {
   EmployeeServiceRemote service = null;
   // Context compEnv = (Context) new InitialContext().lookup("java:comp/env");
   // service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
   service = (EmployeeServiceRemote) new InitialContext().lookup("EmployeeBean/remote");
   service.doAction();
 }

}


      </source>