首页 文章

使用EJB3的Weblogic 12c中的“JNDI名称已被使用”

提问于
浏览
5

我有以下代码,我正在尝试作为EJB部署到WebLogic 12c,但我收到一个错误:

“部署EJB GeopoliticalServiceBean(应用程序:campaigner-ejb,EJBComponent:campaigner-service.jar)时出错,JNDI名称为java:global / campaigner-ejb / campaigner-service / GeopoliticalServiceBean!com.dr_dee_sw.campaigner.service.GeopoliticalServiceLocal is已经在使用中 . 您必须在weblogic-ejb-jar.xml部署描述符或此EJB的相应注释中设置不同的JNDI名称,然后才能部署它 . “

public interface GeopoliticalService
{
...
}

@Local
public interface GeopoliticalServiceLocal extends GeopoliticalService
{
}

@Remote
public interface GeopoliticalServiceRemote extends GeopoliticalService
{
}

@TransactionManagement(value = TransactionManagementType.CONTAINER)
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
@Stateless
public class GeopoliticalServiceBean implements GeopoliticalServiceLocal,GeopoliticalServiceRemote
{
...
}

更多信息:我已经减少了EJB-JAR文件propagigner-service.jar,因此其中只有一个bean,以及接口和异常 . 如今,EAAR文件Campaigner-ejb.ear在主层只有EJB-JAR . 它还有一个带有支持库的“lib”目录,但它只有DAO和DTO jar以及第三方库 . 所以,对我而言,它似乎不是一个包装问题 .

这是我使用所有注释的第一个应用程序,但它看起来仍然相当简单 . 我错过了什么?

1 回答

  • 2

    在从Weblogic 10迁移到Weblogic 12期间,我们遇到了同样的问题 . 我们可以通过在没有正确配置数据源的新服务器上部署EAR来重现该问题;这会在部署期间导致NameNotFoundException . 下一次部署EAR的尝试将导致JDNI名称已经在使用,即使在重新启动,取消部署,重新部署之后也是如此 .

    解决问题的唯一方法是删除目标服务器的缓存(最重要的是EJBCompilerCache)和tmp文件夹 .

相关问题