I have problems deviding my application in differnent ears, to use it on a distributed environment.
At the moment I have one EAR file including the complete application (session beans, entity bean in a JAR file and all the web stuff in a WAR file).
Now I want to devide the application in two separate ears.
1. One for the business logic (APP-EAR)
2. One for the web frontend (WEB-EAR)
I devided it so far as followed:
+--- session beans with business logic.
+--- entity beans
+--- persistence context
| +--- session beans for Seam.
| +--- jsf pages, config files etc.
+- Client-JAR of APP-EAR
+--- including the remote interfaces and entity beans to connect to EAR1.
The entity beans have the seam annotations @Name and @Scope, and are the same classes in both APP-EAR and Client of APP-EAR.
The APP-EAR has no seam.properties so Seam ignore it at deployment (as expected).
The Client of APP-EAR has the seam.properties and so Seam register the entity beans on deployment of the WEB-EAR.
But not all entity beans will be registered as Component and the web application fails, if I try to use an IN-annotated attribute, with the message "RequiredException: In attribute requires value for component".
I figured out that only parent classes of an inheritance are missing after deployment.
So if I have class A and class B (which is extended from A) B is registered as compoment, A is missing. If I put A in the compoments.xml the IN-annotated attribute can be resolved.
All worked fine as all was together in one ear.
So do I miss something? Why are some classes ignored?