0 Replies Latest reply on Mar 20, 2002 11:43 AM by Shailesh Dangi

    Custom finder Methods and BMP

    Shailesh Dangi Newbie

      --JBoss 3.0 + Tomcat 4.0 on NT--

      I ran into a problem for an entity bean with BMP.
      The findByPrimaryKey works fine. But with custom finder methods the bean implementation is not even called.

      Here are sample snippets of the code:

      public interface FwkTabHome extends EJBHome {
      public FwkTab create(Integer pkId, Integer orgId) throws RemoteException, CreateException;
      //This works fine
      public FwkTab findByPrimaryKey(FwkTabPK primaryKey) throws FinderException, RemoteException;
      //This doesn't
      public Collection findByAllAncestors(FwkTabPK primaryKey) throws FinderException, RemoteException;
      }


      Section of FwkBean
      .
      .
      public Collection ejbFindByAllAncestors(FwkTabPK primaryKey) throws FinderException, RemoteException{
      PreparedStatement ps = null;
      ResultSet rs = null;
      Connection conn = null;
      Vector v = new Vector();
      try{
      conn = this.getConnection();
      //This statement is not even printed in the log
      System.out.println("Connection in ejbFindAllAncestors :" + conn.getMetaData().getDriverName());
      if (conn != null)
      ps = conn.prepareStatement(" select ftb_tab_id from fwk_tabs "+
      " start with ftb_tab_id = ? "+
      " and org_id = ? " +
      " connect by prior ftb_parent_id = ftb_tab_id " +
      " and org_id = ? " +
      " order by ftb_level asc");
      if (ps != null){
      ps.setInt(1,primaryKey.getFtbTabId().intValue());
      ps.setInt(2,primaryKey.getOrgId().intValue());
      rs = ps.executeQuery();
      }
      if (rs == null)
      throw new EJBException("Error extracting resultset in ejbFindAllAncestors");

      while(rs.next()){
      FwkTabPK pk = new FwkTabPK((Integer)rs.getObject("ftb_tab_id"), primaryKey.getOrgId());
      System.out.println("Object added: " + pk.toString());
      v.addElement(pk);
      }
      }catch(java.sql.SQLException sqlEx){
      throw new EJBException("Error in finder method", sqlEx);
      }finally{
      try{
      if (rs != null)
      rs.close();
      if (ps != null)
      ps.close();
      if (conn != null)
      conn.close();
      }catch(Exception e){
      e.printStackTrace();
      }
      }
      return v;
      }
      .
      .
      .
      Do I have to add this custom finder method in some property file for JBoss to pick up?
      Moreover, while deploying, the deployment tool (autodeployer??) DOESNOT complain if find method in home interface throws different exceptions from the ejbFind method in the entity bean class. Shouldn't that be checked at the time of deployment also?

      Thanks