2014-08-27 3 views
0

내가 IBM RAD (9)는 WebSphere 8.5 응용 프로그램에서 개발하고 있어요를 볼 수 중지 :스피어 - 다른 받는다는 모듈의 생산에 의해 생산 된 콩 내가 다음 받는다는 모듈 프로젝트를 분할 한 EJB 3 :(</p> <p>를 사용하여,

    은 (WAR 나머지 채널 입력을 구축한다)
  • 귀 (잘 구축 유형은 EAR 입니다
  • DTO (전용 '바보'전송 객체)
  • EJB (비즈니스 로직)
  • 웹 )

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 유형 을 [내. ejb.HelperClass]가 한정자와 함께 발견되지 않습니다. 한정자와 함께 한정자가 표시됩니다. 주입 지점, 필드 : private my.ejb.HelperClass my.web.MyChannel.helper, Bean 소유자 : [WSEjbBean [businessLocals = [my.web.MyChannel], ejbName = MyChannel1710565165, 이름 : null, WebBeans 유형 : 엔터프라이즈, API 유형 : [java.lang.O삽입 유형 : [클래스 my.ejb.HelperClass] 주석 : [주석 ​​필드, 기본 유형 : blues, my.web.MyChannel], 한정자 : [javax.enterprise.inject.Any, 클래스 my.ejb.HelperClass, 유형 Closure : [Java 클래스 이름 : helper] 한정자 : [@ javax.enterprise.inject.Default()] org.apache.webbeans.util.InjectionExceptionUtils.throwUnsatisfiedResolutionException (InjectionExceptionUtils.java:92) org.apache.webbeans.container.ResolutionUtil.checkResolvedBeans에서 (ResolutionUtil에서 .java : 96) at org.apache.webbeans.container.InjectionResolver.checkInjectionPoint S org.apache.webbeans.config.BeansDeployer.validate에서 org.apache.webbeans.container.BeanManagerImpl.validate (BeanManagerImpl.java:1092)에서 (InjectionResolver.java:189) (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 매핑의 변경 사항을 취소하면 문제가 '사라졌습니다'. 하지만 OpenJPA에 대한 언급이없는 빈에 예외가 표시되는 이유와 OpenJPA 예외가 표시되지 않은 이유는 무엇입니까? –

답변

0

이 링크 확인 Troubleshooting contexts and dependency injection. 어쩌면 그것은 당신을 도울 것입니다. 인용 :

  1. 는 시켰음 의존성을 해결합니다.
    응용 프로그램에서 주입 지점과 일치하는 개체에 해당하는 소스가없는 경우 충족 할 수없는 종속성 또는 javax.enterprise.inject.UnsatisfiedResolutionException이 발생합니다. 필드의 API 유형은 선택적 한정자 세트와 함께 이 종속성을 충족시키는 데 유효한 bean 세트를 나타냅니다. 주입 지점 유형에 할당 할 더 관리 빈 없다

    • 다음과 같이 시켰음 의존성의 원인이다.
    • 리턴 유형이 주입 지점에 지정 가능한 관리 Bean의 작성자 메소드가 없습니다.
    • 유형이 주입 지점에 지정 가능한 관리 Bean에는 생산자 필드가 없습니다.
    • 앞에서 언급 한 시나리오 중 하나가 유효하지만 주입 지점의 한정자 주석이 콩 또는 제작자 에 없습니다.

은 아마 당신이없는, 한정자를 제거 을 새로운 빈을 도입 또는 생산자 필드 나 메소드

를 추가하여 사용할 수있는 API 유형 및 한정자 종속성을하여 오류를 해결 bean이 하나의 모듈에서 생성되고 다른 모듈에서 사용된다면 어떤 클래스 패스 의존성?

+0

claspath 의존도는 변경되지 않았습니다. 실제로 스택 추적에 언급 된 클래스가 변경되지 않았습니다. –