We plan to implement our new system with Java. Due to the system's nature, which needs to be interacted with various intranet/extranet/internet systems and share same logic (with little tweaks) with various outside system, we plan to move business logic out of front-end, make it as a service, and plan to use JMS to interconnect the presentation layer and business logic layer. Presentation layer sends a request, business logic layer sends response for the processing result.
After doing a small POC system, we found this way very promising. But the Oracle guys (we plan to use weblogic for both ap server and JMS server) says there will always be performance issue, since message queue's nature is not for request-response pattern.
Is there any suggestions about the Oracle guy's opinion? We are fairly new to Java world (totaly no experience about java and have to implement this system in-house, no outsourcing option), and although we tested our POC with about 300 req-resp per sec (which seems to be enough for our system), we still cannot sure if there will be definitely a performance degradation after system online...
Definately not a performance issue as such.
You lose out a little because of the transactional nature of JMS. The message from the presentation layer must be recorded in the log before the business layer can start processing, similarly the reply must be logged before presentation layer can begin processing the reply.
However this small disadvantage is more than compensated by the ability to process in parallel during heavy loading, and the ability to safely queue requests under extreme loading. (RPC applications just plain dies in these circumstances JMS just slow down).
The major problem is dealing with errors in an asynchronous environment. If your presentation layer sends a request how long should it reasonably wait for the reply before assuming something has gone wrong at the business server end? If the presentation layer bombs out what are you supposed to do with the reply message, especially if it was an update of some sort? All these issues can be dealt with, but, you need to think about how.