Since you are so abstract, I will do it too. If we remove all buzzy words like "Portal", "Enterprise Apps", etc. .... In the end, we have three web applications and a common library or framework (Enterprise App).
Seeing his application is as simple as possible. You have three developers who need to develop three web applications. You will provide some generic code useful for building your applications. The model you will use depends on what code you provide them.
1.- You will only provide some utilities and a common business code. Maybe the classic library fits your needs. (In Java EE environments, you should consider how you can take advantage of persistence level 2 caching, which shares a Factory session for a single data warehouse)
2.- You will provide general services like persistence, cache, security, audit, etc. For the first option, you will need a service level. You will have a general condition, so you only need one instance.
3.- More common is that you provide some business APIs and a service level for shared services.
You do not specify any requirements that force you to use a more complex solution for your scenario.
EDIT:
About whether rmi (ejb-client) or webservices is preferred. I always use rmi to geographically close applications. It is simple, and the protocol is much faster than web services (you can read a lot of comparisons on this topic, looking for rmi webservices performance on Google).
Rmi, on the other hand, is more sensitive to network latency, requires special firewall configurations, and this is more closely related to web services. Therefore, if I pretend to offer services to a third party or connect geographically sparse servers, I prefer web services or even REST.
Due to the last question, at the beginning there is no difference in deploying one or ten applications on one server. The deployment fee will be low compared to the overhead for using the application. Of course, you should accept this as a general assumption. Obviously, the size and deployment methods of your applications will affect memory consumption and others.
You must bear in mind that these decisions can be easily changed as necessary. Since I said that you can start with a simple solution, and if you have a problem deploying your applications, you can easily rebuild your ears.