在容器外部测试JNDI Spring Websphere

时间:2010-12-14 04:34:53

标签: spring junit websphere jndi

我已经通过jndi查找数据源信息,成功地在weblogic服务器外测试了一些DAO。我已经在websphere中搜索了一个类似的选项,并且必须使用一个解决方案,该解决方案不涉及在应用程序中的某个位置或类似的地方硬编码用户名和密码。现在我的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时它正在运行。我希望能够在加载应用程序之前测试eclipse中的daos。任何帮助将不胜感激。

以下是测试用例的详细信息。

------- 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 :(得分:0)

正确的方法是使用具有DriverManagerDataSource默认值的JNDI数据源。如果你在容器中运行,Spring将使用指定的数据源;如果查找失败,它将使用非JNDI数据源。