我是 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
:::依赖注入失败:找不到关于类接口的bean定义javax.persistence.EntityManager
;嵌套异常是:没有定义类型 [] 的com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException
唯一 bean :没有类型的 bean ;所有者= :显示名称javax.persistence.EntityManager
javax.persistence.EntityManager
com.bea.core.repackaged.springframework.context.support.GenericApplicationContext
谁能帮忙,我应该如何/如何重构代码。或者这里缺少什么?这样我的代码在不使用 @EjbRef 的情况下与 10.3 和 10.3.1 兼容