Question

I have two Java EE web apps that are going to be published on the same physical server, but on different network addresses.

APP A: Listens to a port on a public IP address and makes synchronous invocations to app B if necessary.

APP B: Listens to a port on a private IP address and makes synchronous invocations to app A if necessary.

enter image description here

For connecting APP A with APP B, I am considering the following alternatives.

  • RMI
  • Message Queue
  • Lightweight ESB

Please tell me if you see any clear advantage supported by facts on any of them, or if there's another technology I should consider.

Was it helpful?

Solution

Every integration method has its advantages and disadvantages, and its really hard to propose one based only on what you have provided, but here is some hints:

  • Quick and Easy: if you don't mind high coupling, and major changes in the applications are not expected (like DB engine, or replacing on with non-Java system), you can go with RMI or even DB Procedure calls.
  • Changes, Extendability and Scalability: if the applications are expected to be changing more than rarely -and they tend to do-, ESBs or Message Queues would be great, since they would produce a loosely coupled architecture. This would also make room for extendability (like if you would have a new application C, that would need to invoke A or/and B)
  • HTTP Availability: If HTTP communication is available between applications, Web Services is an excellent integration method.
  • Developers Knowledge: What technologies you/the team are familiar with.

These are actually small hints, if you wish to go further in your research, I strongly recommend reading Enterprise Integration Patterns the book.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top