Discussions

General J2EE: Need some help about J2EE design-decisions, please!

  1. Ok, it’s difficult to find a starting point, but here we go...

    Scope:
    ------
    I work at a company that takes over the billing-risk for other companies towards their debtors.
    My department develops software that supports the other departments in the company.
    The current software is made with a 4GL tool called Magic Developer 8.30 and Oracle, but the software is hard to maintain at this moment and it's difficult to get extra expertise for it. Besides that, the license costs are too high and the vendor dependency is very high. Standardization of the billing is done by specialized companies who also have some web-services available.



    The IT-manager wants a total rebuild and has made the following IT/business moves:
    1. He invested in Linux-servers (=servers are running Red-Hat).
    2. He wants to move the software-development to Open-Source.
    3. He wants to be "service-orientated" towards his partners/clients.
    4. He wants to use the oracle 9i database, because they already invested in that.

    This means that:
    a).Net is not an option
    b) Upgrading to a better version of Magic is also a No-No.

    As you can guess, Java/J2EE is the option with the most potential. And that's why the IT-Manager has put me in the position to decide how the architecture is going to be (because I'm the most experienced java guy up there).


    This brings the following difficulties to the table:
    1. We are dealing with 4GL developers, so they have little or no experience with programming.
    2. Although I have experience with servlets, JSP, JDBC and XML. I need some feedback, because I don't have enough architectural knowledge.

    There is money available for training and some software-investments.

    I have a couple scenarios in my head:
    1. Building around lightweight frameworks as Spring, Hibernate, Tapestry/Webwork, etc…
    2. Going Standard J2ee-> EJB 3 (JBoss), Jsp, Servlets
    3. Combine those two?

    I'm also allot reading about the SOA (besides the hype-buzzword) concepts.

    So I have the following questions:
    1. Because the lack of web-experience of the developers and the high demand on the GUI client-side, I had thoughts on designing the client-side with Swing. The web-based applications will be done by me (with the best suitable frameworks/tools). In this case the developers don't have to master the web-client side.
    Q: Is it possible to use web-services or EJB's at the deployment layer and use a swing thin-client at the presentation layer?

    2. Is it an option to design all the logic on the deployment layer as web-services, so that I don't have to use EJB's?

    3.Q: Is it wise to invest in a Service-oriented Architecture model if an application is build from the ground up?

    4.Q: Is it wise to take the risk to invest in EJB3-training and using this technology, even if the technology is not implemented by most of the vendors, yet?


    Thanks,

    Ricardo
  2. Q: Is it possible to use web-services or EJB's at the deployment layer and use a swing thin-client at the presentation layer?
    Swing thin client is never recommended to be bundled with web application. Maintenance issues always arise.
    2. Is it an option to design all the logic on the deployment layer as web-services, so that I don't have to use EJB's?
    Yes, this is possible, you may put all business logic to your web services. But don't put in EJB's !
    3.Q: Is it wise to invest in a Service-oriented Architecture model if an application is build from the ground up?
    Yes, it is .. We have done a complete revamp of our POS (Point of Sale) software. It works great for us.
    4.Q: Is it wise to take the risk to invest in EJB3-training and using this technology, even if the technology is not implemented by most of the vendors, yet?
    NO!, not recommended to invest.

    The best architecture, that we follow was

    Spring (Web Works) Front End (GUI),
    ORACLE 9i Back End
    Web Services as centeral control center
    Hibernate 3.0 As Persistence Layer

    What we gain from this is that, we only revamp our POS web console, and now we be able to provide this functionality to our vendors as well.

    Shahzad Masud
    (Solution Architect)
  3. Hi Masud,

    Interesting solution to look at, thanks...
    Swing thin client is never recommended to be bundled with web application. Maintenance issues always arise.

    What maintenance issues will arise? If the web-application is only for external sources/customers and the swing client is only for the internal employees where more rich-UI interaction is needed, than I think we have a 2 seperate applications, or isn't this the case?

    Ok, assume that I choose your development route, what will be the anwser to the following questions:
    1. Alot of developers say that, clients should not use web-services to communicate with the server-side of the same application.
    a.Q: Is this done with JSP/servlets on your side or did you use web-services?
    b.Q: If you did use web-services, Do you have some arguments agaist the statement?
    2.Q:Is it wise to invest in a Hardware based XML-accelerator?

    Thanks,


    Ricardo
  4. What maintenance issues will arise?

    1) You will have to develope same functionality for two interfaces.
    2) You require problem solving skill resources for both swing & web interfaces.
    3) Change in a minor module will always be doubled. This normally happen, when a revamped product is shown back to management. There are more than 70% chance of adding new functionalities or changing some existing functionalities during demo of a revamped product. Although you have finalized the specs in the start of this revamp.
    If the web-application is only for external sources/customers and the swing client is only for the internal employees where more rich-UI interaction is needed, than I think we have a 2 seperate applications, or isn't this the case?
    I guess, I must disagree with this. A web interface, what you'll require for a user (A browser - Internet Explorer or Netscape) for a swing rich client (Complete installed application, along with JRE). Rich-UI is always attracting, but I guess we can achieve that in our web application as well. AJAX is one of those features available on web application, that will let your application more like a desktop application.
    1. Alot of developers say that, clients should not use web-services to communicate with the server-side of the same application.
    Infact, by saying web services, I am assuming that we are developing three layers,

    a. Front end web service layer (XML)
    b. Back-end Proxy and Adapter Layer (Methods used by front end web service layer) JAVA
    c. Core Persistence and Business Layer (Core Business Logic & Persistence Information) JAVA.

    Your application will be communicating with either XML layer or Proxy & Adapter Layer.
    a.Q: Is this done with JSP/servlets on your side or did you use web-services?

    We did that using Java Struts and were using Back-End Proxy & Adapter Layer for our business logic.
    b.Q: If you did use web-services, Do you have some arguments agaist the statement?
    I didn't get this point?
     
    2.Q:Is it wise to invest in a Hardware based XML-accelerator?
    Hardware based XML-Accelerators are only required if you want to parse XML very frequently and use web services. I am suggesting you to use the back-end proxy adapter layer. For a fast XML processing, create an object pool of XML parsers and increase your server hardware resouces.
  5. Thanks Shahzad,

    Can you please tell me more about the web-services, because the reading about it (in books)confuses me.

    Q: Did you use the standard library as Service-connector or an implementation like Axis.

    Q:Why didn't you need a JMS-like mechanism (like ActiveMQ) to guarantee the dilivery and something for WS-RM or why didn't you need something like Mule to act like a Enterprise Service Bus?