2010-05-19 2 views
2

Websphere 환경을 시작하지 않고도 EJB 클래스를 테스트 (단위 테스트)하려고합니다. 이제 Open EJB을 사용하고 있지만 EJB 내에서 사용되는 다른 EJB의 JNDI 이름을 확인하는 데 몇 가지 문제가 있습니다 ... 지금 테스트에서 조롱 된 클래스를 삽입 할 방법이 없습니다. 이 java:comp/env/ejb/PrefixEjbNameLocalHome에 대한 조회가 내가 그 형식의 JNDI 이름을 생성 열기 EJB를 설정할 수 없습니다 테스트중인 InitialContext를 내 수업 내부Open EJB로 JNDI 이름 구성

final Properties properties = new Properties(); 
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 
properties.setProperty("log4j.category.OpenEJB.options ", "debug"); 
properties.setProperty("log4j.category.OpenEJB.startup ", "debug"); 
properties.setProperty("log4j.category.OpenEJB.startup.config ", "debug"); 
properties.setProperty("MyOwnDatasource.JdbcDriver ", "com.ibm.as400.access.AS400JDBCDriver"); 
properties.setProperty("MyOwnDataSource.JdbcUrl ", "jdbc:as400:MYHOSTNAME;database name=MYDATABASE;libraries=MYDEFAULTTABLE"); 
ic = new InitialContext(properties); 

얻기

.

내가 이런 형식의 규칙을 설정하려고 JNDI 이름 형식에 대한 추가 속성 :

properties.setProperty("openejb.jndiname.format ", "comp/env/ejb/{interfaceClass}"); 

속성을 사용하지 않습니다를?

로깅 구성도 사용되지 않습니다. 내가 log4j.category.OpenEJB.*을 설정하고 DEBUG 또는 TRACE에 등이 있지만 난 단지, 및 열기 EJB에서 메시지를 WARN 정보를보고 있어요.

답변

3

"java :"부분은 테스트 케이스를 엉망으로 만든다. 기본적으로 Context.INITIAL_CONTEXT_FACTORY와 "java :"는 상호 배타적입니다. InitialContext 클래스는 "java :"또는 "foo :"조회에 대한 특별한 이해를 가지며 이름의 시작 부분에있는 경우 이 아니며은 사용자가 지정한 INITIAL_CONTEXT_FACTORY를 사용합니다. JNDI의 다소 실망스러운 부분.

로그에 표시된대로 정확하게 이름을 조회하면 올바르게 작동합니다. 코드에서 다음

INFO - Jndi(name=WidgetBeanRemote) --> Ejb(deployment-id=WidgetBean) 

:

Properties p = new Properties(); 
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 
// set any other properties you want 
Context context = new InitialContext(p); 

Object o = context.lookup("WidgetBeanRemote"); 
+0

와우 덕분에 예를 들어,이 로그 메시지 그래서. 나는 얼마 동안 이걸 가지고 싸웠다. 특히 openEjb로 테스트하고 Tomee에 배포 할 때 모두 조회 할 수있는 이름을 찾으십시오. – AmanicA