2012-06-06 4 views
3

어쩌면 CDI 1.0 specification을 통해 빗질하는 데 너무 많은 시간이 걸렸지 만 정확히 META-INF/beans.xml이 필요한 위치에 대한 자세한 설명을 찾을 수 없습니다.CDI 삽입의 경우 제작자 아카이브와 injectee 아카이브에 META-INF/beans.xml이 필요합니까?

합니다 (section on bean discovery는 어떤 일을 의미 몇 밝히는 문장을 만들지 만, 나는 그것이 규범 있는지 확실하지 않습니다.)

내가 느슨하게 어떤 콩 아카이브를 말하는 것은 하나를 필요로 이해합니다. 호환 CDI 1.0 환경에서 다음 항아리에

하지만 경우를 고려 : 단지

  • 구현 항아리 그 인터페이스와 그 구현 CDI 콩을 포함

    • 인터페이스 항아리 포함 인터페이스 기능 @Inject 주입 점, 그러나 생산자 방법 없음
    • 제작자 단지 (단순함을 위해) 하나의 Java 객체를 포함 w 하나의 메소드는 @Produces으로 주석 처리됩니다.

    생산 단지구현 항아리 모두 빈 아카이브 할 필요가있을 것이다, 그래서 때문에 각 그들에 포함 META-INF/beans.xml 자원을 필요 논리적 보인다.

    그러나 완전성을 위해 사실이 경우입니까? 구현 jar@Inject 점만 사용하고 CDI 주석은 사용하지 않으므로 다른 방법으로 스캔합니까? 또 다른 방법은 보는이 예에서, 구현은 단지만을위한 대상 는 AS 주사 아닌 소스 주사제의 사용된다. 그래서 저는 어떤 종류의 논리를 볼 수 있습니다 :보세요, 을 주입 할 수있는 콩을 생산하는 항아리 만을 빈 아카이브로 선언해야합니다. (나는 사실이 아니라고 말하고 있는데, 그 논쟁이 이루어지고 있음을 알 수있다.)

    마지막으로, 인터페이스 용기의 모든 문제이있다. 정의에 의하면 빈을 포함하고 있지 않지만 오래 전 GlassFish에서 케이스를 보았습니다. 심지어 인터페이스 jarMETA-INF/beans.xml 파일이 있어야했습니다. 그것은 나에게 잘못된 것처럼 보였지만, 나는 놀랍게도 이것을 확인하거나 부인하기 위해 명세서의 절을 정말로 찾을 수 없다는 것을 발견했다.

    So : beans.xml? 주사 형 항아리에서만? 주입 대상 단지에서만? 또는...?

  • 답변

    2

    는.) 당신은 모두 생산자와 IMPL 항아리

    B의 beans.xml 환경 마커 파일이 필요합니다.) 당신은 순수 인터페이스 항아리에 beans.xml 환경 마커 파일이 필요하지 않습니다. GlassFish가 실패하면 gf 버그가 발생합니다. 그것은 아무런 해를 끼치 지 않는다.