2008-10-16 4 views
0

요약다른 스프링 XML 파일 받는다는

를 사용하여 우리는 우리의 배포 된 Java 웹 응용 프로그램이 연결해야하는 중앙 LDAP 서버가. JUnit 테스트는 LDAP 저장소의 특정 데이터에 따라 달라 지므로 샘플 데이터 세트로 준비된 내장 ApacheDS LDAP 서버에 연결해야합니다. 웹 애플리케이션을 배포 할 때 ApacheDS 서버가 시작되지 않도록하려면 어떻게해야합니까?

세부 우리는 내장 된 LDAP 서버를 시작하는 봄 보안을 사용하고 LDAP-의 context.xml에 다음 줄을 가지고있다

: 현재

<security:ldap-server root="dc=test,dc=com" port="33389" ldif="classpath:EmbeddedServerRoot.ldif" /> 

을, 우리의 web.xml 참조 이 테스트 컨텍스트 파일과 최상위 수준의 application-context.xml :

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      classpath:ldap-context.xml 
      classpath:application-context.xml 
     </param-value> 
    </context-param> 

ldap-context.xml 우리가 JUnit 테스트를 실행할 때, 그리고 우리가 eclipse (WTP를 통해)에서 직접 webapp을 실행할 때 포함되지만, 우리가 war를 패키징하고 그것을 서버에 배포 할 때 제외된다.

빌드 도구로 maven을 사용하고 있습니다. 우리는 매우 쉽게 컨텍스트 구성에서 모두 스프링 컨텍스트 파일 포함 확인하여 우리의 JUnit 테스트에 대한 이러한 상황 돌볼 수 : 다음

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" }) 
public class TestStuff { 
} 

을, 우리의 web.xml 만 제외하고 애플리케이션의 context.xml을 포함 할 것 한 가지 - WTP에서 실행 중일 때 작동하지 않습니다.이 경우에도 임베디드 서버가 필요합니다. 어떤 제안?

답변

1

Maven을 사용하는 경우 어셈블리 플러그인을 사용하여 환경 배포를 관리하는 것이 좋습니다. 스프링 파일이 그렇게 복잡하지 않은 것 같아서 ldap-context.xml 참조가없는 일반적인 스프링 파일을 가지고있을 수 있고 ldap 참조를 가진 테스트 특정 버전을 가질 수 있습니다. 어셈블리가 구성되고 실행되면 환경 특정 파일이 일반 버전을 덮어 쓰고 패키지 된 응용 프로그램을 배포 할 수 있습니다.

+0

두 개의 web.xml 파일을 사용 하시겠습니까? ldap-context.xml이 WTP가 작동하도록 기본적으로 포함될 필요가 있다고 들린다. 그러면 maven이이를 "프로덕션"web.xml 파일로 대체해야합니다 ...? 당신의 접근 방식에 대한 더 자세한 정보가 도움이 될 것입니다. – Julie

0

다른 가능성은 pom에서 일부 등록 정보를 사용하고 환경간에 전환하기 위해 bean의 별명을 정의하는 필터 된 스프링 bean 파일입니다. 그러나 당신은 설정에서 두 빈을 모두 먹을 필요가 있지만 그 중 하나를 사용할 것입니다.