Hello Java and XPages Fans
During our work for the myWebGate 2.0 OpenNTF Edition i was faced with a very simple Problem. I had to access a public method in one of our managed beans. This managed beans are designed to act as session facade. So the bean name is directory bean and the scope is session. The ClassName is based on our internal guidlines DirectorySessionFasade.
In this class, is a method called getMySelf() witch gives me some information about my current user in context of the myWebGate Framework. The powerfull thing about managed beans is, that the object exists only one time baed on the scope, in this case one time each session.
For our activtystream implementation I have to acces this getMySelf() methode, because all my relations are stored in the returning object. A short google search doesnt help, but I rember that I’ve ready a pattern in the ExtensionLibrary, that maby can help. An voilaz there it was, written by Phillip Riand, I found some thing that I changed to this for my situation:
public static final String BEAN_NAME = “directoryBean”; //$NON-NLS-1$
public static DirectorySessionFacade get(FacesContext context) {
DirectorySessionFacade bean = (DirectorySessionFacade)context.getApplication().getVariableResolver().resolveVariable(context, BEAN_NAME);
return bean;
}
public static DirectorySessionFacade get() {
return get(FacesContext.getCurrentInstance());
}
This simple codesnipped gives you the capability to execute DirectorySessionFacade.get().getMySelf(). The DirectorySessionFacade.get() Code calls the get( FacesContext context() and there the inmemory Variable directoryBean can be accessed.
What a simple construct to access the same instance in java as in the SSJS and XPAGES. Thanks to IBM for sharing the ExtensionLibrary as OpenSource.
Martin Rolph (@MartinRolph)
March 12, 2013 at 4:41 pm
I love this tip! Makes beans even more powerful.
corejavatraininginhyderabad
May 3, 2017 at 3:48 pm
Hi,
Very nice and informative article. Thanks you for sharing this useful information. Keep posting.