2010-12-14 11 views
1

Ich habe erfolgreich einige DAO außerhalb eines Weblogic-Servers getestet, indem ich die Datenquelleninformationen über JNDI nachgeschlagen habe. Ich suche nach einer ähnlichen Option mit websphere und muss noch über eine Lösung kommen, die den Benutzernamen und das Kennwort an einem Ort innerhalb der Anwendung oder etwas Ähnliches nicht fest codiert. Gerade jetzt meine jndi Einstellungen aussehen wie diese innerhalb Frühling:Testen von JNDI Spring Websphere außerhalb des Containers

 
<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> 

ich die jndi Verbindung getestet haben und es funktioniert, wenn die Anwendung auf websphere geladen wird. Ich würde gerne in der Lage sein, die Daos in Eclipse zum Beispiel zu testen, bevor die App geladen wird. Jede Hilfe würde sehr geschätzt werden.

Hier sind die Details für den Testfall.

------- 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); 
    } 
} 

Antwort

0

Der richtige Weg, um es zu tun ist, eine JNDI-Datenquelle mit einem DriverManagerDataSource Standard zu haben. Wenn Sie im Container ausgeführt werden, verwendet Spring die angegebene Datenquelle. Wenn die Suche fehlschlägt, wird die Nicht-JNDI-Datenquelle verwendet.

+0

Ich bin mir nicht sicher, ob ich verstehe, was Sie hier sagen. Ich dachte, die DriverManagerDataSource erfordern Verbindungsinformationen, die irgendwo in der Anwendung oder einer Eigenschaftendatei gespeichert werden. Eine der Einschränkungen, denen ich gegenüberstehe, ist, dass ich das für diese Anwendung nicht tun kann. – user294241

+0

Ja, überprüfen Sie die JNDI-Datenquelle. Es ermöglicht Ihnen, einen Standard zu haben. – duffymo

Verwandte Themen