I have this scenario.
We have a huge software system (actually country wide, because is a national custom) and we are writing the common ideas for an architecture based on EJB3 with Oracle related technologies.
Here comes to our minds the following questions (all about EJB3 and his concerns) :
1 - If we have a common module, to be implemented as a service in SLSB and packaged into an EJB-JAR file: We need to include this module in every application who needs it? What if i make a change in this module? I will need to redeploy every application again? Is there another solution?
This scares me as we have hundreds and even thousands of applications, who depends on common modules.
2 - The same question goes to entities. Our lives would be simpler if we package every set of entities in each ear who uses them. But.. This is correct? Even across servers? There isn't a way to package entities in one place and provide services with Façades? What is the behavior if i package the same entity, in multiple ears, distributed across servers and accessing the same database? Or.. where should i read about this?
3 - As far as i know, there is no way to intercommunicate multiple ears via resource injection (as the EJB3 spec does not force this to be an implementation). Even if two ears are in the same server, do i need to depend on RMI? Am i missing something?
4 - Is there a way to implement some kind of auto discovering of services? like Spring, but with EJB3? The point here is: if we access from one EAR a EJB SLSB in another EAR , we need to specify all the properties for that access, to say in jndi.properties. Changing the service location would force me to rewrite all jndi.properties along all applications. There isn't a registry?. I'm talking about multiple servers. (EAR 1 : server 1, EAR 2 : server 2)
Thanks everybody in advance.