【发布时间】:2014-08-27 14:52:49
【问题描述】:
我正在 IBM RAD 9 下开发 WebSphere 8.5 的应用程序,使用 EJB 3 :(
我已将项目拆分为以下 maven 模块:
- dto(仅“愚蠢”的传输对象)
- ejb(业务逻辑)
- web(REST 通道,构建类型为 WAR)
- ear(嗯,构建类型是 EAR)
EJB 模块在 META-INF 中有空的 beans.xml 文件。那里有一个生产者类,它产生一些my.ejb.HelperClass
@ApplicationScoped
public class MyHelperProducer {
@Produces
@ApplicationScoped
public HelperClass produceGenWsClient() {
....
}
}
用法很琐碎:
@Inject
private HelperClass helper;
它已经在运行了!在对代码进行一些更改后(涉及重构许多类中的许多字段,但不涉及那些!)一切都停止了。现在我收到这样的错误消息:
[8/27/14 16:33:38:960 CEST] 00000063 BeansDeployer E BeansDeployer 部署 javax.enterprise.inject.UnsatisfiedResolutionException:API 类型 [my.ejb.HelperClass] 未找到带有限定符的限定符: [@javax.enterprise.inject.Default()] 用于注入字段 注入点,字段:私有 my.ejb.HelperClass my.web.MyChannel.helper,Bean 所有者:[WSEjbBean [businessLocals=[my.web.MyChannel], ejbName=MyChannel1710565165,名称:null,WebBeans 类型:ENTERPRISE,API 类型:[java.lang.Object,my.web.MyChannel],限定符:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] InjectionType:[class my.ejb.HelperClass] 注释: [注释字段,基本类型:类 my.ejb.HelperClass,类型闭包: [类 my.ejb.HelperClass,类 java.lang.Object],注解: [@javax.inject.Inject()],Java 成员名称:助手] 限定符: [[@javax.enterprise.inject.Default()]] 在 org.apache.webbeans.util.InjectionExceptionUtils.throwUnsatisfiedResolutionException(InjectionExceptionUtils.java:92) 在 org.apache.webbeans.container.ResolutionUtil.checkResolvedBeans(ResolutionUtil.java:96) 在 org.apache.webbeans.container.InjectionResolver.checkInjectionPoints(InjectionResolver.java:189) 在 org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1092) 在 org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:394) 在 org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:332) 在 org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:183) 在 org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:124) 在 org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:78) 在 com.ibm.ws.webbeans.common.CommonLifeCycle.startApplication(CommonLifeCycle.java:106)
“有趣”的是,我已经在其他应用程序中遇到了此类错误,但后来我通过启动服务器清理并删除项目并将其重新导入工作区来解决它们。然而现在,即使这样也没有用。
这里实际上有什么问题? RAD 中是否存在大错误?或者我做错了什么,那只是以前偶然工作的?如何诊断此类错误?
【问题讨论】:
-
实际上,在反转 OpenJPA 映射中的更改后,问题“消失”了。但是为什么异常显示在 bean 上,没有对 OpenJPA 的引用,为什么没有显示 OpenJPA 异常?
标签: java jakarta-ee ejb websphere ibm-rad