세션 Bean의 인스턴스를 리턴하는 사용자 정의 ELResolver를 작성했습니다. 나는 JNDI에 의해 콩을 찾는다. getValue 메소드는 다음과 같습니다.사용자 정의 ELResolver에서 리턴 된 인스턴스의 범위 설정
@Override
public Object getValue(ELContext ctx, Object base, Object prop) {
if (null == base) {
Object bean = resolveBean((String) prop);
if (null != bean) {
ctx.setPropertyResolved(true);
return bean;
}
}
return null;
}
private Object resolveBean(String beanName) {
\\Search in a RegistryService if such an bean exists
for (ModulDescriptor md : loader.getDescriptors()) {
for (MenuItem mi : md.getMenuItems()) {
if (mi.getElBeanName().equals(beanName)) {
Object bean = null;
try {
\\If exists lookup and return
bean = InitialContext.doLookup("java:global/ModulA/" + mi.getJndiBeanName());
} catch (NamingException e) {
e.printStackTrace();
}
return bean;
}
}
}
return null;
}
이것은 지금까지 정상적으로 작동합니다. 지금 내 질문 :
조회 한 콩에 어느 범위가 설정되어 있는지가 중요하다고 생각됩니다. 그것은 항상 SessionScope 빈처럼 작동합니다.
이러한 구성에 범위를 설정하는 방법이 있습니까? (예 : RequestScope 또는 ViewScope)
사용자 정의 ELResolver에서 반환하는 요소의 "기본 범위"란 무엇입니까? SessionMap에 저장됩니까?
버전 스택 :
오라클 JDK 1.8.0_91 64
자바 EE 7 (제이보스 10)
인 Mojarra JSF 2.2
을 기반 EJB 3.2
CDI 1.2 (용접 2.3.4 최종)