セッションBeanのインスタンスを返すカスタムELResolverを作成しました。私はJNDIによってBeanを探します。 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;
}
これまでのところうまくいきます。さて私の質問:
ルックアップされたbeanにはどのスコープが設定されているのかということになります。 SessionScope Beanのように常に動作します。
このような構成にスコープを設定する方法はありますか? (例:RequestScopeまたはViewScope)
カスタムELResolverから返される要素の「デフォルトスコープ」とは何ですか? SessionMapに保存されているだけですか?
バージョンスタック:
OracleのJDK 1.8.0_91のx64
のJava EE 7(Wildfly 10)
クロサギ科基づいて、JSF 2.2
EJB 3.2
CDI 1.2(ウェルド2.3.4最終)