The best choice of course will depend on your specific needs.
For instance, will you application require distributed transactions or 2 phase commits? Do you have any security requirements, such as authentication and authorization of services? How will your application handle failures, such as network failures or hardware failures, while tasks are being processed? Is there a specific ordering of tasks that must be synchronized, such as task A must be performed before task B? What are the dependencies between the different clients?
As you can see, you'll need to analyze all the other aspects of the system before determining the ideal architecture. Performance is just one aspect of the design.
Originally posted by Allan Sam:
I need to conceive an application which has to get input from a POS terminal or some other server. The application has to communicate with another module residing in a mainframe, get the results and output the response back to the POS terminal. The components with which the application communicates may be non-java components. Please recommend the best architecture for this system. This a performace critical application with the application needing to support 10000+ client hits at a time. Considering these, what technology is best suited? Simple TCP server socket/WebServices/Servlet/CORBA/RMI??