2014-08-27 10 views
0

我在IBM RAD 9为WebSphere 8.5应用程序开发,我已经拆分项目,以下Maven模块:的Websphere - 由其他的maven组件生产商生产的豆停止使用EJB 3 :(</p> <p>可以看出

  • DTO(仅 '笨' 传输对象)
  • EJB(业务逻辑)
  • 幅(其余的频道,建立类型WAR)
  • 耳(当然,生成类型是EAR )

EJB模块在META-INF中有空的beans.xml文件。有一个生产班上有,产生一些my.ejb.HelperClass

@ApplicationScoped 
public class MyHelperProducer { 
    @Produces 
    @ApplicationScoped 
    public HelperClass produceGenWsClient() { 
     .... 
    } 
} 

用法相当简单:

@Inject 
private HelperClass helper; 

它已在运作!在代码中发生了一些变化(涉及许多类中的许多字段的重构,但不包括那些涉及到的)!一切停止运行。现在我得到这样的错误消息:

[14年8月27日16:33:38:960 CEST] 00000063 BeansDeployerËBeansDeployer 部署 javax.enterprise.inject.UnsatisfiedResolutionException:API类型 [我的。找不到符合条件的限定符: [@ javax.enterprise.inject.Default()]注入字段 注入点,字段:private my.ejb.HelperClass my.web.MyChannel.helper, Bean Owner:[WSEjbBean [businessLocals = [my.web.MyChannel], ejbName = MyChannel1710565165,Name:null,WebBeans类型:ENTERPRISE,API 类型:[java.lang.O注册,my.web.MyChannel],限定符:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] InjectionType:[class my.ejb.HelperClass]注释: [带注释的字段,基类型: class my.ejb.HelperClass,类型Closures: [class my.ejb.HelperClass,class java.lang.Object],注释: [@ javax.inject.Inject()],Java成员名称:helper]限定符: [[@ javax.enterprise.inject.Default()]] at org.apache.webbeans.util.InjectionExceptionUtils.throwUnsatisfiedResolutionException(InjectionExceptionUtils.java:92) at org.apache.webbeans.container.ResolutionUtil.checkResolvedBeans(ResolutionUtil .java:96) at org.apache.webbeans.container.InjectionResolver.checkInjectionPoint S(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) at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:78) at com.ibm.ws.webbeans.common.CommonLifeCycle。startApplication(CommonLifeCycle.java:106)

的“有趣”的东西存在,我已经得到了在其他应用这样的错误,但我已经通过启动服务器干净,删除并重新导入该项目解决了他们到工作区。但是,现在,即使这样也行不通。

实际上这里有什么问题? RAD有没有一个大错误?或者我做错了什么,那只是偶然的工作?我如何诊断这些错误?

+0

事实上,在反转OpenJPA映射中的变化后,问题“消失”了。但是为什么这个异常在bean上显示,没有引用OpenJPA,以及为什么没有显示OpenJPA异常? – 2014-08-28 07:44:11

回答

0

检查此链接Troubleshooting contexts and dependency injection。也许它会帮助你。引用:

  1. 解决不可满足的依赖。
    不可满足的依赖关系或 javax.enterprise.inject.UnsatisfiedResolutionException当 没有与应用程序中的注入点 匹配的对象的对应源时发生。该字段的API类型以及可选的限定符注释集决定了可用于满足依赖关系的一组bean。是不可满足 依赖性的原因如下:

    • 没有托管Bean,它是分配给在 注入点的类型。
    • 没有任何托管bean的生产者方法,其返回类型可分配给注入点。
    • 任何托管bean中没有生产者字段,其类型可分配给注入点。
    • 之前提到的一种情况是有效的,但注入点上的限定符注释不存在于 bean或生产者中。

通过与API类型和 合格者可通过引入一个新的bean,除去预选赛, 或添加生产者字段或方法

也许你缺少一个依赖解决错误一些类路径的依赖关系,如果bean是在一个模块中创建的并用于其他?

+0

claspath依赖没有改变。实际上,堆栈跟踪中提到的类没有任何变化。 – 2014-08-28 06:42:01