2009-11-29 3 views
2

나는 이것이 간단하다고 상상합니다. 그러나 올바른 검색어 조합을 찾을 수는 없습니다. 내가 멀티 모듈 응용 프로그램이있는 경우, 어떻게다른 모듈의 스프링 빈을 사용 하시겠습니까?

프로젝트 설정이 조금 다음과 같습니다 모듈 B의 콩에 모듈 A의 콩이 가능합니까 :

project.ear/module-a.jar/resources/beans.xml 
project.ear/module-a.jar/java/foo/bar.class 
project.ear/module-b.war/java/foo/barFactory.class 

beans.xml 환경 classpath 또는 파일 시스템에 의해 접근 할 수 없다. 이것을 할 수있는 방법이 있습니까? 아니면 다르게 다해야합니까?

답변

1

위의 3 스카프맨보다 쉬운 해결책이 있다고 생각합니다. 모듈 - b.war/WEB-INF는/web.xml에

  1. 넣고이 라인 :

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    classpath*:/resources/beans.xml

    ,

    </context-param>

    이 클래스 경로의 임의 부분으로부터 각 /resources/beans.xml 로딩 가능 (즉, classpath에있는 항아리).

  2. module-a.jar을 module-b.war의 일부로로드해야합니다 (module-a.jar은 module-b.war/WEB-INF/lib 위치에 있습니다). REF = "someBean"를 통해 이전에 구성 콩을 사용하여 자사의 콩 '구성 및 frontend.war와 비즈니스 logic.jar :

나는 매우 유사한 내 프로젝트에 단위가 있습니다. 그것은 작동합니다.

3

귀하의 어플리케이션 서버는 EAR의 각 모듈에 대해 서로 다른 클래스 로더를 사용하여 한 모듈이 다른 모듈에서 자원을 보지 못하도록합니다. 이는 JavaEE 클래스 로더의 기본 동작입니다.

당신이 하나 필요

  • 재구성 전체 EAR에 걸쳐 "통합"클래스 로더 사용하도록 애플리케이션 서버 (높은 애플리케이션 서버 별이지만, 당신이 일을 얻을 수 있다면 큰), 또는
  • 패키지를 모든 모듈을 하나의 모듈로 묶거나 (예 : WAR가 모든 것을 포함 할 수 있음)
  • WAR 모듈의 공식적인 선언을 선언하여 WAR에 리소스를 볼 수있게하는 개별 JAR 모듈에 의존성을 선언 할 수있게합니다. JAR 모듈에서.