2012-10-14 1 views
0

저는 EJB 3.1의 새로운 기능으로 JBoss Application Server 7.1에 대한 기본 지식을 얻으려고합니다.JBoss 7.1의 InitialContext.lookup() 매개 변수

현재 나는 정말로 - 기본적인 문제에 갇혀 있습니다. 서버의 Bean이 다른 Bean을 사용하려면 InitialContext.lookup() 메소드를 사용해야한다. 문학을 보면 다음과 같은 전화를 발견했습니다.

TheBean = (<Interface>) new InitialContext().lookup("<NameOfTheBean>/local"); 

그러나이 호출은 저에게 효과적이지 않습니다. 때마다 나는이 같은 오류를 얻을 :

javax.ejb.EJBException: javax.naming.NameNotFoundException 

해결책을 찾는 시간 후에 나는이 같은 다른 전화, 뭔가를 사용하는 코드 예제를 발견

TheBean = (<Interface>) new InitialContext().lookup("ejb:/<Package>//<NameOfTheBean>!<Package>.<Interface>"); 

음이 솔루션은 나를 위해 작동

하지만, 그 질문은 왜? 다른 사람이 잘 작동하는 동안 첫 번째 호출이 예외를 생성하는 이유를 아는 사람이 있습니까?

고맙습니다.

+0

정말 JNDI 조회가 필요합니까? '@ EJB'도 제대로 작동하지 않을까요? –

답변

2

왜? 다른 버전의 JBoss에서는 JNDI 네임 스페이스에 다른 기본 이름을 가진 Bean을 배포합니다.

ctx.lookup("BeanName/local") 

은 JBoss 4.x.x 이상에서는 적합하지만 JBoss v7에서는 그렇지 않습니다. 당신은 당신의 콩 JNDI 이름, 예를 들어 에 매핑하는 방법 JB7의 server.log에 당신을 볼 수 있습니다 (자바/제이 보스/수출/... 그리고 두 번째 연속 호출에 해당하는 방법) :

13:57:05,550 INFO    [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC  service thread 1-4) JNDI bindings for session bean named ProductionHistoryBean in deployment unit deployment "navi-ejb3.jar" are as follows: 

     java:global/navi-ejb3/ProductionHistoryBean!navi.ejb3.production.history 

.ProductionHistoryRemote 

     java:app/navi-ejb3/ProductionHistoryBean!navi.ejb3.production.history.Pr 

oductionHistoryRemote 

     java:module/ProductionHistoryBean!navi.ejb3.production.history.Productio 

nHistoryRemote 

     java:jboss/exported/navi-ejb3/ProductionHistoryBean!navi.ejb3.production 

.history.ProductionHistoryRemote 

     java:global/navi-ejb3/ProductionHistoryBean 

     java:app/navi-ejb3/ProductionHistoryBean 

     java:module/ProductionHistoryBean 
+0

"bean"호출 방식이 변경되었음을 알지 못합니다. 고마워, 이해해! – FredFloete