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

时间:2010-09-29 21:51:47

标签: java ejb-3.0 weblogic-10.x weblogic11g

我是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.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兼容

1 个答案:

答案 0 :(得分: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文件对代码的依赖。