[jboss-user] [JBoss Seam] - Question on Seam example

gus888 do-not-reply at jboss.com
Thu Aug 10 09:44:41 EDT 2006


Hi Peter(petemuir) and other friends,

I have a question in the seam example. I found there are two different ways for one session bean (event, conversation and session) calling another session bean. One way is inject a session bean in a stateless bean and call another session bean. The other is inject a session directly into another session bean and call the session bean. I am wondering whether the two way are equivelent or not, and at which situation one way is better than the other way. Thank you so much in advance. The two way example codes are as follows:

One way:@Name("projectFinder")
  | @Stateful
  | @Scope(ScopeType.SESSION)
  | public class ProjectFinderBean implements ProjectFinder {
  | 
  |     @DataModel(scope=ScopeType.PAGE)
  |     private List<Project> projectList;
  | 
  |     @DataModelSelection
  |     private Project selectedProject;
  | 
  | 	public Project getSelection() {
  | 		return selectedProject;
  |     }
  |     ...
  | 
  | }
  | 
  | @Stateless
  | @Name("projectSelector")
  | public class ProjectSelectorBean implements ProjectSelector {
  | 
  | 	@In(create=true)
  | 	private transient ProjectFinder projectFinder;
  | 
  | 	public String select() {
  | 		projectEditor.setInstance( projectFinder.getSelection() );
  | 		executeQuery();
  | 		return "findIssue";
  | 	}
  | }
  | 
  | @Name("issueFinder")
  | @Stateful
  | @Scope(ScopeType.SESSION)
  | public class IssueFinderBean implements IssueFinder {
  | 
  | 	public void setProject(Project project) {
  | 		this.project = project;
  | 	}
  | 
  | 	public void executeQuery() {
  | 		...
  | 	}
  | }
  | 
The other way:
@Name("projectFinder")
  | @Stateful
  | @Scope(ScopeType.SESSION)
  | public class ProjectFinderBean implements ProjectFinder {
  | 
  |     @DataModel(scope=ScopeType.PAGE)
  |     private List<Project> projectList;
  | 
  |     @DataModelSelection
  |     private Project selectedProject;
  | 
  | 	public Project getSelection() {
  | 		return selectedProject;
  |     }
  |     ...
  | 
  | }
  | 
  | @Name("issueFinder")
  | @Stateful
  | @Scope(ScopeType.SESSION)
  | public class IssueFinderBean implements IssueFinder {
  | 
  | 	@In(create=true)
  | 	private transient ProjectFinder projectFinder;
  | 
  | 
  | 	public String select() {
  | 		project = projectFinder.getSelection();
  | 		executeQuery();
  | 		return "findIssue";
  | 	}
  | 
  | 	public void executeQuery() {
  | 			...
  | 	}
  | }

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3964368#3964368

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3964368



More information about the jboss-user mailing list