繁体   English   中英

我可以通过JNDI查找EJB并使用反射调用方法吗?

[英]Can I look up an EJB via JNDI and invoke methods using reflection?

我正在使用EJB 3.1。 我需要获得对servlet中EJB之一的引用,而我不希望在类路径上放置EJB接口jar来编译代码。

是否可以通过JNDI查找EJB并使用反射来查找我要调用的方法,而无需将对象强烈地键入接口?

是的,如果您要查找本地EJB接口,则可以使用反射在同一应用程序中查找并调用本地EJB。

如果您使用直接查找或EJB引用查找,则此方法应该起作用,因为Java EE规范要求应用程序服务器使EJB模块类可用于同一应用程序中的WAR。 EJB规范不需要支持跨应用程序的本地接口,因此,如果您正在这样做,则必须与应用程序服务器供应商联系。

通常,这对于远程EJB接口不起作用,因为需要创建客户端代理。 如果您正在使用RMI-IIOP(EJB 2.x远程或EJB 3扩展java.rmi.Remote),则可以将EJB查找结果转换为javax.rmi.CORBA.Stub并使用_servant_preinvoke或_invoke方法与生成的存根方法相同。

(最终,为了避免编译时依赖性,这是很多警告。它可能不值得脆弱,因此,我建议找到一种方法来解决该问题并正常进行编译。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM