`

java.lang.RuntimeException: Non matching type for inject of field:

阅读更多

20:37:56,015 ERROR [STDERR] java.lang.RuntimeException: Non matching type for inject of field: private ejbModule.persistence.userAdmin.user.UserDao ejbModule.business.apply.DeptTempMgrBean.userDao for type: $Proxy96 of jndiName env/ejbModule.business.apply.DeptTempMgrBean/userDao
intfs: , ejbModule.persistence.userAdmin.user.UserDao, org.jboss.ejb3.JBossProxy
20:37:56,015 ERROR [STDERR]  at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:128)
20:37:56,015 ERROR [STDERR]  at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:106)
ejbModule.business.apply.DeptTempMgrBean.userDao to $Proxy96
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
20:37:56,031 ERROR [STDERR]  at java.lang.reflect.Field.set(Field.java:657)
20:37:56,031 ERROR [STDERR]  at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:116)
20:37:56,031 ERROR [STDERR]  ... 94 more

 

 

20:37:56,031 ERROR [STDERR] Caused by: java.lang.IllegalArgumentException: Can not set ejbModule.persistence.userAdmin.user.UserDao field ejbModule.business.apply.DeptTempMgrBean.userDao to $Proxy96
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
20:37:56,031 ERROR [STDERR]  at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
20:37:56,031 ERROR [STDERR]  at java.lang.reflect.Field.set(Field.java:657)
20:37:56,031 ERROR [STDERR]  at org.jboss.injection.JndiFieldInjector.inject(JndiFieldInjector.java:116)
20:37:56,031 ERROR [STDERR]  ... 94 more
20:37:56,031 INFO  [BusinessSortAction] BusinessSortAction.getBsSortList exception end

 

 

    红色处,经过测试,是实例化ejb的时候采用了注解方式实例化时报的错,而这里的ejb包结构有点特殊,情况是ear包中包含了两个ejb.jar和一个war,war包里的action调用b.ejb.jar的一个会话bean,而这类中引用到a.ejb.jar的一个会话bean也就是文中出现的userdao了,实例化方式为:@EJB(beanName="UserDaoImpl"),

   当实例化改为:usergroupDao = (UsergroupDao)EJB3Factory.getLocalEJBSessionBean("UsergroupDaoImpl") ,就不会出现这个情况。

   如果是a.ejb.jar中的会话bean引用a.ejb.jar的会话bean,是不会出现这样的问题的。

   具体的原因有待查找。

  

分享到:
评论
1 楼 YTDolly 2010-03-24  

是不是这样的?
还有就是看你的分析错误好像有错哦。
我今晚在同时部署UserManager和ConsumerManager时,出现了问题了,但分开部署没问题。



EAR or WAR的类将按照以下顺序装载:

1. WEB-INF/lib (for WARs)
2.ear/lib
3. server/default/lib下的jar包

相关推荐

Global site tag (gtag.js) - Google Analytics