2010-12-14 73 views
1

J'ai testé avec succès un DAO en dehors d'un serveur weblogic en recherchant les informations de la source de données via jndi. J'ai recherché une option similaire avec websphere et je dois encore trouver une solution qui n'implique pas le codage en dur du nom d'utilisateur et du mot de passe à un endroit dans l'application ou quelque chose de similaire. En ce moment, mes paramètres JNDI ressemblent à ce ressort à l'intérieur:Test de JNDI Spring Websphere en dehors du conteneur

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

J'ai testé la connexion JNDI et il fonctionne lorsque l'application est chargée sur websphere. Je voudrais pouvoir tester les daos à l'intérieur d'eclipse par exemple avant le chargement de l'application. Toute aide serait très appréciée.

Voici les détails du scénario de test.

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

Répondre

0

La meilleure façon de le faire est d'avoir une source de données JNDI avec un DriverManagerDataSource par défaut. Si vous exécutez le conteneur, Spring utilisera la source de données nommée; Si la recherche échoue, elle utilisera la source de données non-JNDI.

+0

Je ne suis pas sûr de comprendre ce que vous dites ici. Je pensais que DriverManagerDataSource requérait des informations de connexion à stocker dans l'application ou un fichier de propriétés quelque part. L'une des contraintes auxquelles je suis confronté est que je ne peux pas faire cela pour cette application. – user294241

+0

Oui, consultez la source de données JNDI. Cela vous permet d'avoir un défaut. – duffymo