2014-08-27 15 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