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,是不会出现这样的问题的。
具体的原因有待查找。