2010-02-15 2 views
2

Je fais des tests sur un projet ejb3 en utilisant ejb3unit http://ejb3unit.sourceforge.net/Session-Bean.html pour tester. Tous mes services sont longs pour @PersistenceContext (UnitName = bla). J'ai mis en place le ejb3unit.properties comme ceci:EJB3Unit test no-tx-datasource

ejb3unit_jndi.1.isSessionBean=true 
ejb3unit_jndi.1.jndiName=ejb/MyServiceBean 
ejb3unit_jndi.1.className=com.company.project.MyServiceBean 

tout fonctionne avec la base de données en mémoire.

je veux tester en plus donc maintenant une autre servicebean avec @PersistenceContext (NomUnité = noTxDatasource) qui va pour un défini dans mon datasources.xml:

<datasources> 
    <local-tx-datasource> 
    ... 
    </local-tx-datasource> 
    <no-tx-datasource> 
    <jndi-name>noTxDatasource</jndi-name> 
    <connection-url>...</connection-url> 
    <driver-class>oracle.jdbc.OracleDriver</driver-class> 
    <user-name>bla</user-name> 
    <password>bla</password> 
    </no-tx-datasource> 
</datasources> 

Comment puis-je dire de faire ce ejb3unit travail:

Object object = InitialContext.doLookup("java:/noTxDatasource"); 
if (object instanceof DataSource) { 
    return ((DataSource) object).getConnection(); 
} else { 
    return null; 
} 

Actuellement, il ne dit: javax.NamingException: Vous ne trouvez pas le nom (noTxDataSource) dans l'arborescence JNDI actuelles: (ejb/MyServic eBean = com.company.project.MyServiceBean)

Comment puis-je ajouter cette source de données no-tx aux liaisons jndi?

Répondre

2

Je déteste répondre à mes propres questions, mais j'avais une pensée simple:

public void setUp() throws Exception { 
    OracleDataSource ds = new OracleDataSource(); 
    ds.setServerName("localhost"); 
    ds.setPortName(1521); 
    ds.setDatabaseName("database"); // SID 
    ds.setUser("user"); 
    ds.setPassword("pass"); 

    InitialContext ic = new InitialContext(); 
    ic.add("noTxDatasource", ds); 
} 

Cela vous permettra en plus de faire le travail de recherche suivante:

Object object = InitialContext.doLookup("java:/noTxDatasource"); 

offrant une source de données (dans ce oracle de cas).

Questions connexes