I need a small help in decideing on the technologies that i need in my project. We are working on a project that for sure needs an application server to handle the scalability and security and performance but our clients are adamant on not using application server (Initially we were planning to use EJB's). So i just want to know how can i manage good peformance, scalability, security etc. etc...without using the application server.
Just to get the semantics out of the way, assume that "application server" means a J2EE Compliant Application Server. Then one possibility is Tomcat/Spring/Hibernate, or any number of micro-container/web servers that do HTTP work for you. The specifics would depend on the application requirements (i.e. must be HTTP based, browser based clients, fat clients, etc ...)
Better would be to get their "real" objections to application servers on the table and address those. My guess would be that your (engineering) perspective of what an application server is and your client's perspective are quite different.
that is what we are also trying to understand. we have recently joined the project and this decision was already taken. The answer we have for now is that they don't have the infrastructure to support the application server.
So i just want to know how can i manage good peformance, scalability, security etc. etc...without using the application server
Your alternatives are really using some application server alternative, such a Spring, or write your own code to do a simmilar job as the application server.
I'd ask your clients what their objections are. They might be valid, a full-blown application server could be overkill. Or they might just have read some on some psedo-technical marketing site that application servers are no longer the way to go.
If the client has such a specific non-functional requirement they should be able to explain why it is so important. To my mind though when presented with non-functional requirements such as security, scalability etc. an application server is one of the components that jumps to the foreground.