有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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 interface javax.persistence.EntityManager; nested exception is com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.persistence.EntityManager] is defined: No beans of type javax.persistence.EntityManager; owner=com.bea.core.repackaged.springframework.context.support.GenericApplicationContext: display name

有人能帮忙吗?我应该如何重构代码。或者这里缺少什么?这样我的代码就可以与10.3和10.3.1兼容,而无需使用@EjbRef


共 (1) 个答案

  1. # 1 楼答案

    我认为源代码不是针对10.3的,而是weblogic的某个早期版本,在EjbRef中,weblogic在weblogic中提供了该版本。罐子但在某些版本之后,它看起来可能是10.3。x继续weblogic。埃布根。EjbRef被重构为weblogic之外的另一个jar。罐子

    我对server/lib文件夹中的所有JAR进行了分解,发现wls api中也有相同的包。罐子

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