是用了localejb的问题,session可以找到,但是用了local的entity就找不到了

解决方案 »

  1.   

    Local接口不可以暴露给Client端的,例如Web程序,Application程序等。
    另外你的配置文件写对了没有,一般JNDI错误都是配置文件写错了,然后lookup的时候又调用错了所致的。
      

  2.   

    哈哈
    这和我昨天遇到的问题一样,原因是你是用jbuilder生成的client程序调用的
    local接口只能够在ejb中调用,不能暴漏给client端,这点和楼上说的一样。
      

  3.   

    local方式的Bean只能在一个Application内部使用,这个Application可以是一个单独的EJB Application,也可以是一个组合的Application,如*.ear包。
      

  4.   

    我没有用client调用localentity,我的entity都是用sessionentity调用的,sessionentity是remote的,client可以找到,但是session就找不到entitty了。我在程序里面指定上下文
    private Context getInitialContext() throws Exception {
          String url = "t3://127.0.0.1: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;
          }
      }
    其他的lookup都是直接lookup("Tianhe2SybaseDataSource");lookup("TbShow");这样的,对于client找session有效,但是session就找不到entitylocal
    ,TbShowHome是entity
     Context ctx = getInitialContext();
          Object ref = (TbShowHome)ctx.lookup("TbShow");
          tbShowHome=(TbShowHome)ref;
        //这是找entity的远程接口的,有效
         //Object ref = (TbShowHome)ctx.lookup("TbShowRemote");
           //tbShowHome = (TbShowHome) PortableRemoteObject.narrow(ref, TbShowHome.class);
           
           tbShow=tbShowHome.findByPrimaryKey(showpk);
          tbShow.setSStateId(new Short(ssid));
      

  5.   

    你再检查一下你的JNDI吧。app/ejb/TEntity.jar#TbShow/local-home
      

  6.   

    什么意思,系统抛错就是说no resolve   app/ejb/TEntity.jar#TbShow/local-home我不明白是什么意思