com iplanet ias JAR

Я боролся с этим последние пару дней. Я пытаюсь проверить DAO вне контейнера, но во время выполнения контрольного примера я получаю сообщение об ошибке:

Ошибка создания bean-компонента с именем 'SqlMapClient', определенным в ресурсе пути к классу [applicationContext.xml]: сбой вызова метода init; Вложенным исключением является java.lang.NoClassDefFoundError: com/iplanet/ias/admin/common/ASException

Я использую NB для запуска тестов. люди говорили, что мне нужно, чтобы вышеупомянутый класс был в пути класса времени выполнения тестового примера. Тем не менее, я абсолютно не могу найти, где на самом деле эта банка...?? Я включил все jar-файлы, которые находятся в моих контейнерах classpath + jars в папке lib моих проектов, в classpath времени выполнения модульного теста. Тем не менее я получаю ту же ошибку.

Также поиск в Google для этого JAR тоже не сработал.

Может быть, кто-то там знает, где взять эту чертову банку. И, надеюсь, это исправило мои проблемы.

1 ответ

Решение

Это не дает прямого ответа на ваш вопрос, но у меня есть два совета. Во-первых, теперь, когда я знаю, что вы используете Spring, я бы предложил прекратить использовать ваш собственный ServiceLocator искать источник данных JNDI, как вы упоминали в предыдущем вопросе. Вместо этого вы должны использовать средства Spring для этого, а затем внедрить источник данных в ваши bean-компоненты. Чтобы получить источник данных JDNI, используйте Spring JndiObjectFactoryBean, что-то вроде того:

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

Затем, при работе вне контейнера (обычно при выполнении тестов), мой совет будет не использовать источник данных JNDI. Вместо этого вам следует использовать средства Spring для предоставления источника данных вашим 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 для получения более подробной информации о различных параметрах).

PS: понятия не имею откуда com/iplanet/ias/admin/common/ASException происходит, но это, очевидно, один из iPlanet. Если вы действительно хотите это выяснить, выполните поиск во всех банках установки iPlanet, особенно в том, что указано в скрипте запуска. Но я думаю, что "после этого вы столкнетесь с проблемами JNDI, будьте осторожны.

Другие вопросы по тегам