1

我在使用 WebSphere Application Server 7 时遇到问题。我在 WAS A 和 B 上安装了 2 个应用程序。B 想要使用 A 的本地 EJB 接口。

包含本地 EJB 接口的模块是 A 的 EAR 的一部分。

我尝试做的是在我的 B 部署中包含对模块的引用。我发现的问题是,在查找界面时:

InitialContext ic = new InitialContext();
//succeeds
Object obj = ic.lookup("ejblocal:sample.MyEJBLocal");
//fails with ClassCastException
MyEJBLocal localBean = (MyEJBLocal) obj;

程序崩溃是因为接口的类名前面有随机字母,例如

Cannot cast type SL07SMyEJBLocal to MyEJBLocal these types are incompatible.

我尝试使用 WAS 并且通过将服务器的类加载器设置从多个更改为单个,我能够使演员成功。

问 - 我真的不喜欢为我的服务器上的所有应用程序使用一个类加载器的想法 - 是否有另一种方法可以让 EJB 本地接口在应用程序 A 和 B 之间共享?

4

1 回答 1

1

请参阅 InfoCenter 的EJB 模块模块的“本地客户端视图”部分(我已链接到 8.5 InfoCenter,但建议适用于所有版本)。基本上,为了共享一个本地接口,您必须确保两个应用程序具有相同类的视图。最常见的方法是使用与服务器相关的共享库。请仔细注意跨应用程序共享本地 EJB 的其他注意事项。

于 2012-08-08T21:39:47.230 回答