代码之家  ›  专栏  ›  技术社区  ›  Gary Kephart

WebLogic 12c JNDI树中没有显示EJB 3.1会话bean

  •  0
  • Gary Kephart  · 技术社区  · 6 年前

    下面是我为我的webapp创建的EJB示例。在我的WebLogic 12c服务器中,ejb显示在java:global中,但不显示在JNDI树的任何其他部分中。我想正因为如此,我在查找那些ejb时遇到了困难。

    问题1:我在课堂上的注释是否足够和正确? 问题2:我应该能够在java:app和java:module或其他任何地方看到我的ejb吗?

    @TransactionManagement(value = TransactionManagementType.CONTAINER)
    @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
    @Transactional
    @Stateless
    @Interceptors(SpringBeanAutowiringInterceptor.class)
    @Service("adminService")
    public class AdminServiceImpl extends AbstractServiceImpl
        implements LocalAdminService, AdminServiceRemote
    {
    ...
    }
    

    这是我的jndi.properties

    java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
    java.naming.provider.url=t3://localhost:7001
    java.naming.security.principal=weblogic
    java.naming.security.credentials=xyz
    weblogic.rmi.clientTimeout=120000
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Mehran Mastcheshmi    6 年前

    我在类上的注释是否足够和正确

    你用的注解太多了。当您使用无状态注释bean时,默认事务将是CONTAINER,并且需要默认TransactionAttribute,因此您不需要这两个注释。另外,还可以用@service注释bean。但不能将bean定义为Spring管理的bean和EJB3会话。 https://docs.spring.io/spring/docs/4.3.20.RELEASE/javadoc-api/org/springframework/ejb/interceptor/SpringBeanAutowiringInterceptor.html 说:

    警告:不要定义与Spring管理的bean和 同一部署单元中的EJB3会话bean。尤其是 组合使用功能时请小心 通过部署基于Spring的EJB3会话bean:确保 EJB3会话bean不是作为Spring管理的bean自动检测的 好吧,使用适当的包限制。

    您也不需要事务性注释。

    我是否应该能够看到我的ejb在java:app和java:module中列出,或者 还有别的地方吗?

    在WebLogic的JNDI树中可以看到java:global。但是可以使用其他名称空间进行查找。这取决于查找的bean的位置(应用程序和模块)和正在查找的bean的位置。如果你有任何问题,请检查你的豆子的位置。你可以看看 javax.naming.NameNotFoundException: While trying to lookup 'abc' didn't find subcontext 'abc' 更多信息。