我有以下代码,我正在尝试作为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 回答
在从Weblogic 10迁移到Weblogic 12期间,我们遇到了同样的问题 . 我们可以通过在没有正确配置数据源的新服务器上部署EAR来重现该问题;这会在部署期间导致NameNotFoundException . 下一次部署EAR的尝试将导致JDNI名称已经在使用,即使在重新启动,取消部署,重新部署之后也是如此 .
解决问题的唯一方法是删除目标服务器的缓存(最重要的是EJBCompilerCache)和tmp文件夹 .