首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java / ejb3运行时调度

java / ejb3运行时调度
EN

Stack Overflow用户
提问于 2008-11-09 03:00:21
回答 4查看 970关注 0票数 1

我想在运行时调用一个ejb3。ejb的名称和方法名称只能在运行时使用,因此我不能在编译时包含任何远程接口。

代码语言:javascript
复制
String bean = 'some/Bean';
String meth = 'doStuff';

//lookup the bean
Object remoteInterface = (Object) new InitialContext().lookup(bean);

//search the method ..
// foreach (methods)
// if method == meth, method.invoke(bean);

beans应该分布在多个应用服务器上,所有bean都要远程调用。

有什么暗示吗?具体来说,我是做而不是想要的:

应用特定ejb接口的injection

  • inclusion (above)

  • webservices,中的
  1. 依赖项,这就像是免费丢弃处理能力,所有xml垃圾

是否可以通过网络加载ejb3远程接口(如果是的话,如何加载?),这样我就可以将接口缓存在一些hashmap或其他东西中。

我有一个带有远程dispatcher bean的解决方案,我可以将其包含在上面的主调度程序中,这基本上是相同的,但是只是将调用中继到本地ejb (我可以如何查找这个调用)。命名查找失败)。给定远程调度程序bean,我可以使用依赖项注入。

谢谢你的帮助

(netbeans和玻璃鱼)

EN

回答 4

Stack Overflow用户

发布于 2008-11-09 05:58:25

ejb3调用使用RMI。RMI支持远程类加载,所以我建议研究一下。

此外,JMX mbean支持完全非类型化的远程调用。因此,如果您可以使用mbean而不是会话bean,则可以工作。(例如,JBoss支持类似ejb3 3的mbean,并带有一些自定义注释)。

最后,许多应用服务器支持CORBA调用,CORBA支持非类型化方法调用。

票数 1
EN

Stack Overflow用户

发布于 2008-11-11 16:11:20

您可能可以使用java.rmi.server.RMIClassLoader进行远程类加载。您还需要加载远程服务返回或抛出的任何类。

票数 0
EN

Stack Overflow用户

发布于 2009-01-16 12:04:12

这是做不到的。您将始终得到“未找到的类”异常。在我看来,这是EJB/Java的最大缺点。因为元语言特性是有限的,所以你失去了一些动态功能。

EJB3支持RMI/IIOP,但不支持RMI/JRMP (标准RMI),因此动态类加载并不是supported.You松散了某些Java通用性,而是获得了其他特性,比如能够与事务和安全进行通信。

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

https://stackoverflow.com/questions/275540

复制
相关文章

相似问题

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