Java 是否可以在域1/lib中使用GlassFish实现EJB?

Java 是否可以在域1/lib中使用GlassFish实现EJB?,java,jakarta-ee,glassfish,ejb,Java,Jakarta Ee,Glassfish,Ejb,我使用GlassFish4WebProfile,我有以下接口和类 @Local public interface SomeService { ... } @Singleton public class SomeServiceBean implements SomeService { ... } 当我将接口和类放入.war归档文件(即在domain1/autodeplay中)时,一切正常。然而,当我将接口和类放在单独的.jar归档文件(即在domain1/lib中)中,然后部署war应用程序时

我使用GlassFish4WebProfile,我有以下接口和类

@Local
public interface SomeService {
...
}

@Singleton
public class SomeServiceBean implements SomeService {
...
}
当我将接口和类放入.war归档文件(即在domain1/autodeplay中)时,一切正常。然而,当我将接口和类放在单独的.jar归档文件(即在domain1/lib中)中,然后部署war应用程序时,我得到:

java.lang.RuntimeException: Cannot resolve reference Local ejb-ref name=com.temp.MyServlet/someService,Local 3.x interface =com.temp.SomeService,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session
    at com.sun.enterprise.deployment.util.ComponentValidator.accept(ComponentValidator.java:374) ~[dol.jar:na]
    at com.sun.enterprise.deployment.util.DefaultDOLVisitor.accept(DefaultDOLVisitor.java:78) ~[dol.jar:na]
    at com.sun.enterprise.deployment.util.ComponentValidator.accept(ComponentValidator.java:123) ~[dol.jar:na]
    at com.sun.enterprise.deployment.util.ApplicationValidator.accept(ApplicationValidator.java:152) ~[dol.jar:n
    ...

我不使用任何xml描述符。那么,有可能在domain1/lib中有EJB吗?如果有,如何让EJB容器找到它们?另外,我在GF 4 full中尝试过-结果是一样的。

EJB不能作为库添加到GlassFish中,库只是添加到类路径中,并且忽略它们上的任何注释,它们不经过EJB容器。如果您确实希望您的EJB作为一个单独的JAR,那么可以像WAR或EAR文件一样部署它们


对于
addlibrary
命令,它表示“将库添加到类加载器目录”,而对于
deploy
命令,它表示“应用程序可以是……EJB模块”


另外,通过查看for Glassfish,可以发现所有库都只是在启动时添加到类加载器中(请参阅和),或者如果在applibs中,则在部署应用程序时添加到类加载器中(请参阅)。

如果您将EJB打包到一个单独的JAR文件中,则仍应正常部署它们,不要把它们当作图书馆,因为它们不是图书馆。谢谢你的回答。如果您添加了对GlassFish或EJB规范的任何引用,我将接受它。@Pavel_K我已经添加了一些对GlassFish手册和源代码的引用