Feb 18th, 2010, 03:28 AM
Ideas on client/operator application design
In 5 months I developed an application that is used by two classes of users - clients and operators (it's a helpdesk application).
At the moment, the code is inside one single netbeans application. I use spring, spring mvc, spring security, hibernate and tiles.
Clients and operators have different login forms and different web forms. It was quite difficult to make things work with spring security (the two login forms and other stuff).
I was thinking maybe it would be a good idea to make it two applications - ie to split the application into two parts because it would make a lot of things easier.
But now I realized there are parts of code (for example definitions of the business classes and hibernate mappings) that would have to be somehow shared.
So now I am confused. How do I deal with this?
What's your experience?
Thank you in advance for your ideas.
Feb 18th, 2010, 04:45 AM
Do you mean to say that view and controller layer is different for both the type of client however model layer is same? If yes, I think one of the approach could be that you still can have two different project for view and controller part and model layer can be encapsulated using/like EJB’s. This way, model layer can be made common to both the projects.
Feb 18th, 2010, 05:57 AM
Yes. Both clients and operators operate on the same database and therefore also on the same business level objects / classes. But the operations are different - i.e. the service layer is different.
I am not using EJB because I use Spring... So how do I share the common blocks?
Feb 18th, 2010, 10:09 PM
As you said only BO’s are same. So, I think you can have separate simple java project for BO’s and use that as “shared library” in projects wherever you require it.
Do not use the BO jar in the projects directly since if any changes occur, all those depends projects needs to be rebuild and redeployed however if you use as shared lib, only lib needs to be updated and only affected projects needs to be redeployed.