java - 使用 client-ejb jar 查找远程 ejb

标签 java ejb weblogic lookup

我将应用程序打包为 .ear 文件,其中包含 ejb 模块。有无状态 session bean 实现远程接口(interface)。像这样的事情:

package my.package.ext.impl;  
[...]
@Stateless(name = "MyPropertiesHandler", mappedName = "ejb/MyPropertiesHandler")
public class PropertiesHandler implements PropertiesHandlerRemote {
    [...]
}

还有这个:

package my.package.ext;  
[...]    
@Remote
public interface PropertiesHandlerRemote {
    [...]
}

里面还生成了client-ejb jar,里面有业务远程接口(interface)和其他一些东西。
此 client-ejb jar 作为 Maven 依赖项附加到其他应用程序。
我尝试从此应用程序查找 PropertiesHandler 服务:

PropertiesHandlerRemote propertiesHandler = InitialContext.doLookup(
    "ejb/MyPropertiesHandler#my.package.ext.PropertiesHandlerRemote");

此时我收到以下错误:

java.lang.NoClassDefFoundError: my/package/ext/PropertiesHandlerRemote
at [...]
at sun.reflect.GeneratedMethodAccessor633.invoke(Unknown Source)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: my.package.ext.PropertiesHandlerRemote
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
Truncated. see log file for complete stacktrace

我在 Weblogic 10.x 上运行它,如上所示。
有什么想法出错了吗?

最佳答案

问题在于 client-ejb jar 打包在 Ear 文件的根目录中,而不是包含其他依赖项的/lib 文件夹中。
解决方案是使用 <classifier>client</classifier>标签而不是 <type>ejb-client</type>在您想要使用 client-ejb jar 文件的项目的 pom 中。
这个问题也在这里讨论:http://jira.codehaus.org/browse/MEAR-85
奇怪,第一次遇到这样的问题,以前<type>ejb-client</type>标签工作完美。

关于java - 使用 client-ejb jar 查找远程 ejb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192918/

相关文章:

java - Hibernate:使用 setFirstResult 和 setMaxResult 进行分页

java - 批量下载器 - Flash、Java、Air?

java - 将源文件编译到不同的目录?

weblogic - 64 位 Weblogic 服务器上的 32 位 JDK

Eclipse WebLogic 插件问题 - 无法启动 WebLogic 服务器

java - 在 Android 中放入 HashMap 时 Binder 事务失败

java - 快速开发基于 GWT-EJB 的应用程序的方法

java - 将用户主体从 REST 传播到 EJB 层

java - EJB junit 测试的最佳模拟对象框架

java - 丢失日志 - log4j.xml 配置似乎被忽略 - Weblogic 9.2