Weblogic没有[javax.persistence.EntityManager]类型的唯一bean

问题描述 投票:1回答:1

我是EJB3的新手并且正在处理现有代码。

我们正在使用weblogic 10.3,以下代码工作正常

@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database")

public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb
private Database<Object> databaseBean;

在10.3中,weblogic.jar包含weblogic.ejbgen.EjbRef

我们现在切换到weblogic10.3.1和weblogic.jar不再附带weblogic.ejbgen包。

所以,我将代码更改为此(尚未在10.3.1中测试)

@Stateless(mappedName="ProcessIssacIncomingMessage")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@EjbRef(name="Database" jnod-name="Database")  --- removed this line


public class IncomingMessageBean implements IncomingMessageRemote, IncomingMessageLocal {
...
@Ejb(mappedName="Database") -- added the mapped name here.
private Database<Object> databaseBean;

为了向后兼容。在wl10.3中运行代码后,我收到错误

错误是--javax.ejb.EJBTransactionRolledbackException:EJB异常:: com.bea.core.repackaged.springframework.beans.factory.BeanCreationException:依赖注入失败:无法找到关于类接口javax.persistence.EntityManager的bean定义;嵌套异常是com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[javax.persistence.EntityManager]类型的唯一bean:没有类型为javax.persistence.EntityManager的bean; owner = com.bea.core.repackaged.springframework.context.support.GenericApplicationContext:显示名称

任何人都可以帮助,我应该如何重构代码。或者这里缺少什么?这样我的代码在不使用@EjbRef的情况下与10.3和10.3.1兼容

java ejb-3.0 weblogic-10.x weblogic11g
1个回答
0
投票

我认为源代码不适用于10.3但是早期版本的weblogic,其中EjbRef是由weblogic.jar中的weblogic提供的。但是因为看起来在某些版本之后可能是10.3.x以后weblogic.ejbgen.EjbRef被重构为除weblogic.jar之外的其他jar

我对server / lib文件夹中的所有jar进行了爆炸,发现wls-api.jar中提供了相同的包

我的问题现在解决了。在我找到这个之前,我已经删除了使用任何weblogic特定jar文件对代码的依赖。

© www.soinside.com 2019 - 2024. All rights reserved.