Strictly speaking, only answer b should be correct. In the EJB 2.0 specification, the Bean Provider is just someone who provides EJBs, and thus, does not need to link beans together. However, the Application Assembler is a person who binds beans together in order to build up a concrete application. Agreed, sometimes the Bean Provider and the Application Assembler are one and the same person, and thus, the roles are somehow mixed. The only mention about the Deployer having something to do with the ejb-link element is made in section 20.3.3 of the spec where it is stated that the Deployer should bind the EJB reference to the home of the EJB specified as the link's target.
To sum up, the Bean Provider only provide isolated beans and does not wire beans together. Thus, no need to mess with ejb-link. The Application Assembler is the one who ties all beans together, and thus, he needs to provide the ejb-link element. The Deployer's role is limited to binding references to the respective EJB homes for each ejb-link element.
In the spec it mentions that the bean provider must define the relationships of the beans �The entity Bean Provider must specify in the deployment descriptor those persistent fields and relationships for which the Container must handle data access.� P127
Hope this helps.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com