I currently have the opportunity to lead the design and implementation of a web-based application that has some interesting requirements?and I would like to solicit ideas on solutions?.
Here is some example background:
-a standard web based application that allows a user to manage and navigate through various functionality based around a rental car.
-The user can search based on various attributes of the car.
-The web pages can retrieve information on a car?s availability, status and other attributes.
-The user can change and save basic attributes on a car.
-The system has to support an undetermined, but assumed to be very large, number of users 24-7, so the system will have to support clustering, load-balancing, failover, etc.
?fairly simple so far?
This is the requirement I need ideas on?
-The integration of a ?legacy? system which ?pushes? the real-time current location of moving cars. There is no way to query the legacy system for the car. The number of active car?s can easily reach into the thousands. The ?push? was originally designed and used for a thick client that could easily accept the ?push? of data and display on a screen..
I have significant experience with web applications and the J2EE framework, though limited exposure to JBoss and Hibernate. Most of my experience has been with WebLogic and ?classic? approaches with EJB?s, using entity EJB?s for persistence. Since I am starting with a clean slate with this company, I have all options open to me. I am looking at JBoss and Hibernate as components of this new framework, so I thought that I would start here.
With all of this in mind?.
I would like to know what other people think on integrating the ?pushed? location data into the web application. I obviously need a place to ?store? the location data so that user web requests coming in can find and incorporate the data in the response back to the user. If I didn?t have the real-time ?pushed? data to contend with, the ?Car? would be a simple entity/POJO that would be used in the EJB/Hibernate persistence framework. When I include the ?pushed? data into the equation, my first reaction is to make the ?location? (i.e. lat/long) simply an attribute of Car POJO and have a listener implemented on the CAR class or MDB update the POJO. I?m not sure if this would work or is the best solution.
I?ve also thought about having the pushed data update a database, then retrieve the location in a traditional manner, but it seems like overkill for data that will grow stale very quickly.
I?ve also thought about keeping the location data separate from the POJO in a cache of some sort that would be keyed on the unique id of the car?but this seems ugly to me.
I?m struggling on finding similar experiences in a design like this and seem to be running in to mental obstacles when thinking about this running in a clustered, possibly distributed, environment. I?m guessing that a combination of a J2EE environment like JBoss and possible features unknown to me may be available in a framework like Hiberate.
Thanks in advance for any ideas, links or direction?.