KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The Java EE 6 Tutorial says: To improve performance, you might choose a stateless session bean if it has any of these traits: The bean’s state has no data for a specific client. In a single method invocation, the bean performs a generic task for all clients. For example, you might use a stateless session bean to send an email that confirms an online order. The bean implements a web service. Singleton session beans are appropriate in the following circumstances: State needs to be shared across the application. A single enterprise bean needs to be accessed by multiple threads concurrently. The application needs an enterprise bean to perform tasks upon application startup and shutdown. The bean implements a web service. But what to use if: no state has to be shared across the application a single enterprise bean could be accessed by multiple threads concurrently no tasks on startup or shotdown need to be performed Say for example I have a login service with the following interface: public interface LoginService { boolean authenticate(String user, String password); } Should it be annotated with @Singleton or @Stateless? What are the benefits of the one and the other? What if LoginService needs to get injected an EntityManager (which would be used concurrently)? Addition: I'm thinking about the Java EE counterpart of Spring service beans, which are stateless singletons. If I understand that correctly the Java EE counterpart are @Stateless session beans and @Singleton Beans are used to configure the application at startup or cleanup at shutdown or to hold application wide objects. Is this correct?
Tags (comma-separated)
Save Edits
Cancel