繁体   English   中英

使用client-ejb jar查找远程ejb

[英]Look-up of remote ejb using client-ejb jar

我将应用程序打包为.ear文件,其中包含ejb模块。 有无状态会话bean实现远程接口。 像这样的东西:

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生成,里面有业务远程接口和其他一些东西。
此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文件夹中。
解决方案是在要使用client-ejb jar文件的项目的pom中使用<classifier>client</classifier>标记而不是<type>ejb-client</type>
这里还讨论了这个问题: http//jira.codehaus.org/browse/MEAR-85
奇怪,这是我第一次遇到这样的问题,之前的<type>ejb-client</type>标签工作得很完美。

由于你有一个NoClassDefFoundError ,它并不意味着找不到你的PropertiesHandlerRemote类,而是你的实现使用的东西 - 所以你可能还有其他依赖项不在客户端的类路径中?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM