My question might seem a little weird and I know it would be difficult to answer without knowing minute details on project, but I thought nothing wrong giving a try. I might get good suggestions on the technology and design pattern that can be used in our upcoming project. I am trying to include as much detailed description as possible. Can you all please suggest the design pattern(s) and technology(ies) that could be better to use.
1. JDK version is 1.4 (Yeah thats right). We might migrate to higher version soon but as of now it is 1.4
2. Database is Oracle 10g and application server used is OC4J 10.
3. The application is a web application with Rich UI. It basically stores information in database and retrieves it for add, edit, delete, view, search and has a module for reports.
4. We are planning to handle as much data as possible from Java. Ex. Hibernate or iBatis...
5. Production environment has load balancer. Because of this we have faced a lot of problems in past regarding session handling and using sessions. We even had to rewrite some apps to use URL mapping thereafter. What good solutions can be there to avoid this situation using the latest technology?
6. We have to generate reports in Word, Excel and PDF formats. (I know most of the apis that support latest microsoft versions need jdk1.5 but in case someone is aware of the API that is good and goes with JDK1.4 supporting latest microsoft versions?). We use JXL and have tried Apache POI in projects till now but with JDK1.4 none of them support latest microsoft office version.
7. We have used filter design pattern in all earlier projects because of 2 reason: One is to handle database connection and close it properly and another is we require sso login to access any page in application. My question is that to handle problems like database connection remaining open even after closing each and every object explicitly, in a distributed environment (load balancer) and having sso to login which other design patterns can be looked into? Is filter a good use here? These are the most common problems we face in our applications.
8. Till now we have used JSP, Servlets, Struts 1.x and Hibernate 3.0 (mostly just to write connection part and at max 1 or 2 queries, rest all is done using traditional JDBC queries most of the time). Hibernate is not used as effectively as it should have been and we are planning to use it in an effective manner this time. But the main thing I would like to know is which open source technologies other than Struts can be used in a project having Rich UI and validations? Is it good to use Hibernate sessions in a load balancer environment? What other technologies can be used effectively in such situation (or might be a combination of technologies)? 9. FYI, before I forget to mention, most of the pages in this application would be oracle portlets developed using PDK. For ease of development, we develop it on MyEclipse as a JSP file and then convert it to a portlet.
I have tried to cover as much information as possible. Can you all please suggest the technologies and design patters that can be used to solve our existing problems? What other things can be kept in mind while designing an application.
Object-oriented design patterns are concepts for designing interactions between "objects." Design patterns, however, are independent from any "technologies." Your description includes many technologies.
In regards to your load balancer problems with session handling, a detailed description of the problem(s) and the current design would be required to determine possible "good solutions" using "latest technology." A detailed description of the chosen load balancer algorithms and network architecture would be needed as well.
I've never heard of the "filter design pattern." Is this something you created yourself?
It sounds like you have an organizational problem, not a technical problem, i.e. you are missing a software architect. He/She would be able to answer many of your questions and guide the application design process.