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



我正在使用EJB 3.1。我需要在servlet中获取对一个EJB的引用,我宁愿在类路径上放置EJB接口jar以获取编译代码。

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

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

如果您使用直接查找或EJB Ref查找,这应该有效,因为Java EE规格要求应用程序服务器使EJB模块类在同一应用程序中可用于战争。EJB规格不需要在应用程序跨应用程序的本地接口方面支持,因此,如果您正在做的事情,则必须与应用程序服务器供应商联系。

这对远程EJB接口通常不起作用,因为需要创建客户端代理。如果您使用的是rmi-iiiop(ejb 2.x远程或ejb 3扩展java.rmi.remote),则可以将EJB查找结果施加到javax.rmi.corba.corba.stub并使用_servant_preinvoke或_invoke methods与生成的存根方法相同。

(最终,这是很多警告只是为了避免汇编时间依赖。这可能不值得脆弱,因此我建议找到一种解决方法并正常编译的方法。)