sqlEJB 没有实现 Home 这个Interface定义的create方法你的sqlEJB是从哪个类继承的?

解决方案 »

  1.   

    你的可能有create()方法。
    但肯定没有create(String )方法。
    要不就是没有相关xdoclet的描述,指明他是ejb create的方法。
    你可以自己看看那个Home接口。里面是否有此方法。没有加之。
      

  2.   

    本地接口SqlHome如下:
    import java.io.Serializable;
    import java.rmi.RemoteException;
    import javax.ejb.*;public interface SqlHome extends EJBHome 
    {
       SqlRemote create(String sql) throws RemoteException, CreateException;
    }远程接口SqlRemote如下:import java.util.*;
    import javax.ejb.EJBObject;
    import java.rmi.RemoteException;public interface SqlRemote extends EJBObject 
    {
        public String execu() throws RemoteException;
    }实体Bean如下:
    import java.sql.*;
    import javax.sql.*;
    import java.util.*;
    import javax.ejb.*;
    import javax.naming.*;public class SqlEJB implements EntityBean 
    {
        private String sql;
        private EntityContext context; 
        private Connection con;
        private String dbName = "DataSourceJNDI";    public String getSql() 
        {
            return sql;
        }
      
       public void setEntityContext(EntityContext context) 
       {
           this.context = context;
           try 
           {
               System.out.println("Inside setEntityContext");
               //makeConnection();
               //在日志里简单打印一句
           } 
           catch (Exception ex) 
           {
             throw new EJBException("Unable to connect to database. " + ex.getMessage());
           }
       }
      
       /* private void makeConnection() throws NamingException,  SQLException 
       {
           InitialContext ic = new InitialContext();
           DataSource ds = (DataSource) ic.lookup(dbName);
           con =  ds.getConnection();
       }*/
       
            
       public String ejbCreate(String sql) throws CreateException 
       {
           this.sql = sql;
           return sql;
       }   public String execu() throws SQLException 
       {
            String str;
            /*try
            {
               PreparedStatement prepStmt = con.prepareStatement(sql);
                    prepStmt.executeUpdate();
                    prepStmt.close();
                    return "execu succeed!";
            }
            catch(Exception e)
            {
            e.printStackTrace();
            return "Execute falied!";
            }*/
            str="pass the sqlEJB"+sql;
            return str;
       }
       //---------------------   public void ejbRemove() 
       {
       }    public void unsetEntityContext() 
       {
           try 
           {
               con.close();
           } 
           catch (SQLException ex) 
           {
               throw new EJBException("unsetEntityContext: " + ex.getMessage());
           }
       }   public void ejbActivate() 
       {
       }
       
       public void ejbPassivate() 
       {
       }   public void ejbLoad() 
       {
       }
       
       public void ejbStore() 
       {
       }   public void ejbPostCreate(String id, String un, String pass, String addr)
       { 
       }} 上面是整个实体Bean的代码,home里面定义了create().
    在这个Bean里只是想当Session Bean找到Entity Bean的时候简单返回一字符串
    我是刚学EJB的,希望大家指点一下.