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.xml
에 src/main/resources/META-INF/
.
WAR 당신은 배치해야 포장 beans.xml
에를 src/main/webapp/WEB-INF/
.
및 디렉토리 .java
에는 파일 만 넣어야합니다 . 파일 과 같은 리소스 는 .src/main/java
src/test/java
.xml
src/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
'development' 카테고리의 다른 글
전역 신규 및 삭제 연산자를 올바르게 대체하는 방법 (0) | 2020.12.29 |
---|---|
TeamCity Nuget Feed에서 특정 버전의 패키지를 제거하는 방법은 무엇입니까? (0) | 2020.12.29 |
하위 요소 클릭 이벤트가 상위 클릭 이벤트를 트리거합니다. (0) | 2020.12.29 |
프로젝트에 대해 OutputPath 속성이 설정되지 않았습니다. (0) | 2020.12.29 |
numpy 배열에서 모드를 찾는 가장 효율적인 방법 (0) | 2020.12.29 |