Suitable for big enterprise applications?

Hello,
I am an advocate of Apex in our Oracle Forms shop, but received the following statement: "I am afraid that because of its 2 tier architecture (entire processing is taking place in the DB) it is not suitable for big enterprise applications".
Please help me respond to this.
Not by saying "yes, it is" or "no, it is not, the person is right", but by saying why it is or it is not.
References would be nice too.
Thanks very much, in advance,
Gabor

As the Director of IT for my company, here's why we use APEX as our main data entry/reporting solution:
1) Centralized data. All the data resides in a single place. No duplication and no wondering "Is this everything?"
2) Anywhere access. Because it is web/browser based, your users can gain access to the system whether at work or on the road. My company operates in the transportation industry across more than 8 states and we support many traveling managers. Web-based access and wireless connectivity enable them to be anywhere and get access to real-time data.
3) Instant deployment and updates. With APEX, content and new functionality can be instantly deployed across an entire organization without the need for expensive software management agents. It also eliminates versioning problems because it ensures everyone is using the same version. You can't do it that simply with a normal enterprise application.
4) Cross-platform Compatability. Again, because everything is browser-/standards-based, users can use Apple, Windows, Linux, smartphones, etc. Most standard applications have to have specific components written to interact with each type of device or operating system. With web applications, you can develop once and deliver everywhere.
5) Rapid development. I can have a basic application developed including table definitions, etc. in a matter of days BY MYSELF.
About the comment, I'd like to know what types of enterprise applications AREN'T 2-tiered or even 3-tiered applications? You have a presentation layer and a data layer in all applications; the application doesn't house the data itself. The main difference between APEX and many other applications is the delivery method: instead of a proprietary/internal transfer of data between the data layer and the presentation layer, it's being run out over the Internet. Frankly, the concern isn't about the tiers, it's about something else and the objector doesn't want to tell you the real reason.

Similar Messages

  • Chosing technology for an Enterprise Application

    Hello,
    We are in the procces of deveoping an enterprise application. This is basically a "port" of a really old (as400) application that will be written from the scratch in Java to keep the desired functionality and add a lot of new requirements. By now we are just thinking about the architechtural apporach we should use for such application.
    The client doesn't want to use EJBs because he said they are not efficient enough and also he says it is pretty expensive. So, we are looking basically to alternative technologies. For the persistence layer we are going to use Hibernate, and we are thinking on using Spring Framwork but the main problem I spot here is that since we are not using EJB, the communication between the clients (swing clients) and the server will be a real issue.
    We are considering some different approachs like WebServices, RMI... So basically that is our main concern now...
    What I'm asking here is for suggestions: what is the best (easier, maintainable, and so on) approach to use. Is there any other technology available the to spot that problem.
    I also heard about something called burlap. Any experiences using that one?
    Thanx

    Basically, we are looking for an alternate technology
    because we cannot use EJBs. The reason is that the
    customer doesn't want them. So, I guess that can be a
    big problem, because there are many features that EJBs
    containers just handle automatically (transactions for
    example). Also, since it's a distributted application,
    we need a way to communicate, and I don't know if RMI
    calls is appropiate (I haven't never really work with
    RMI like that....)"Distributed" usually means that you have similar or the same functionality running on different servers. And it usually requires an automatic sechronization protocol.
    And building that yourself is going to be very costly.
    A J2EE container does not just do entity beans (EJB is more than just entity beans) so I am guessing that they don't want J2EE at all.
    There is one distributed framework besides J2EE that I can recall. I can't recall the name but it might be in sourceforge (or it might not.) You are taking a chance on it because it is not used a lot, but it is probably more likely to work than building your own. You do of course have to find it first.
    RMI allows you to do remote objects. If that is all you want, rather than a "distributed" system, then it should be sufficient.

  • Emails Architecture for big J2EE Applications

    Hi all !
    Need some inputs regarding design of email sending mechanism in huge J2EE applications.
    We are having a medium based application (say 2 lakh subscibers) but may have a increase in
    subsciber base sooner. Its a 3-tier application using Struts (JSP), EJB & Database is Oracle 8i.
    Till now we are using Oracle jobs for submitting emails (asynchronus), it works fine for small subscriber
    base but increase in subscriber base will increase load on database and we want to avoid that.
    Concerned points are :
    1. What architecture is followed in big J2EE applications for sending emails asynchronously ?
    2. How much feasible is using JMS provided with weblogic app server for huge applications ?
    3. Does using messaging queues at app server end will degrade performance considerably ?
    Please see if anyone can help out in this..
    Puneet Gandhi

    I've used JMS + Weblogic (2 quad processor servers in cluster) and JMS in a system that took between 5,000 & 10,000 new users per day. It held up fine.
    I'm not an architect (more of a developer), but I would create a serializable NotificationBean, send it to a MessageBean, and let the MessageBean send the email. Providing your queues are persisting and that you limit the number of MessageBeans to something reasonable, I don't see why you should have performance problems.
    Alternatively if you use MQ I believe it has an email node that you can send messages to. Don't know much about this though.

  • How to decide about the Architecture on a big enterpriser application ?

    Hi,
    As u know there are lots of items to choose from when building a web based enterprise system with j2ee technologies.
    these choices may be from different patters (MVC,FrontController,...) and different frameworks(JSF,struts,...) for different layers(Presentation,DAL,...) of the application.
    and i know that most of them are project dependent. but is there a source for this big decision as a guide ?
    we are going to develope a web based and distributed total system(MIS,...) with around 130 subsystems ;
    any propose on the architecture would be of great help. there must be some old successful systems with known architectures.
    thax

    Hi,
    As u know there are lots of items to choose from when
    building a web based enterprise system with j2ee
    technologies.
    these choices may be from different patters
    (MVC,FrontController,...) and different
    frameworks(JSF,struts,...) for different
    layers(Presentation,DAL,...) of the application.
    and i know that most of them are project dependent.
    but is there a source for this big decision as a guide
    we are going to develope a web based and distributed
    total system(MIS,...) with around 130 subsystems ;
    any propose on the architecture would be of great
    help. there must be some old successful systems with
    known architectures.
    thaxHi there,
    It really (as you say) depends on the project and the problem domain, there is no Golden Hammer in J2EE. However there are some considerations you might want to take into account, bear in mind that without knowing hte problem domain this could all be useless waffle :-):
    1.) 'Future Proofing'. What technologies are likely to be supported well into the future and what will the average developer be comfortable with, also what is an easy framework for developers to follow? It sounds like you'll have a large team on this one and several replacement developers will probably come in along the way
    So for the front-end you could argue for Struts (will definately be going strong as it will be closely tied in with the new JSF spec) or plain JSP/TagLib with a Servlet Controller MVC pattern. solution.
    Moving further into your layers you definately want to have a Facade between your Business layer and your Data Access layer, there are so many competing technologies in this area that' it's wise to be able to mix and match at a later date.
    2.) Another thing you might want to consider is definately representing your business data in XML. It could be a solution for having a consistant data transfer layer for those subsystems! But of course translating XML to Javabeans and back again can get expensive...
    Well you could write a book on this (and several notable people have). I'd recommend that hte project budget shells out on J2EE Design Patterns by Oreilly for you, it'll help you clarify some ideas and more importantly help you avoid the common mistakes :-)
    Hope that helps!
    Karianna

  • Connection pool for big web application

    hi,
    i am developing an application which had more then 20 classes and each class use databases.
    i made an connection bean and use it for database connectivity but as my code expand and my application run for longer time i start getting error of connection limit.
    then i start using connection pool. in this i start using one connection for whole application.
    now i want that my
    1-whole application use that connection pool and i dont need to initialize it in different classes.
    2- The main problem is that may at a time i have to connect database with different user and these connections should remain active.
    my application will be used for enterprise level and remain active for months .
    following is my connection pool
    public class ConnectionPool implements Runnable
          private Log log=new Log();
          private String driver, url, username, password;
          private int maxConnections;
          private boolean waitIfBusy;
          private Vector availableConnections, busyConnections;
          private boolean connectionPending = false;
          public ConnectionPool(String driver, String url,String username, String password,int initialConnections, int maxConnections, boolean waitIfBusy) 
              this.driver         =     driver;
              this.url            =     url;
              this.username       =     username;
              this.password       =     password;
              this.maxConnections =     maxConnections;
              this.waitIfBusy     =     waitIfBusy;
              if (initialConnections > maxConnections)
                initialConnections = maxConnections;
              availableConnections = new Vector(initialConnections);
              busyConnections = new Vector();
              try
                  for(int i=0; i<initialConnections; i++)
                    availableConnections.addElement(makeNewConnection());
              catch(Exception e)
                log.write(e.getMessage());
          }//EO constructor
      public synchronized Connection getConnection()
             if (!availableConnections.isEmpty())
                  log.write("Total connections="+availableConnections.size());
                  Connection existingConnection =  (Connection)availableConnections.lastElement();
                  int lastIndex = availableConnections.size() - 1;
                  availableConnections.removeElementAt(lastIndex);
                  // If connection on available list is closed (e.g.,it timed out), then remove it from available list
                  // and repeat the process of obtaining a connection. Also wake up threads that were waiting for a connection because maxConnection limit was reached.
                        try
                            if (existingConnection.isClosed())
                              notifyAll(); // Freed up a spot for anybody waiting
                              return(getConnection());
                            else
                              log.write(  "in available connection"  );
                              busyConnections.addElement(existingConnection);
                              return(existingConnection);
                        catch(SQLException se)
                            log.write(se.getMessage());
              } else {
                        // Three possible cases:
                        // 1) You haven't reached maxConnections limit. So establish one in the background if there isn't
                        //    already one pending, then wait for the next available connection (whether or not it was the newly established one).
                        // 2) You reached maxConnections limit and waitIfBusy flag is false. Throw SQLException in such a case.
                        // 3) You reached maxConnections limit and waitIfBusy flag is true. Then do the same thing as in second
                        //    part of step 1: wait for next available connection.
                        if ((totalConnections() < maxConnections) &&  !connectionPending)
                          makeBackgroundConnection();
                        else if (!waitIfBusy)
                            log.write("Connection limit reached");
                        // Wait for either a new connection to be established (if you called makeBackgroundConnection) or for
                        // an existing connection to be freed up.
                        try {
                          wait();
                        catch(InterruptedException ie)
                          log.write(ie.getMessage());
                  // Someone freed up a connection, so try again.
                return(getConnection());
              }//EO main if-else
          return null;
    }//EO getconnection method
      // You can't just make a new connection in the foreground
      // when none are available, since this can take several
      // seconds with a slow network connection. Instead,
      // start a thread that establishes a new connection,
      // then wait. You get woken up either when the new connection
      // is established or if someone finishes with an existing
      // connection.
      private void makeBackgroundConnection() {
        connectionPending = true;
        try {
          Thread connectThread = new Thread(this);
          connectThread.start();
        } catch(OutOfMemoryError oome) {
          // Give up on new connection
          log.write(oome.getMessage());
      public void run() {
        try {
          Connection connection = makeNewConnection();
          synchronized(this) {
            availableConnections.addElement(connection);
            connectionPending = false;
            notifyAll();
        } catch(Exception e) { // SQLException or OutOfMemory
          // Give up on new connection and wait for existing one free up.
          log.write(e.getMessage());
      // This explicitly makes a new connection. Called in
      // the foreground when initializing the ConnectionPool,
      // and called in the background when running.
      private Connection makeNewConnection()
        //log.write("make new connection with  "+url+" "+username+" "+password +" and driver= "+driver);
        Connection connection=null;
          try
            // Load database driver if not already loaded
            //Class.forName(driver);
             DriverManager.registerDriver(new OracleDriver());
            // Establish network connection to database
            connection =  DriverManager.getConnection(url, username, password);
                    if( connection.isClosed() )
                      log.write("ooooooops no connection");
                    else
                      log.write("yahoooo get connection");
          catch(Exception e)
            log.write(e.getMessage());
        return(connection);
      public synchronized void free(Connection connection) {
        busyConnections.removeElement(connection);
        availableConnections.addElement(connection);
        // Wake up threads that are waiting for a connection
        notifyAll();
      public synchronized int totalConnections() {
        return(availableConnections.size() + busyConnections.size());
      /** Close all the connections. Use with caution:
       *  be sure no connections are in use before
       *  calling. Note that you are not <I>required</I> to
       *  call this when done with a ConnectionPool, since
       *  connections are guaranteed to be closed when
       *  garbage collected. But this method gives more control
       *  regarding when the connections are closed.
      public synchronized void closeAllConnections() {
        closeConnections(availableConnections);
        availableConnections = new Vector();
        closeConnections(busyConnections);
        busyConnections = new Vector();
      private void closeConnections(Vector connections) {
        try {
          for(int i=0; i<connections.size(); i++) {
            Connection connection =
              (Connection)connections.elementAt(i);
            if (!connection.isClosed()) {
              connection.close();
        } catch(SQLException sqle) {
          // Ignore errors; garbage collect anyhow
          log.write(sqle.getMessage());
      }i get this code from internet, in which it also mention that use following code
    public class BookPool extends ConnectionPool {
    private static BookPool pool = null;
    private BookPool(...) {
    super(...); // Call parent constructor
    public static synchronized BookPool getInstance() {
    if (pool == null) {
    pool = new BookPool(...);
    return(pool);
    }if some one want to use it for whole application then use connection pool by BookPool,
    now main point is i m not getting the BookPool class could some one explain it to me???
    and second by using it can i connect to different users of DB at a time, if cant then how i can.
    its good if some one explain it by little code.
    thxxxxxxxxxxxxxxxxxx

    If this is a real, serious application and not just for practice, then why are you trying to write your own connection pool implementation?
    You'd better use Jakarta's Commons Pool and Commons DBCP, which are widely used, well tested implementations of connection pools.
    If this is a web application running in a J2EE container, you'd normally configure the connection pool in the container. The container will register the pool in JNDI and you'd look it up in JNDI from your application.
    Here's some documentation on how to do that in Tomcat 5.5: JNDI Datasource HOW-TO

  • What type of java is more suitable for message sending application from pc

    Hi,
    i m a beginner at java. now i having a assignment, that is write a coding which can send a message from pc to mobile phone.
    what i knew is it is require a smsc but is it can replace with kannel software? or need both of it?
    my lecturer is jus require us use java to write the coding. is it i can use javaBean to do it or j2me? any suggestion?
    if yes then what software should i download with? currently i hv netBean and JCreator software only. the 2 software are useful?
    i saw few website is allow people send a free sms to mobile phone, why they can do like that?
    is it possible send a message is without any charges?
    pls help me , i really need ur help... anywhere thanks for u all...
    Thanks for your time,
    yuanney

    {color:#000080}Maybe I shouldn't, but I'm taking pity on you here.
    j2me is for applications for mobile devices. Since your application is to run on a computer, it will be developed in j2se.
    NetBeans is a free IDE, not a java language component as you seem to be thinking. It can be used for developing various types of java applications, but using it will require that you learn how to use NetBeans in addition to learning java.
    Use Google a LOT, you will find complete code segments that you may be able to adapt for your purpose.
    If you need more help from this forum, you will need to know the best way to ask. For that, read
    {color}{color:#0000ff}http://catb.org/~esr/faqs/smart-questions.html{color}{color:#000080}
    db{color}

  • Architecture for big ADF Applications

    My developer team finish a web application that contain about 350 web pages, 45 entity object and like 90 view object between 12 app modules.
    The application problem is that Running low.
    I use all tips i get from Performance and tunning guide... so i think the problem is the architecture is building.
    Is correct use one proyect for model think but is correct use only one viewController Project??
    maybe we can get more performance using multiples viewCOntroller projects each one using dependence from same model project and making multiples war file attached in one ear file??
    Thanks for tips...
    NOTE: I am using ADF 11 with webLogic.. All queries using in the application run in 50 - 100 ms, so are good times from database..
    Edited by: user10363801 on 3/05/2011 03:52 PM

    To profile your page from a browser's point of view, you can try using YSlow and Firebug with Firefox. Install firebug then install YSlow: https://addons.mozilla.org/en-US/firefox/addon/yslow/
    Note: this is only from the browser's point of view. This will reveal which resources(css, js, images, etc) are taking time to load. It will also give you some hints. Some of the problems it will report might be out of your control(e.g. the location <script> tags).
    You can also turn on the logging for BC layer so you can see the queries the BC is firing. Get those query and try to profile those using Explain Plan. If you see a lot of Full table scans in your queries, then that would be a good place to do some optimization.
    Edited by: Hyangelo on May 4, 2011 11:06 AM

  • SQL Server Enterprise support for Offline / Online Application development

    Hi,
    We have suggested to use the SQL Server 2012 as Database for our Enterprise application. We have the Offline/Online two set of application. Can you suggest any offline database to sync the Online SQL Server database.
    Thanks,
    Sethu

    What is an offline database?
    One can setup an "online" database and an "offline" database using SQL Server 2012 Enterprise Edition.
    SSIS packages can be used to synch data between the databases:
    http://blogs.msdn.com/b/jorgepc/archive/2010/12/07/synchronize-two-tables-using-sql-server-integration-services-ssis-part-i-of-ii.aspx?Redirected=true
    Kalman Toth Database & OLAP Architect
    SELECT Video Tutorials 4 Hours
    New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012

  • Call manger in big enterprise deplyment

    Hi everybody.
    Cisco call managers can be used as software application running on windows/linux platforms or for small business cisco call manager can be used in the form integrated service routers.
    For example this my book shows:
    . Examples of Cisco router models capable of running the CME fea-
    ture include:
    ■1760 (24 max IP phones)
    ■2610XM (36 max IP phones)
    ■2691 (72 max IP phones)
    ■2851 (96 max IP phones)
    ■3725 (144 max IP phones)
    ■3745 (192 max IP phones)
    ■3825 (168 max IP phones)
    ■3845 (240 max IP phones)
    The above routers are meant for small business .Do we have an integrated router providing CME feature for big enterprise voip network? what is the current practice when it comes to CME deployment for big enterprise voip network i.e are we still using  CME software running on microsoft/linux platforms or  are we using Integrated service router for CME?
    thanks and have a great weekend.

    Hi Sarah,
    These routers are designed to run CUCM, but they support limited amount of users.  for example a 3845 router supports up to about 250 users.  For enterprise network, you usually use regular or virtual servers running Linux or Window servers.  These servers support thousand of users.  I think, a cluster of servers can support up to 30 thousand users these days.  The servers can be individual servers or chassis based server like Cisco UCS, IBM H series, etc...
    Have a nice weekend
    HTH

  • Need information on open source testing tools for ADF web applications

    Hi experts,
    I need to investigate on new feasible open source Java testing tools for testing ADF web applications. I have tried to google a lot but getting confused.
    My requirements as as under:
    1. The tool must be open source.
    2. It should be easy to understand and to work upon by the tester and developers.
    Selenium based testing approach is already in place for testing the application but need to search for tools other than Selenium which shall prove suitable for testing ADF applications. Kindly let me know your inputs / suggestions.
    Thanks a lot in advance.
    Neelanand

    Hi,
    Have a look at JMeter http://jakarta.apache.org/jmeter/index.html
    1. The tool must be open source.It is.
    2. It should be easy to understand and to work upon by the tester and developers.I guess it is.
    There are some specifics in configuring it for ADF, but Chris Muir wrote a nice blog about how it's done, check it out http://one-size-doesnt-fit-all.blogspot.com/2010/04/configuring-apache-jmeter-specifically.html
    Pedja

  • Is PostgreSQL suitable for Windows Platform

    Hi all developers,
    I am handling a project that may use PostgreSQL as database. Pls share experience with me about:
    1) Is PostgreSQL stable in Windows platform?
    2) What is the limitation of PostgreSQL? only allows 32 connections?
    3) Is PostgreSQL suitable for J2EE web application?
    Thanks.

    Hi all developers,
    I am handling a project that may use PostgreSQL as
    database. Pls share experience with me about:
    1) Is PostgreSQL stable in Windows platform?PostgreSQL is only really as stable as the platform its running on.
    2) What is the limitation of PostgreSQL? only allows
    32 connections?I'm not sure, but unless you're writing an extremely large app then 32 connections should be plenty if you use connection pooling.
    3) Is PostgreSQL suitable for J2EE web application?Yes!
    Thanks.You're welcome.

  • I wonder to know what is the enterprise solution for windows and application event log management and analyzer

    Hi
    I wonder to know what is the enterprise solution for windows and application event log management and analyzer.
    I have recently research and find two application that seems to be profession ,1-manageengine eventlog analyzer, 2- Solarwinds LEM(Solarwind Log & Event Manager).
    I Want to know the point of view of Microsoft expert and give me their experience and solutions.
    thanks in advance.

    Consider MS System Center 2012.
    Rgds

  • Using Siebel Enterprise Application 7.8 OLTP as source for OBIEE 10.1.3

    hi,
    We want to use the OLTP data source of Siebel Enterprise Application 7.8 for our OBIEE 10.1.3.3 BI application. The source tables (for example S_ORG_EXT) structure in 7.8 OLTP is older then the corresponding OLAP tables (W_ORG_D) in OBIEE.
    Problems like above are solved using Analytics Bridge. However, We didn't find the Bridge specific for above versions of OLTP & OLAP.
    If any of you have the slightest of idea as to how to resolve the above problem, do drop me a line at [email protected] or reply to this post.
    Thanks,
    Jignesh Doshi

    It is my understanding you need at least 10.1.3.3.2 (upgrade/patch).
    I'm currently on 10.1.3.3.0 and will be using ESSBASE shortly - so we actually have purchased 10.1.3.3.3 (OBIEE Plus).

  • Enterprise system for big oracle database and datawarehouse

    Hi
    i wana to implemnet System for Big Oracle Database that increase rapidly(monthly by 20 GB).
    what is the best and specification of the required servers.
    what is the best way to implemnet backup for my big database.
    what is required server to implement Datawarehouse.
    what others servers i need to implement applications that will interact with the big oracle database and Data Warehouse.
    Best Regards,
    Alaa

    Hi
    i wana to implemnet System for Big Oracle Database that increase rapidly(monthly by 20 GB).
    what is the best and specification of the required servers.
    what is the best way to implemnet backup for my big database.
    what is required server to implement Datawarehouse.
    what others servers i need to implement applications that will interact with the big oracle database and Data Warehouse.
    Best Regards,
    Alaa

  • System requirements for enterprise applications

    I'm making system requirements for our web-based application. We are going
    to use WebLogic as enterprise application server and Oracle as DBMS. So, I'm
    looking for any papers/documents/solutions and so on which can help me to
    define system and hardware requirements depending on number of users etc (of
    course very approximately). Is there something?
    Thank you for help
    Mike Ershov

    not of use anymore

Maybe you are looking for

  • Condition key set up

    Dear sir please stepwise how to create condition type & use in T code-fv11 for plant/vendor/material Plant/vendor/material seen in FV11 according to your condition type , how to set up plant/vendor/material

  • MS mouse stopped working on Safari

    My MS mouse won't scroll anymore in Safari. Im using windows 7, I tried a second identical mouse and same problem, no more scroll function

  • Indexer and check-in work in progress error

    Hi When i check in documents using "standard checkin", i don't know why the files remain on the secction "work in progress"... then when i get in the repository manager i see that the files is pending to be indexed, but when i execute manually the in

  • Firefox won't open, but also apparently won't close, and so won't uninstall--help!

    I'm using Windows XP, need to use Firefox as browser for work. I clicked on the icon which doesn't open, tried to run it in safe mode, no go. Can't bring it up, can't remove it through the control panel add or delete programs option. Can't uninstall

  • Adding a page to bookmarks, adding a page to bookmarks

    Am trying to find out how to simply add a page to bookmarks.  Sometimes pages get added automatically and I am not sure how!  I have only had my mac a few months so still learning.  Some good features and some frustrating ones.  Also how do I do a sc