首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用反射调用EJB3

使用反射调用EJB3
EN

Stack Overflow用户
提问于 2011-07-28 15:19:28
回答 3查看 2.2K关注 0票数 1

在EJB3中,我们可以使用java反射来调用它的方法吗?如果没有,我们可以通过传递服务名、方法名和合适的参数来使用Spring调用EJB3服务方法吗?

EN

回答 3

Stack Overflow用户

发布于 2012-04-17 20:49:57

这里是一个简单的前缀。(我使用的是OC4J)

代码语言:javascript
复制
/* import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;*/

public static void main(String[] args) throws NamingException, 
                                              ClassNotFoundException, 
                                              NoSuchMethodException, 
                                              IllegalAccessException, 
                                              InvocationTargetException, 
                                              InstantiationException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, 
            "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, "oc4jadmin");
    env.put(Context.SECURITY_CREDENTIALS, "welcome");
    env.put(Context.PROVIDER_URL, "ormi://127.0.0.1:23891");

    InitialContext ctx = new InitialContext(env);

    Object obj = 
        ctx.lookup("mypackagename.MyEJBInterfaceName"); 
    Class clazz = obj.getClass();
    System.out.println("Creating method...");
    Method mthd = clazz.getMethod("methodsName", null); /* without parameters in this case (public void methodsName() {...}) */
    System.out.println("the call...");
    mthd.invoke(obj, null);
    System.out.println("end...");
}
票数 2
EN

Stack Overflow用户

发布于 2011-08-03 18:43:11

可以,我们可以使用反射来调用EJB3方法。使用JNDI获取对该bean的引用,然后使用反射进行调用。

票数 0
EN

Stack Overflow用户

发布于 2017-10-06 23:48:43

这段代码适用于我。我开始使用带有反射的ejb。

代码语言:javascript
复制
public class UTClasesReflects {
public Object retornaInvoc(String clase, String metodo,String contexto){
    Class <?> remoto=null;
    Proxy ed=null;
    Object obj=null;
    Method me=null;
    UTCargaContextos utctx=null;
    try {
        utctx=UTCargaContextos.instancia();
        obj=utctx.retornaContexto("wls_ejb_rs");//this method return jndi context, it's the same that ctx.lookup("jndiname");
        ed=(Proxy) obj;
        remoto=Class.forName(clase);
        me=remoto.getMethod(metodo);
        byte[] val=(byte[]) me.invoke(ed);
        for (int i = 0; i < val.length; i++) {
            System.out.println((char)val[i]);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return obj;
}
public static void main(String[] args) {
    UTClasesReflects a = new UTClasesReflects();
    a.retornaInvoc("org.ve.bcv.extra.cta.producers.ConsumerRespuestaRemote","buscaRespuesta","wls_ejb_rs");

}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6855333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档