0 Replies Latest reply on Dec 24, 2006 2:45 AM by Priya Vijayan

    problem with jboss-EJB-3.0_RC9-FD and jboss-4.0.4.GA

    Priya Vijayan Newbie

      Hi,

      I am having a problem with EJB 3.0 . I am using
      EJB-3.0_RC9-FD
      jboss-4.0.4.GA
      jdk 1.5
      ant 1.6.5
      I am using the hypersonic database of jboss and I want to create two tables in the database Department and Emplyee.


      The code for client.java

      package com.abcd.EJB3.application;

      import com.infosys.EJB3.application.FacadeRemote;
      import javax.naming.InitialContext;
      import java.sql.Timestamp;

      public class client
      {
      public static void main(String[] args)
      {
      try
      {
      InitialContext ctx = new InitialContext();
      FacadeRemote lFacadeRemote = (FacadeRemote) ctx.lookup(FacadeRemote.class.getName());

      lFacadeRemote.createDepartment("Finance");
      lFacadeRemote.createDepartment("Administration");
      lFacadeRemote.createDepartment("Sales");

      lFacadeRemote.assignEmployeeToDepartment(new Long(1),"Brijesh",31,"M");
      lFacadeRemote.assignEmployeeToDepartment(new Long(1),"xxxx",31,"M");
      lFacadeRemote.assignEmployeeToDepartment(new Long(2),"yyyy",31,"M");

      }
      catch(Exception ex)
      {
      System.out.println(ex);
      }
      }
      }



      The code for department.java

      package com.abcd.EJB3.application;

      import java.util.ArrayList;
      import java.util.Collection;

      import javax.persistence.CascadeType;
      import javax.persistence.Column;
      import javax.persistence.Entity;
      import javax.persistence.FetchType;
      import javax.persistence.GeneratedValue;
      import javax.persistence.GenerationType;
      import javax.persistence.Id;
      import javax.persistence.OneToMany;
      import javax.persistence.Table;

      @Entity
      @Table(name = "DEPARTMENT")
      public class Department implements java.io.Serializable
      {
      private Long id;
      private String lsName;
      private Collection lEmployees;

      //@Id(generate = GeneratorType.AUTO)
      @Id @GeneratedValue(strategy=GenerationType.AUTO)

      public Long getId()
      {
      return id;
      }

      public void setId(Long id)
      {
      this.id = id;
      }

      @Column(name = "NAME")
      public String getName()
      {
      return lsName;
      }

      public void setName(String asName)
      {
      this.lsName = asName;
      }

      @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="department")
      public Collection getEmployees()
      {
      return lEmployees;
      }

      public void setEmployees(Collection aEmployees)
      {
      this.lEmployees = aEmployees;
      }

      public void addEmployee(String asName,int aiAge, String asSex)
      {
      if(lEmployees== null)
      lEmployees = new ArrayList();

      Employee lEmployee = new Employee();
      lEmployee.setName(asName);
      lEmployee.setAge(aiAge);
      lEmployee.setSex(asSex);
      lEmployee.setDepartment(this);
      lEmployees.add(lEmployee);

      setEmployees(lEmployees);
      }
      }


      the code for Employee.java

      package com.abcd.EJB3.application;

      import javax.persistence.Entity;
      import javax.persistence.GeneratedValue;
      import javax.persistence.GenerationType;
      import javax.persistence.Id;
      import javax.persistence.JoinColumn;
      import javax.persistence.ManyToOne;
      import javax.persistence.Column;
      import javax.persistence.Table;
      import javax.persistence.FetchType;
      import javax.persistence.ManyToMany;
      import javax.persistence.CascadeType;
      import javax.persistence.PostPersist;


      import java.util.Set;

      //@Entity
      public class Employee implements java.io.Serializable
      {
      private Long id;
      private String lsName;
      private int liAge;
      private String lsSex;
      private Department department;

      public Employee()
      {
      }

      //@Id(generate = GeneratorType.IDENTITY)
      // @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
      public Long getId()
      {
      return id;
      }

      public void setId(Long id)
      {
      this.id = id;
      }

      // @Column(name = "NAME")
      public String getName()
      {
      return lsName;
      }

      public void setName(String asName)
      {
      this.lsName = asName;
      }

      // @Column(name = "AGE")
      public int getAge()
      {
      return liAge;
      }

      public void setAge(int liAge)
      {
      this.liAge = liAge;
      }

      // @Column(name = "SEX")
      public String getSex()
      {
      return lsSex;
      }

      public void setSex(String lsSex)
      {
      this.lsSex = lsSex;
      }

      // @ManyToOne
      // @JoinColumn(name="DEPARTMENT_ID")
      public Department getDepartment()
      {
      return department;
      }

      public void setDepartment(Department aDepartment)
      {
      this.department = aDepartment;
      }

      // @PostPersist
      public void samplePostPersist()
      {
      System.out.println("Added Employee having name = "+ this.getName() +" and Age = "+ this.getAge());
      }
      }


      code for FacadeBean

      package com.abcd.EJB3.application;

      import javax.ejb.Stateless;
      import javax.ejb.Remote;
      import javax.persistence.EntityManager;
      import javax.persistence.PersistenceContext;

      import com.infosys.EJB3.application.Department;
      import com.infosys.EJB3.application.Employee;

      import java.util.Set;

      @Stateless
      public class FacadeBean implements FacadeRemote
      {
      @PersistenceContext
      private EntityManager manager;

      public void createDepartment(String deptName)
      {
      Department department = new Department();

      department.setName(deptName);

      manager.persist(department);

      }

      public void assignEmployeeToDepartment(Long id, String name, int age, String sex)
      {
      Department department = searchDepartment(id);

      department.addEmployee(name, age, sex);

      manager.persist(department);
      }

      public Department searchDepartment(Long id)
      {
      return manager.find(Department.class,id);
      }

      }


      code for FacadeRemote


      package com.abcd.EJB3.application;

      import javax.ejb.Remote;

      @Remote
      public interface FacadeRemote
      {
      public void createDepartment(String deptName);
      public Department searchDepartment(Long id);
      public void assignEmployeeToDepartment(Long id, String name, int age, String sex);
      }



      now I have compiled the code and deployed it. But when I try to run the code I get the following error:


      NameNotFoundException ----- FacadeRemote not bound.


      I think its something related to JNDI binding.. but here since I am using EJB 3.0, i dont have to use ejb-jar.xml, but then how does this happens?? what should I do... Please help....