2010-02-15 5 views
2

테스트를 위해 ejb3unit http://ejb3unit.sourceforge.net/Session-Bean.html을 사용하여 ejb3 프로젝트에서 테스트를 수행하고 있습니다. @PersistenceContext (UnitName = bla)를 오랫동안 사용하는 모든 서비스. 다음과 같이 ejb3unit.properties를 설정합니다.EJB3Unit 테스트 no-tx-datasource

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

모든 것이 메모리 내장 데이터베이스에서 작동합니다.

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

가 어떻게이를 만들기 위해 ejb3unit을 알 수 있습니까 :

그래서 지금은 추가로 내있는 DataSources.xml에 정의 된 간다 @PersistenceContext (UnitName = noTxDatasource)와 다른 servicebean을 테스트하려면 작업 : javax.NamingException가 : JNDI 트리 현재 바인딩의 이름 (noTxDataSource를) 찾을 수 없습니다 : (EJB/MyServic

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

현재이 말하는 실패 eBean = com.company.project.MyServiceBean)

이 no-tx-datasource를 jndi 바인딩에 어떻게 추가 할 수 있습니까? 이에 (

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

데이터 소스를 제공 :

답변

2

나는 내 자신의 질문에 대답 싫어,하지만 난 몇 가지 간단한 생각했다 :

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

이 추가로 다음 조회 작업을 할 수 있습니다를 케이스 오라클).