I have an intranet web application for handling our companies clients. After the user
searches for and selects a client, the user to brought to the ?Client Master? page. This
page consists of a tree control on the left and an iframe on the right. As the user clicks
a node on the tree the proper page corresponding to the node is displayed in the iFrame.
Right now I have declared by Client object to have session scope.
@Table(name="FBCLIENT")
| @Name("client")
| @Scope(ScopeType.SESSION)
| public class ClientVO implements Serializable
| {
The actions for the pages are handled by a stateful session bean where I try to load the
entire object graph for the client when the Client Master page is loaded
@Stateful
| @Name("clientAction")
| public class ClientActionImpl implements ClientAction
| {
| //(a)PersistenceContext(type=PersistenceContextType.EXTENDED) EntityManager em;
|
| @In(create=true) private ClientService clientService;
| @In(required=false) @Out(required=false) ClientVO client;
| @In @Out(required=false) PolicyVO policy;
|
| @In(required=false) ClientVO subClient;
| @In(required=false) MasterSearchResultVO searchResult;
|
| @In(required=false) @Out(required=false,scope=ScopeType.SESSION) ClientVO
parentClient=new ClientVO();;
| @Out(scope=ScopeType.SESSION) Boolean organizationFlag=false;
| @Out(scope=ScopeType.SESSION) Boolean personFlag=true;
| @Logger Log log;
|
| @Begin(join=true)
| public String lookupClientFromSearch() {
| policy=searchResult.getPolicyVO();
|
client=clientService.findClientByIdFetchGraph(searchResult.getClientVO().getId());
| parentClient=client.getParentClient();
| if (client instanceof PersonVO)
| {
| organizationFlag=false;
| personFlag=true;
| }
| else if (client instanceof OrganizationVO)
| {
| organizationFlag=true;
| personFlag=false;
| }
| else
| {
| System.out.println("The Client is a only a ClientVO");
| }
|
| log.info("In Client Lookup(log)");
| return "success";
| }
| @End
|
|
I use session scope because while the user is on the Client Master page all pages loaded
in the iFrame would need access to the Client object. I have found that by doing this I
run into a lot of Lazy init errors. I basically have to get the Client key and fetch the
entire Object graph. This works ok for now, but I fear that this could be a problem in the
future. Plus from my reading about conversations it looks like I would not have to worry
about the Lazy Init errors if the Client object was in conversational scope.
I have a few questions about this:
1. Is there a way to properly end a conversation when there is not really any linear page
flow? In other words, I understand how a conversation would work in a shopping cart or
wizard where a user is moved sequentially from one page to another. However in my case
where there is a tree control and iframe the user could navigate to numerous pages in any
particular order. How would I end the conversation when a user chooses to exit the Client
Master Screen?
2. In cases where numerous operations can be performed on the client from various
unordered screens would it be better that I stick with Session scope? In other words is
the conversation scope best suited for wizards and ordered/sequential page navigation, or
can I some how use in Client Master page in conversational scope. Or, am I better off
sticking with Session scope.
3. When a converstion or session ends in the iframe is there a way to show the error.xhtml
page in the parent browser window rather than the iframe?
4. Are 1-4 hour sessions/conversations acceptable for Intranet applications? Assume that
this is an intranet application. It could have up to 200-400 concurrent users but never
any more that that. They will need long running sessions or conversations. When an
employee walks away from the application for one or two hours they don?t want to have to
sign back into the application
I am trying to learn as much as possible, so any help would be appreciated.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4084041#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...