簡體   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