development

CDI : beans.xml, 어디에 두어야합니까?

big-blog 2020. 12. 29. 08:21
반응형

CDI : beans.xml, 어디에 두어야합니까?


CDI 구현으로 Weld를 사용하고 있습니다. .NET에 빈 beans.xml이있을 때 Weld 컨테이너를 인스턴스화하는 개체 그래프를 어셈블하려는 통합 테스트 가 잘 작동합니다src/test/java/META-INF/beans.xml . 다음은 간단한 테스트입니다.

public class WeldIntegrationTest {
    @Test
    public void testInjector() {
        new Weld().initialize();
        // shouldn't throw exception
    }
}

이제 실행 mvn clean install하면 항상 다음을 얻습니다.Missing beans.xml file in META-INF!

내 루트 폴더는 WEB-INF 폴더를 포함하는 "src"와 "web"이지만 기본 maven 구조를 사용하려고 시도하고 "web"을 "webapp"로 이름을 바꾸고 src / main으로 옮겼습니다. 생각할 수있는 모든 합리적인 위치를 시도했습니다.

 - src/main/java/META-INF/beans.xml
 - src/test/java/META-INF/beans.xml
 - web/WEB-INF/beans.xml
 - src/main/webapp/WEB-INF/beans.xml
 - src/main/webapp/META-INF/beans.xml
 - src/main/webapp/META-INF/(empty) and src/main/webapp/WEB-INF/beans.xml

지금까지 아무것도 작동하지 않습니다.


EJB와 JAR 당신은 배치해야 포장 beans.xmlsrc/main/resources/META-INF/.

WAR 당신은 배치해야 포장 beans.xml에를 src/main/webapp/WEB-INF/.

디렉토리 .java에는 파일 넣어야합니다 . 파일 과 같은 리소스 .src/main/javasrc/test/java.xmlsrc/main/resources


위의 답변을 보완하기 위해 여기에 대한 공식 참조가 있습니다 : https://docs.oracle.com/javaee/6/tutorial/doc/gjbnz.html

인용문:

CDI를 사용하는 애플리케이션에는 beans.xml이라는 파일이 있어야합니다. 파일은 완전히 비어있을 수 있지만 (특정 제한된 상황에서만 내용이 있음) 반드시 있어야합니다. 웹 애플리케이션의 경우 beans.xml 파일이 WEB-INF 디렉토리에 있어야합니다. EJB 모듈 또는 JAR 파일의 경우 beans.xml 파일이 META-INF 디렉토리에 있어야합니다.


http://www.javamonamour.org/2017/11/cdi-in-java-se-8.html 여기에서 내가 성공한 위치, 즉 src / META-INF 아래를 볼 수 있습니다. 이 게시물에는 Java SE에서 CDI의 전체 작동 예제가 포함되어 있습니다.

참조 URL : https://stackoverflow.com/questions/13056336/cdi-beans-xml-where-do-i-put-you

반응형