要利用反射,你至少也要有一个对象实例吧,只有jndi名称,如何进行反射?不懂。
另外“想通过反射的方法去调用他们的同一固定方法“石说,这几个sessionBean有相同的方法吗?

解决方案 »

  1.   

    我就是想通过jndi名称取得其对应的class啊,其实也可以不需要具体的class,
    只要它的path就行了,如org.eb.XXXBean,然后就可以进行反射了。
    我说的“想通过反射的方法去调用他们的同一固定方法“只是举例子吧了,其实我想做的复杂的多,已经实现通过预先输入path完成功能,但是这样就对软件包的使用带来了不方便之处。
    望有解决办法的同志们多多提示!谢谢了
      

  2.   

    >> 只要它的path就行了,如org.eb.XXXBean,然后就可以进行反射了。
    只能反射静态方法,没有实例怎么反射实例的方法?还有jndi得到的很可能是远程对象,远程对象能不能用反射?总之反射不要滥用,尤其是jdni本来是为了实现位置透明,不可能用到反射
      

  3.   

    >>只能反射静态方法,没有实例怎么反射实例的方法?
    问题是我需要由路径得到实例,然后进行反射,其实我的目的是用jndi得到类路径从而得到Class,然后再通过Class和jndi得到实例。因为在服务器的部署文件中每个jndi名都对应一个类路径。我只是想知道怎样通过jndi名取得这些路径?>>还有jndi得到的很可能是远程对象,远程对象能不能用反射?
    我是在服务器端使用的,就是说不会涉及远程对象。是不是jndi不能得到路径?
      

  4.   

    为什么不通过servlet来进行反射呢?可以将需要调用的类以及方法写在页面的hidden元素里面,然后submit,通过servlet的dopost或者doget得到类名和方法名,然后通过诸如以下代码
    myclass = Class.forName(className);
    Method mymethod = myclass.getMethod(method);
    Object args[] = {req, res, reh};
    mymethod.invoke(null, args);
    来调用
      

  5.   

    To  Jacky1206(胖胖):现在的问题是我想缩减输入的参数量,因为我现在实际上是每次都要同时输入类名(包括包路径)和jndi,才能建立反射。如你上面所说的方式,没有了jndi也不能进行反射阿。
      

  6.   

    反射难道一定需要jndi么?我给出的方法确实是不需要jndi的,我不是很清楚楼主非要把jndi放入反射参数的原因,就我使用而言,jndi似乎只是用来获取数据库连接而已呵呵,当然可能楼主有别的用途,即使如此,那么jndi同样可以写一个hidden放在页面上,在submit时到servlet里面获取
      

  7.   

    TO: Jacky1206(胖胖) 但是我要调用的是SessionBean和EntityBean不用jndi可以吗?
      

  8.   

    做一个代理类帮你完成这个步骤吧, 你大概不想在业务代码中嵌入jndi的路径吧
      

  9.   

    可以将你需要的内容补充在部署文件里面,然后在serlvet的init方法里面执行读取操作,init方法只在第一次执行servlet时被执行,读取的内容可以放在application或者干脆插入到一张表中,需要的时候去取,不知道这样楼主觉得是否可行呵呵