J2EE Design Approach

Hi folks,
I am not new to Java, but new to J2EE. I would like to tap your creativity for suggestions for a design approach. Basically, I would like to create a basic JSP/Servlet-based web application that interfaces with an Oracle database. I would like the JSP pages to be almost completely bereft of logic (i.e. use HTML and JSP tags only), with one or two very small snipplets. I would like the servlets to serve as "traffic cops"; that is, state machines that merely redirect to JSPs.
My most pressing question is the following: as with one of my last J2EE projects, I would like to create a 'DatabaseManager' class. This class would basically "wrap" the JDBC calls to establish and maintain a connection, as well as provide convenient methods for querying (i.e. have a method that simply takes in a String represting the query), and returns back a data structure (another class) that wraps the "ResultSet" object (I'll call it "QueryResults", for now).
Should the DatabaseManager and/or QueryResults classes be EJBs?
Thanks!
Tom

Use of EJbs would depend on the scalability , security of your application.If yours is a very small scale application with 10 - 15 users , EJbs wont be a better choice.However if you need to set variety of security constraints like method level privileges and all , you can go for them.Also complicated transactions should encourage you to use EJbs.
Just a thought.
thx.

Similar Messages

  • Design approach help : BIC Mapping Tool Conversion

    Hi All,
    Design approach:
    we know that BIC mapping tool can be used for EDI to XML conversion. also i know that its a Any to any converter.
    But we prefer EDI to EDI XML conversion only via this tool and do the mapping in SAP PI as it would be easy to do mapping change if any in PI than redeploy the mapping in module location every time.
    My question is:
    we know that sender file adapter supports FCC for max of 3 hierarchy levels.
    Can we make it a practice of accepting requirements in SAP PI which has complex Flat file structure (more than 3 levels). and use BIC mapping tool to convert the Complex flat file Structure (with more  than 3 levels) into PI required format and proceed with the mapping and Configuration. (Note: hear the assumption is that the organisation has BIC Mapping tool procured for some EDI message scenario's ).
    or is it best practice to ask the Source system to supply flat files strictly in Header,with 1 line item format?
    Suggestions would be deeply appreciated.
    Warm Regards,
    Senthilprakash

    >
    > if you are thinking of using only BIC mapping tool for converting flat file to xml and want to proceed with normal configuration without using BIC modules then it is not feasible.
    >
    Dear Suresh,
    I am very well aware of that. we have Seeburger SFTP adapter installed in our PI system. and for EDI conversion we use BIC for converting to XML and deploy the module in the adapter level.
    Now my question is that: weather is it the rite way to start accepting requirement from source which has complex flat file structure (non edi messages) and using BIC module in adapter to convert it into XML and proceed with configuration or better to ask the source system to send the flat file in a format which is accepted by our file adater FCC.
    what are the drawbacks/bottlenecks we see in using BIC module for converting non EDI complex flat files into XML format? in PI
    Regards,
    Senthilprakash.

  • Display problems in IE, using Netlace Designs approach

    Display problems in IE, using Netlace Designs approach
    Could someone please look at
    www.tudo.co.uk/testing/magnification/
    I am trying to adjust some css code taken from Netlace
    Design's website
    for my purposes. The purpose is to enlarge an image on
    'hover' and to
    enlarge some text on 'hover'.
    What I have done works all right in Mozilla/Seamonkey.
    However, in IE,
    the 'text enlargement' does not work at all
    and when I am enlarging the image there is ***in IE*** a
    large grey
    surplus area at the bottom, which looks like a background
    area which has
    turned out to have too much height. I want to get rid of that
    superfluous grey area.
    How can I make sure it works in BOTH Mozilla and in IE?
    Thanks for your help.
    Adrian

    Hi ijmari,
    I checked out that page and don't see any Spry menubar in it.
    I'm assuming you've reverted back or removed it.
    If you still need/want help, please post the URL to the page
    that uses the menubar and demonstates the problem.
    --== Kin ==--

  • JavaBean Models, Command Bean and J2EE Design Pattern

    Hello,
    I have read the available "How To", “Using EJBs in Web Dynpro Applications” where the author mentions that one should use a Command Bean (according to J2EE Design Patterns) so that one can invoke business methods in a Session Bean from our Web Dynpro Application. Well, although, I have read some available articles in the internet about J2EE design patterns, I still have some questions about command beans and its usage in Web Dynpro applications.
    I have developed a WD App which uses EJBs to read data from the DB.
    Let's suppose I only have two tables: BOOKS and AUTHORS.
    Let’s also suppose I have to Entity Beans (one for each table) and a Session Bean with two methods: Book[] getAllBooks() and Author[] getAllAuthors();
    I also have a Command Bean which I imported in my WD App.
    My questions are:
    How should I design my Command Bean?
    Can I have only one Command Bean with two methods each calling one of the methods of the Session Bean?
    Or instead should I design two Command Beans, one for each call?
    In the last case do the methods must be named <b>execute</b> or can I name them whatever I want?
    Furthermore, how should I store the data in my command bean? In instance variables?
    If so, can I use array of a class representing a record in the database table (for instance, classes Book and Author) or do I have to store the data in a generic collection (such as ArrayList for instance)?
    I ask this last question because if I try to store the data in an array when I am importing the Command Bean as a JavaBean model I always get an error.
    One last question: Can the Command Bean execute method directly return the data or should I always store the data in an instance variable an then get it using getter methods?
    I know this questions are more about J2EE Design Patterns and JavaBeans specification than they are about Web Dynpro but I also have doubts about the rules that the command bean must obey in order to accomplish a successful JavaBean model import in WD.
    Some guidance or tips would be highly appreciated.
    King Regards

    I have the same problem.
    Does anyone know the solution?
    Thanks
    Davide

  • Design Approach For Integrating Third Party API's

    Our application requires a lot of third party API's to be integrated with the application.
    What would be a good design approach for the same
    Ritesh.

    I think maybe you should post a little bit more info: What kind of APIs? C++? java?

  • Suggest good book for J2EE Design Pattern.

    Is there any good book for J2EE Design pattern? I know Head First Design Pattern book, but is focuses oncore java. I want to learn in detail with examples J2EE design pattern.
    Please suggest good books.
    Thanks in advance.
    Rahul.

    most j2ee patterns are discredited now. they were mostly workarounds for deficiencies in ejb 1 & 2 specs.
    "core j2ee patterns" is your best bet, but take it with a grain of salt.
    better to learn spring, IMO:
    springframework.org
    %

  • J2EE design patterns vs SAP component model

    Hello,
    does anyone have documentation or articles which makes a link between the J2EE design patterns and the SAP component model ?
    Thanks

    Hi Thierry,
    > What do you mean by assembling DC's into another DC ? Do you mean by using child DC's? Also , the J2EE server DC will have to be in a SC.
    If you create "Java" DC that DC will not have a deployable result on its own. Typically you create a public part with purpose "compilation" (API) and a public part with purpose "assembly". If you define a dependency from an EAR DC or a J2EE Library DC to that assembly public part then the Jar file contained in that public part will be assembled into your (deployable) .ear file or the J2EE library.
    Child DCs are just a means of limiting visibility/scope, similar to ACLs.
    As long as you are working with a "track" each and every DC will be part of an SC. You define a track, you add "developed" SCs, you get a "compartment" where you can create DCs. So each DC automatically belongs to an SC. (But not all DC types produce deployable results, EJB Module/Web Module also need to be assembled into an EAR).
    > is it typical to have an SC dedicated to utility classes?
    Depends on the size of the project/product. I'd start by putting utility classes into some utility package (pure Java). If that gets too large I'd put utility classes sorted by functionality into DCs (Java libraries = jars). If that gets too large its time to think about utility SCs. Otherwise the tradeoff between meta-information and real content might be too much. As the project/product grows the need for refactoring may arise...
    Regards,
    Marc

  • Design approach for XML load into DB table

    The question is more related to find a design approach.
    1. I have a few XML files to load data from. There will be more files which will be loaded into the DB periodically.
    2. Each file populates 4 tables.
    3. After loading all the data each file has to be moved into an archived folder.
    4. We have a STAGE & PROD setup in the DB. The usual approach is to create 2 packages for EACH table.
    One to load data into STAGE
    2nd to move data from STAGE to PROD
    Now, I'm not sure if I should create 4 tables * 2 = 8 packages or just 2 packages (1 for stage + 1 for prod).
    Please suggest!! I know the experts here have already come across such a scenarios.
    I wanted to know pros and cons of each approach. As I'm doing something like this for the first time, I can't imagine which will be the best solution.
    Thanks!!!

    I'd create one package.
    I do not see why de-coupling the loading to staging from prod needs to be so.
    When it works as one unit you can rollback the entire load as one as you may not want to end up with some data partially loaded.
    Arthur
    MyBlog
    Twitter

  • J2EE Design Questions

    Please forgive me, I am just getting into J2EE and, despite having a mountain of manuals on my desk, I'm having a little trouble figuring out how everything fits together...
    Question 1.
    Is there any standard application entry point for an EJB container... kind of like main() in a plain old java application, or the contextInitialized() method for a ServletContextListener in a web container?
    Question 2.
    Is there any kind of an analog to web.xml for EJB containers? If not, is there some kind of standard way to set initialization parameters for EJBs?
    Question 3.
    Is there any kind of JNDI service provider created for me by my EJB container? For example, the (rather old) article here:
    http://java.sun.com/products/jndi/tutorial/getStarted/examples/naming.html
    suggests the following code:
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
        "com.sun.jndi.fscontext.RefFSContextFactory");
    Context ctx = new InitialContext(env);specifically 'Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"' looks like a bunch of voodoo to me, and also mentions something about the file system... I don't want my JNDI to have anything to do with my filesystem. Do I need to install some kind of JNDI server or LDAP server or something? Sorry... I'm really confused.
    Question 4.
    In my test application, I'm trying to centralize logging. I have a stateless EJB that implements logging capability. When instantiated, (in theory) it should register it's logging element to JNDI, so that further instantiations of the logging EJB should all direct their calls to the same element.
    I fully realize that this would imply (at best), in a distributed environment, the rather strange behavior of logging calls bouncing around to the first machine that happend to instantiate a logging bean...
    regardless, I have the following broken code:
    import javax.ejb.Stateless;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    @Stateless
    public class LogEJB implements VCMarkWeb.log.LogEJBRemote {
        private transient Context context;
        private transient Log     log;
        private transient boolean logMaster = false;
        private int logLevel;
        public
        LogEJB() {               
            try {
                context = new InitialContext();
                Log     globLog = (Log) context.lookup("log");           
                if (log != null){
                    this.log = globLog;
                    return;
                log = new LogWindow(800, 600, "LogBean", 5);
                log.out("Logging born.");
                context.bind("log", log);
                this.logMaster = true;           
            catch (Exception exception) {
                System.out.println("LogEJB: Exception while instantiating.");
                System.out.println(exception.getMessage());
        public void
        finalize() {
            if (!logMaster)
                return;
            try {
                context.unbind("log");
            catch (Exception exception) {
                System.out.println("LogEJB.finalize(): Exception unbinding log.");
                System.out.println(exception.getMessage());
    } Obviously, this code is broken, because my EJB has overridden finalize(), which is apparently not allowed. In this case (since I'm going to have to delete that finalize() method), how could I assure that my reference to a logging element will be unbound once the owner of that logging element is garbage-collected?
    ..or.. if I'm asking Question #5 in too convoluted of a way...
    Question 5'. Say, when my EJB container is kicked off, I want to create a single class containing a swing window, which will exist for the lifetime of the container, to which I can pass a handle to, such that any EJB's can invoke its methods? How would I do that, and how would I pass to my EJBs a handle to said class the 'right way'(tm)?
    Thanks so much for your assistance, J2EE design gurus :)

    singletons are counter to the very concept of distributed computing, which EJB is of course liable to do.
    So while you may have a class that behaves like a singleton inside its own enterprise application context, there is no guarantee it will behave like a singleton when seen from the perspective of a client.
    In fact, when the enterprise application is run in a distributed environment it's guaranteed to not be a singleton anymore as each JVM instance will have its own instance of the class loaded.
    It can get even worse depending on application server architecture, and you may end up having several instances of your "singleton" running inside the same server (possibly the same application) though that is more rare.
    So the best thing to do with singletons is forget all about them.

  • Design approach for custom Fiori application

    Dear Experts,
    Good day to all...!
    I am having a query on finalizing design approach for one of my custom Fiori Application development  using SAP UI5.
    Current Application design and  Features:
    As now we are having application, which is been used in laptops. The application structure is like (SAP R3 --> SUP -->UI (using .net) [back-end à Middlewareà UI).
    The UI is hosted on IIS server and the application type is desktop, so the users can use the application in offline as well.
    Once its connected to internet, they push all the data back to SAP via SUP.
    Proposal :
    We are planning to migrate the same application into Fiori with same offline features and extending to mobiles and devices.
    I have few queries here.
    What will be the best approach to deploy the application either SUP(Latest version of SMP) or SAP R3.
    If SAP R3 to deploy App:
    If we choose to deploy the application in R3, How to support the offline usage mobile and devices.
    Will the HTML5 local storage or indexed DB’s are sufficient to support the offline usage.
    In this case, Shall we drop the SUP/SMP, Since the application directly accessed from SAP R3 ..?
    SUP/SMP to deploy the app:
    In this case, I need to create (wrap the ui5 files into hybrid application) a hybrid application to support the mobile and devises as native application..? Correct me If I am wrong..:)
    Hope I can use the SUP/SMP local storage options to support my offline usage..? Correct me If I am wrong..:)
    What will be the best option to support desktop offline  usage.
    We are yet to take a decision on this.. Please provide your valuable inputs , which will help us to take some decisions.
    Thanks & Regards
    Rabin D

    Hi Anusha,
    considering the reusability aspect the components approach is the much better one (see also the best practices dev guide chapter regarding components SAPUI5 SDK - Demo Kit).
    It allows you to reuse that component in different applications or other UI components.
    I also think that the Application.js approch will not work with Fiori, cause the Fiori Launchpad loads the Components.js of the Fiori app in an Component Container.
    Best Regards, Florian

  • HTTP GET/POST: J2EE Design Strategy w.r.t servlet implementation

    I am in process of designing a J2EE application with browser interface. I have thought of having "Front Controller" Servlet for all HTTP-GET requests and "Action Controller" servlet for all HTTP-POST requests.
    I have worked this distinction on the basis that GET request maps directly to page being requested and POST request corresponds to action being performed on some page. Here in fact the design is driven by appropriate selection between GET or POST. So all possible requests on the site should get properly mapped to action or page.
    Decision of two servlets is merely to divide the load on single servlet. There being well defined logical (page and action) and implementation (GET/POST) boundary, the division seems workable.
    Before actually finalizing this decision I need to know any inputs (pros and cons) of this approach.
    Further If I start mapping to actual scenerios,
    Request for home page,
    Request from HREFs,
    Request where new transaction is started
    will always be GET Requests.
    However what about request method (POST or GET) for update employee profile page when emp. id is available already available on first page ??
    And further
    Is this GET/POST divison always possible ??
    Any constraints that any one can see in this mapping ??
    Any comments on the update employee profile scenerio - GET/POST - page/action ??
    PS: Pl. discard error scenerios for the moment.

    how would you direct the GET requests to one servlet and the POST requests to the other?
    Wouldn't they need to pass thru' yet another servlet to decide which is which (GET or POST), and redirect them accordingly?
    I would have both GET and POST handled by the same single-point-of-entry servlet. For example, not all data is sent to the server via a POST - you can send form data via a GET, using name/value pairs in the url.

  • Some J2EE Design Questions

    Hello All,
    1. How can a daemon process/service implemented in J2EE world? Any design pattern?
    2. Is there any way to trap J2EE client disconnect events - we want to timeout
    user sessions if they fail to logout properly from our J2EE app and disconnect
    from App Server
    Thanks in advance for your time in helping me with these design issues.
    MS

    I have the same problem.
    Does anyone know the solution?
    Thanks
    Davide

  • J2EE Design Question -- Am I On The Right Track?

    There are multiple tables in my database. Each table has a primary key, and the table that relates to other tables has foreign keys. I have to match the primary key and foreign key to go from one table to another. The specifics are spelled out below:
    The first table has login, pwd, and a primary key as fields, the second table contains completely different fields plus a primary key and foreign keys. The fields in the third table are different from those in the first and second tables plus its primary key. Queries to the third table can be made only if the user login and pwd are found in the first table, and through the second table's relation to the first table and the third table�s relation to the second table.
    The fields of all those tables may be accessed concurrently, but the fields are read-only (for the time being).
    I have a servlet to handle browser interactions. And I have a session bean to handle the workflow and business logic. However, I am confused with the choices between VO and entity beans.
    I first thought that I should use value objects to represent the data fields of the specific rows I looked for in those tables. Here is what I read about Value Object:
    "If a business object merely represents a structure to hold data fields, and the only behavior it provides are get and set method for the fields, then it would be wasteful of system resources to implement it as an enterprise bean. To avoid expensive remote methods calls (system resources and network bandwidth) to get the value of entity object fields, a value object is used to represent the details of the entity object. Only one remote call is required to retrieve the value object and then a client�s request to query the state of the object can then be met via local get methods on this details object."
    On my second thought, I think I should use entity beans to represent the specific rows I am looking for in those tables because I must use primary key and foreign key relations to go from one table to another.
    I do not use DAO because I am using CMP. The first call is within the session bean. It is a remote call to look for a specific row in the first table in my database. Subsequently, the mapping of the row in the first table to the second table, and the mapping of the row in the second table to the third table are all invoked on the �local" interfaces of those entity beans.
    client(browser)-->front controller(servlet)-->session facade(session ejb)-->entity ejb-->entity ejb -- > entity ejb
    Please advise if this is the right design. Am I on the right track? Is there improvement to be made?

    I might not explain my question well in my previous post -- there is no business logic involved in what I am doing to go from the first entity bean to the second entity bean and to go from the second entity bean to the third entity bean.
    Based on the login information, I have to go through those entity beans to find the very specific row in the third table in order to get the data field I need. That is to say, only thing involved is searching for rows.
    In my view, session bean -- > 1st entity bean -- > 2nd entity bean -- > 3rd entity bean
    1. session bean -- > 1st entity bean: remote call and returns the key to the 1st entity bean for locating the 2nd entity bean
    2. 1st entity bean -- > 2nd entity bean: local call and returns the key to the 2nd entity bean for locating the 3rd entity bean
    3. 2nd entity bean -- > 3rd entity bean: local call and then returns the value of the specific field to the session bean
    The alternative approach is:
    session bean
    |
    + + +
    1st entity bean 2nd entity bean 3rd entity bean
    1. session bean -- > 1st entity bean: remote call and returns the key to the session bean for locating the 2nd entity bean
    2. session bean -- > 2nd entity bean: remote call
    and returns the key to the session bean for locating the 3rd entity bean
    3. session bean -- > 3rd entity bean: remote call and the session bean can get the value of the specific field from the 3rd entity bean
    I do not know which approach to go for. Please provide guidance. Thanks.

  • Universe Design approach - Dimensional Data model

    We use a Dimensional data model which has about 15 different models based on Subject areas. Eg: Billing, Claims, Eligibility, etc. Each model has its own Fact table linked to Dimensions, some of which are Conformed dimensions which is present in multiple models. We want to build Universes on top of this model, for creating Crystal Reports and to expose it to the Business Users to create WebI reports through InfoView.
    <br><br>
    The Client has already built 15 Universes one for each Subject area_, which has 1 fact table each and many Conformed dimensions with some junk dimensions. When a Report needs data from more than one Universe, we have to link the different Universe queries at Report. <br>
    Major drawback with this approach is change management. As our data model will be expanded in future, which in turn makes me to update multiple Universes when, say a Conformed dimension changes; since the Conformed dimension table will be present in multiple Universes.
    <br><br>
    Now we are considering the below approaches to have better Architectural design and have easier User interface.
    <br><br>
    1. Creating a master Universe for the Dimension tables(here there may be a effort to modify data model to suit linking Dimension tables together). Then to create derived Universes for each Fact table. These derived Universes will be linked back to common dimension Universe. <br>
    Maintenance will be easier in this approach, as whenever a Dimension changes I need not update multiple Universes, but as I am linking Universes at Designer level as Master and derived Universes, I am concerned about the Report development if the report needs data from multiple Universes. Then I would be linking u201Cmultiple Linked Universeu201D queries at Report. <br><br>
    2. The other option I have is to combine multiple dimension models(Subject areas) into one Universe. By this we will create minimal number of Universes as possible. May be end up creating 5 or 6 Universes, but we will have tough time in maintaining Security of data elements. For instance, at high level a Universe may have Billing and Eligibility data, where I have to maintain strict Security for the User groups, and let only specific users to see/ use all data elements (objects). <br><br>
    Hope I have summarized my question well, any inputs from you on the approach you are aware of/ prou2019s and conu2019s of it in terms of time it takes to build, the performance of Report(creating WebI reports through InfoView) is appreciated !!
    We want to see which approach makes it better for creating Crystal Reports and when it reaches Business Users who has little patience waiting for a Report and needs best possible interface

    There is no one perfect answer for your question.  Universes are more of an art than a science imo.  I can tell you that we have many conformed dimensions joined to multiple facts in a single universe.  The key to this approach is that for each fact table you will need a context.  The advantage to this approach is the ease in which your WebBI users will be able to build reports.  The disadvantage is that Crystal Reports cannot handle multiple contexts so your Universe is basically useless in CR.  For CR, you will need to build Business Views rather than universes.

  • Need advice about design approach for query editing tool with JSF

    Hi !
    I would like to propose in my application a way to allow end-user to create queries that could be executed on a some tables. I suppose that this kind of stuff is not new and would like to know if someone has to good design practice or example to do this with the JSF technology ?
    I think that two approaches is possible:
    1/ the user specifies the complete query from the start and get the final result when query is executed in the background
    2/ user specifies the query in a interactive way. It specifies one criteria and get the results of it, then on the results specifies another criteria and get new results, then specifies another criteria and so on.
    Also for information I use Hibernate as database framework.
    Some advice or start of approach will be very appreciated.
    Thanks !
    B.D.

    No-one could advice on this ?

Maybe you are looking for