Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跨安装在同一WebSphere Application Server上的应用程序共享EJB本地接口?_Java_Ejb_Websphere_Local - Fatal编程技术网

Java 如何跨安装在同一WebSphere Application Server上的应用程序共享EJB本地接口?

Java 如何跨安装在同一WebSphere Application Server上的应用程序共享EJB本地接口?,java,ejb,websphere,local,Java,Ejb,Websphere,Local,我在WebSphereApplicationServer7上遇到问题。我在WASA&B上安装了两个应用程序。B希望使用A的本地EJB接口 包含本地EJB接口的模块是A的EAR的一部分 我尝试在部署B时包含对模块的引用。我发现的问题是,在查找接口时: InitialContext ic = new InitialContext(); //succeeds Object obj = ic.lookup("ejblocal:sample.MyEJBLocal"); //fails with Class

我在WebSphereApplicationServer7上遇到问题。我在WASA&B上安装了两个应用程序。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&通过将服务器的类装入器设置从多个更改为单个,我成功地实现了cast


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

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

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

我按照您的建议创建了一个共享库。我在共享库部分对两个EAR项目部署描述符进行了更改。我还将包含接口的jar的WAS引用放在共享库的classpath字段中。然后,我将其添加到类加载器共享库引用中。但是,当我查找接口时,仍然会得到一个ClassCastException,您是否使用“parent last”类加载?共享库是否与服务器类加载器关联(根据信息中心文档)?ejb.getClass().getClassLoader()和MyEJBLocal.getClassLoader()说什么?也许您忘记从EAR中删除客户端视图类文件了?如果客户端视图类文件位于EAR中,则即使共享库中有这些文件,也会从EAR中加载。@Isacc只有在OP使用“parent last”时才会发生这种情况。否则,它应该从配置的服务器类加载器加载。我按照您的建议创建了一个共享库。我在共享库部分对两个EAR项目部署描述符进行了更改。我还将包含接口的jar的WAS引用放在共享库的classpath字段中。然后,我将其添加到类加载器共享库引用中。但是,当我查找接口时,仍然会得到一个ClassCastException,您是否使用“parent last”类加载?共享库是否与服务器类加载器关联(根据信息中心文档)?ejb.getClass().getClassLoader()和MyEJBLocal.getClassLoader()说什么?也许您忘记从EAR中删除客户端视图类文件了?如果客户端视图类文件位于EAR中,则即使共享库中有这些文件,也会从EAR中加载。@Isacc只有在OP使用“parent last”时才会发生这种情况。否则,应该从配置的服务器类加载器加载它。