문제

나는 지난 며칠 동안 이것으로 어려움을 겪고 있습니다. 컨테이너 외부의 DAO를 테스트하려고하지만 테스트 케이스를 실행하는 동안 오류가 발생합니다.

클래스 경로 리소스에서 정의 된 이름의 'sqlmapclient'로 Bean 생성 오류 [ApplicationContext.xml] : init 메소드의 호출 실패; 중첩 된 예외는 java.lang.noclassdeffounderror : com/iplanet/ias/admin/common/asexception입니다.

테스트를 실행하기 위해 NB를 사용하고 있습니다. 사람들은 테스트 사례의 런 타임 클래스 경로에있는 위의 수업이 필요하다고 말합니다. 그러나 나는 실제로 그 병이 어디에 있는지 전혀 찾을 수 없습니다 ... ?? 내 프로젝트에 컨테이너 클래스 경로 + 항아리에있는 모든 항아리를 폴더에 단위 테스트의 런타임 클래스 경로에 포함 시켰습니다. 그래도 나는 같은 오류가 발생합니다.

또한이 항아리에 대한 인터넷 검색도 작동하지 않았습니다.

어쩌면 누군가 가이 괴물 항아리를 어디서 얻을 수 있는지 알고있을 것입니다. 그리고 바라건대 그것은 내 문제를 해결했습니다.

도움이 되었습니까?

해결책

이것은 귀하의 질문에 직접 대답하지 않지만 두 가지 조언이 있습니다. 먼저, 당신이 봄을 사용하고 있다는 것을 알았으니 멈추다 나만의 사용 ServiceLocator 이전에서 언급했듯이 JNDI DataSource를 조회하려면 의문. 대신, 스프링 시설을 사용하여 데이터 소스를 콩에 주입해야합니다. JDNI 데이터 소스를 얻으려면 Spring 's를 사용하십시오 JndiObjectFactoryBean, 그런 것 :

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>java:/comp/env/jdbc/myDS</value>
    </property>
</bean>

그런 다음 컨테이너 밖에서 실행할 때 (일반적으로 테스트를 실행할 때) 내 조언은 다음과 같습니다. ~ 아니다 JNDI 데이터 소스를 사용하십시오. 대신, 스프링 시설을 사용하여 다른 방식으로 DAO에 데이터 소스를 제공해야합니다 (예 : DriverManagerDataSource, 테스트를 실행할 때 실제 연결 풀이 필요하지 않습니다). 이를 통해 테스트에 적합한 IPLANET을 시작하지 않고도 테스트를 실행할 수 있습니다 (IPLANET의 연결 풀을 테스트하고 싶지 않으면 DAO를 테스트하고 싶습니다).

그래서, 만들어 applicationContext-test.xml 데이터 액세스를위한 다른 구성으로 테스트하는 동안 사용됩니다. 아래의 샘플 구성 DriverManagerDataSource:

<bean id="dataSource"
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="..."/>
    <property name="url" value="..."/>
    <property name="username" value="..."/>
    <property name="password" value="..."/>
</bean>

이것은 실제로 권장되는 접근법입니다 (장을 확인하십시오. JDBC를 사용한 데이터 액세스 다른 옵션에 대한 자세한 내용은).

추신 : 나는 어디에서 전혀 모른다 com/iplanet/ias/admin/common/ASException 유래하지만 분명히 iPlanet 자체 중 하나입니다. 정말로 알고 싶다면 IPLANET 설치의 모든 항아리, 특히 시작 스크립트에서 참조 된 항아리를 검색하십시오. 그러나 나는 '그 후 JNDI 문제에 직면하게 될 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top