<ejb-ref-name>ejb/localtest</ejb-ref-name>中的ejb/localtest有问题吧你把“/”去掉或换一个名字

解决方案 »

  1.   

    to scj123456(孤独浪子) :
    我试过了,可是还是不行
    to  upcmill()
    请问有什么办法么
      

  2.   

    JSP调用本地接口,让你调用吗,那不成!~~~
      

  3.   

    本地接口是在同一个ejb容器中互相调用的
    你的ejb怎么能调用呢?
    用远程接口吧
      

  4.   

    本地接口只能是在一个EJB容器内EJB之间可以相互调用的.jsp要调用远程接口
      

  5.   


    说错了
    应该是“你的jsp怎么能调用呢”^_^
      

  6.   

    ("java:comp/env/ejb/localtest");出错,你写个jndi.xml文件试试
      

  7.   

    我将war和jar打包成ear,这样jsp和servlet都可以访问ejb的local接口,
    不过新的问题出现,我利用一个纯java类封装home接口的查找过程,然后在jsp和servlet中调用,出现java.lang.ClassCastException:counttest.CountEjbBean_530t8y_LocalHomeImpl
    我想请问java代码和jsp代码实现的容器不在同一进程,因为只有同一进程才能调用ejb的local接口,谢谢!
    调用代码为:
    封装类的实现过程为:
    EjbHomeFactory factory = EjbHomeFactory.getInstance();
    CountEjbLocalHome home = (CountEjbLocalHome)factory.lookup("CountEjbLocal", CountEjbLocalHome.class);//出错
    CountEjbLocal hello = home.create(33);
     count = hello.getCount();
    package countsession;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: GUANGDONG GEVER TECH CO.,LTD</p>
     * @author dalily
     * @version 1.0
     */import java.util.HashMap;
    import java.util.Properties;
    import javax.ejb.EJBHome;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;public class EjbHomeFactory {
      private static EjbHomeFactory factory =null;
      private HashMap hsHome = null;
      private Context ctx = null;  //初始化
      private EjbHomeFactory() throws  Exception{
        hsHome = new HashMap();
        ctx = getInitialContext();
      }
      private Context getInitialContext() throws Exception {
        String url = "t3://localhost:7001";
        String user = null;
        String password = null;
        Properties properties = null;
        try {
          properties = new Properties();
          properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
          properties.put(Context.PROVIDER_URL, url);
          if (user != null) {
            properties.put(Context.SECURITY_PRINCIPAL, user);
            properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
          }
          return new InitialContext(properties);
        }
        catch(Exception e) {      throw e;
        }
      }  public static synchronized  EjbHomeFactory getInstance() throws Exception {
        if (factory==null){
           factory = new EjbHomeFactory();
        }
        return factory;  }  public EJBHome lookup(String jndiName, Class homeInterfaceClass)
                throws NamingException {          // See if we already have this interface cached
              EJBHome homeInterface = (EJBHome)hsHome.get(homeInterfaceClass);          // If not, look up with the supplied JNDI name
              if (homeInterface == null) {
                  homeInterface = (EJBHome) ctx.lookup(jndiName);              // If this is a new ref, save for caching purposes
                  hsHome.put(homeInterfaceClass, homeInterface);
              }
              return homeInterface;
          }}
      

  8.   

    你把你的jar放一份到服务器的lib目录下看看