JavaWebLogic没有[javax.persistence.EntityManager]类型的唯一bean
我是EJB3新手,正在编写现有代码
我们正在使用weblogic10。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.3WebLogic中。jar有weblogic包。埃布根。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中运行代码之后。我得到了错误
Error is -
javax.ejb.EJBTransactionRolledbackException
: EJB Exception: :com.bea.core.repackaged.springframework.beans.factory.BeanCreationException
: Dependency injection failure: can't find the bean definition about class interfacejavax.persistence.EntityManager
; nested exception iscom.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException
: No unique bean of type [javax.persistence.EntityManager
] is defined: No beans of typejavax.persistence.EntityManager
; owner=com.bea.core.repackaged.springframework.context.support.GenericApplicationContext
: display name
有人能帮忙吗?我应该如何重构代码。或者这里缺少什么?这样我的代码就可以与10.3和10.3.1兼容,而无需使用@EjbRef
# 1 楼答案
我认为源代码不是针对10.3的,而是weblogic的某个早期版本,在EjbRef中,weblogic在weblogic中提供了该版本。罐子但在某些版本之后,它看起来可能是10.3。x继续weblogic。埃布根。EjbRef被重构为weblogic之外的另一个jar。罐子
我对server/lib文件夹中的所有JAR进行了分解,发现wls api中也有相同的包。罐子
我的问题现在解决了。在找到这个之前,我已经从使用任何特定于weblogic的jar文件中删除了对代码的依赖