создание весеннего боба вне контейнера (для тестирования) - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть следующие в моем applicationaionContext.xml

<bean id="IbatisDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@123.210.85.56:1522:ORCL"/>
    <property name="username" value="mydb"/>
    <property name="password" value="mydbpwd"/>
</bean>


<bean id="myMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:sql-map-config-oracle.xml"/>
  <property name="dataSource" ref="IbatisDataSource"/>
 </bean>

тогда в моем коде есть:

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SqlMapClient sqlclient = (SqlMapClient) ctx.getBean("myMapClient");

при этом я получаю следующую ошибку:

Ошибка создания бина с именем 'myMapClient' определен в классе ресурс пути [applicationContext.xml]: вызов сбой метода init; вложенными исключение java.lang.NoClassDefFoundError: ком / IPlanet / ИПИ / админ / общие / ASException

Я не понимаю, почему он ищет этот класс? Я пытаюсь сделать все за пределами контейнера. Поэтому он не должен даже искать этот класс ... но, тем не менее, просто чтобы заставить его работать, я попытался найти класс с именем ASException, чтобы я мог поместить его в путь к классам, но нигде не могу найти класс ASException.

Есть указатели?

Изображения трассировки стека и моих библиотек для тестирования / запуска тестов alt text alt text alt text

Редактировать Решение: Хотя я думал, что все было за пределами контейнера ... была одна вещь, которой не было за пределами контейнера.
Обратите внимание на свойство configLocation:

<property name="configLocation" value="classpath:sql-map-config-oracle.xml"/>

фактическое содержание sql-map-config-oracle.xml составляет

<sqlMapConfig>
   <settings enhancementEnabled="true" useStatementNamespaces="true" />
    <transactionManager type="JDBC">
        <dataSource type="JNDI">
            <property name="DataSource" value="my/jndi/mydb" />
        </dataSource>
    </transactionManager>
<sqlMap resource="somemapping.xml"/>
</sqlMapConfig>

Материал JNDI не должен быть там!

sql-map-config-oracle.xml должно быть просто:

<sqlMapConfig>
   <settings enhancementEnabled="true" useStatementNamespaces="true" />
        <sqlMap resource="somemapping.xml"/>
</sqlMapConfig>

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

У вас определенно есть проблема зависимости во время выполнения, так как @Cletus сказал, что org.springframework.orm.ibatis.SqlMapClientFactoryBean был скомпилирован с com.iplanet.ias.admin.common.ASException, но теперь его нет в вашем пути к классам - Spring не может его найти. Вам нужно посмотреть на источник для SqlMapClientFactoryBean, чтобы увидеть, где вызывается ASException - у Spring должен быть dist со всеми его зависимостями, вы также можете заглянуть туда, когда проводите расследование.

0 голосов
/ 12 ноября 2009

Этот класс был найден во время компиляции, но не во время работы:

com/iplanet/ias/admin/common/ASException

Поэтому, когда вы запускаете программу, кажется, что он не может найти этот класс, который принадлежит используемому вами приложению или серверу портала Sun. Короче говоря, это ошибка пути к классам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...