Тестирование JNDI Spring Websphere вне контейнера - PullRequest
1 голос
/ 14 декабря 2010

Я успешно протестировал некоторые DAO вне сервера weblogic, просматривая информацию об источниках данных через jndi.У меня есть поиск аналогичного варианта с веб-сферой, и мне еще предстоит найти решение, которое не предусматривает жесткого кодирования имени пользователя и пароля в каком-то месте приложения или в чем-то подобном.Прямо сейчас мои настройки jndi выглядят так внутри пружины:

<bean id="applicationServerEnviromentProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties"><props>
<prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
<prop key="java.naming.provider.url">iiop://localhost:2809</prop>
</props>
</property>
</bean>

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName"><value>PeopleAppDS</value></property>
        <property name="jndiEnvironment"><ref local="applicationServerEnviromentProperties"/></property>
    </bean>

Я протестировал соединение jndi, и оно работает, когда приложение загружается в websphere.Я хотел бы иметь возможность проверить даос в затмении, например, до загрузки приложения.Любая помощь будет высоко ценится.

Вот подробности для теста.

------- BaseTestCase.java --------------------

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"file:data-access-config.xml"})
public class BaseTestCase {

}

----- PersonDaoTest.java ----------------

import static org.junit.Assert.assertNotNull;

import java.util.List;<br>

import org.junit.Test;<br>
import org.springframework.beans.factory.annotation.Autowired;

import ....dao.PersonDao;<br>
import ....domain.Person;<br>

public class PersonDaoTest extends BaseTestCase {

    @Autowired
    private PersonDao personDao;


    @Test
    public void findByName() {
        List<Person>  people = personDao.listByName("j%", false, "userId");
        assertNotNull(people);
    }
}

1 Ответ

0 голосов
/ 14 декабря 2010

Правильный способ сделать это - использовать источник данных JNDI со значением DriverManagerDataSource по умолчанию. Если вы запускаете в контейнере, Spring будет использовать именованный источник данных; если поиск не удастся, он будет использовать источник данных не-JNDI.

...