1 ctx = new InitialContext()的调用需要你定义一个jndi.properties文件放置在classpath可以找到的位置,这样就和你在bean中直接定义properties的效果一样了。不过设置jndi.properties更好一点,因为不需要将获得jndi context硬编码到程序里
2 3 实际是ref的问题 比如你在一个session bean中定义了对某个entity bean或者资源(连接池)的引用,那么你在lookup的时候就该用java:comp/env/refName,如果你只是设置了jndi名字
那么就该类似这样lookup("test")

解决方案 »

  1.   

    楼上的,对第一个问题,有特殊情况吗,如果我的程序是服务器端的,我是不是不用jndi.properties ,通过Context ctx = new InitialContext()就能得到Context 
    再问一个问题,我在身模时候调用远程接口,再什模时候调用本地接口
    是不是在客户端和被调用bean在同一个线程中时候才能用本地接口
      

  2.   

    对于第一个问题,应该说,如果你的执行
    Context ctx = new InitialContext()
    的程序和服务器是在同一个jvm,应该是可以这么做的。
    当然,你最好还是要设置一下,这样可提高系统的兼容性。
    如果不是,还是需要
    Context ctx=new InitialContext(properties);
    客户机情况
    对于第三个,这个具体的ejb容器有关。
    建议一般是生成一个jndi的文件,根据不同的服务器调用不同的文件
      

  3.   

    一般情况下entity bean使用local接口,这样相对remote接口性能可以得到很大的提高,而session bean使用remote接口,客户端掉用session bean,session bean调用entity bean