EJB3Unit тестирование no-tx-datasource - PullRequest
2 голосов
/ 15 февраля 2010

Я делаю тесты на ejb3-проекте, используя для тестирования ejb3unit http://ejb3unit.sourceforge.net/Session-Bean.html. Все мои Сервисы нужны для @PersistenceContext (UnitName = bla). Я настроил ejb3unit.properties так:

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

все работает с базой данных в памяти.

Так что теперь я хочу дополнительно протестировать еще один сервисный бин с @PersistenceContext (UnitName = noTxDatasource ), который идет для , определенного в моем 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>

Как мне сказать ejb3unit сделать эту работу:

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

В настоящее время он не может сказать: javax.NamingException: не удается найти имя (noTxDataSource) в дереве JNDI. Текущие привязки: (ejb / MyServiceBean = com.company.project.MyServiceBean)

Как добавить этот источник данных no-tx-dat в привязки jndi?

1 Ответ

2 голосов
/ 15 февраля 2010

Я ненавижу отвечать на мои собственные вопросы, но у меня была простая мысль:

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

Это дополнительно позволит вам выполнить следующий поиск:

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

доставка источника данных(в данном случае оракул).

...