To a client, a message-driven bean is a message consumer that implements some business logic running on the server.
The most visible difference between message-driven beans and session beans is that clients do not access message-driven beans through interfaces.
Client components do not locate message-driven beans or invoke methods directly on them. Instead, a client accesses a message-driven bean through, for example, JMS, by sending messages to the message destination for which the message-driven bean class is the message listener.