Important conceptual question about Application Module, Maximum Pool Size

Hello everyone,
We have a critical question about the Application Module default settings (taking the DB connections from a DataSource)
I know that on the Web it is generally suggested that each request must end with either a commit or rollback when executing PL/SQL blocks "directly" on the DB without the framework BC/ViewObject/Entity service intervention.
Now, for some reasons, we started to develop our applications with thinking that each Web Session would reference exactly one DB session (opened by any instance taken from the AM pool) for the whole duration of the session, so that the changes made by each Web session to its DB session would never interfere with the changes made by "other" Web Sessions to "other" DB sessions .
In other words, because of that convincement we often implemented sort of "transactions" that open and close (with either commit or rollback) each DB session not in/after a single HTTP request, but during many HTTP Requests.
As a concrete example think of this scenario:
1. the user presses the "Insert" button. An HTTP request is fired. The action listener is executed and ends up with inserting rows in a table via a PL SQL block (not via the ViewObjects API).
2. no commit or rollback after the above PL/SQL block is done yet.
3. finally the user presses a "Commit" or "Rollback" button, firing the call to the appropriate AM methos.
Those three requests consist of what I called "transaction".
From the documentation it's clear that there is no guarantee that the couple AM istance + DB session is the same during all the requests.
This means that, during step 2, it's possible that another user might reference the same "pending" AM/DbSession for his needs and "steal" somehow the work done via PL/SQL after step 1. (This happens because sessions taken by the pool are always rolled back by default.)
Now my question is:
Suppose we set the "Maximum Pool Size" parameter to very a great number (always inferior to the maximum number of concurrent users):
Is there any guarantee that all the requests will be isolated in that case?
I hope the problem is clear.
Let me know if you want more details.

Thanks for the answers.
If I am right, from all your answers about resource avaiability, this means that even supposing the framework is able to always give us the same AM instance back from the AM pool (by following the session-affinity criterias), there is, however, no "connection affinity" with the connections from the DataSource. This means that the "same AM instance" might take the "a new DB connection", if necessary, from the connection pool of the DataSource. If that happens, that could give us the same problems as taking "a new AM instance" (that is, not following session-affinity) from the beginning, since each time an a new connection is taken (either via a new AM instance or via the same AM instance plus a new DB connection), the corresponding DB session is rolle back by default, clearing all the pending transactions we might have performed before with direct PL/SQL calls bypassing the AM services during the life cycle of our application, so that the new HTTP request will have a clean DB session to start to work with.

Similar Messages

  • Database sessions, Application Modules and Pools

    Hi,
    I have an ADF 10.1.3 application (ADF Faces on ADF BC) that uses JAAS to authenticate it's users. After the user has logged in I would like my session_user_info managed bean to query the database and retrieve all the user's details, for access throughout the user's session. Initially I wrote the following code to achieve this:
          ApplicationModule am = Configuration.createRootApplicationModule(applicationModuleName, applicationConfigName);
          ViewObject vo = am.findViewObject("CurrentUserView1") ;
          vo.setNamedWhereClauseParam("v_userName",userName);
          vo.executeQuery();
          if(vo.getRowCount() <= 0)
            user = null ;
          else
            user = (CurrentUserViewRowImpl) vo.first();
          Configuration.releaseRootApplicationModule(am, true); This works fine BUT because it's creating a new root ApplicationModule each time I end up with an excessive number of database connections after a very short space of time (the call to Configuration.releaseRootApplicationModule does not seem to be releasing the database connection, even though the application module is released). I also don't like this as it feels like I'm "breaking" the framework by making a direct call to the model layer.
    So the next thing I wanted to try was creating a DataControl (by dragging my CurrentUserView1 on to a jspx page, then deleting it to preserve the bindings) and make a call to that using something like this:
            /**** TODO GET BINDING TO CurrentUserView1 ******/
            OperationBinding operationBinding =
                bindings.getOperationBinding("ExecuteWithParams");
            JUCtrlAttrsBinding vUsername =
                (JUCtrlAttrsBinding)bindings.findNamedObject("v_userName");
            statusCode.setAttribute("v_userName", username);
            Object result = operationBinding.execute();
            if (operationBinding.getErrors().isEmpty()) {
               /***** TODO Cast this result object in to something useful *****/
                setUser(result)
            }But as you can see I still don't completely understand what I have to do here (and yes I have trawled the various guides and documentation - but I can't work out exactly what applies to me as this isn't a backing bean).
    If any of you Aces out there can give me some pointers it would be MUCH appreciated as I've beat my head against this for a week now!!
    Dave
    Edited by: Short Dave on Dec 1, 2008 2:52 PM

    John,
    It's been 2 months since I asked this question and in that time I have tried innumerable ways of getting my application and database pools to behave in such a way that doesn't end up filling my database with unclosed sessions. The situation I'd ideally like to achieve is this:
    Application Modules
    A pool of application modules minimum 5 maximum 150 with a "working set" of about 25 (the jbo.recyclethreshold setting)
    For application modules to timeout if they are inactive for > 120 seconds (so if somebody has left their browser open in the background I don't want them hogging my AMs)
    Database Connections +(I am using a JDBC data source to allow multiple applications to reuse my connection pool settings)+
    A pool of database connections minimum 5 maximum 150
    If a connection is inactive for > 300 seconds for that connection to be closed (i.e. if an AM has been returned to the pool, but is not re-used within 5 minutes then I'd like the connection closed)
    Obviously, for the purposes of testing, I don't want to try and manage 150 browser sessions to see if this setup works, so I have been trying to create a scaled-down version of my requirements:
    Application Modules
    A pool of application modules minimum 1 maximum 5 with a "working set" of 1 (the jbo.recyclethreshold setting)
    For application modules to timeout if they are inactive for > 30 seconds
    Database Connections
    A pool of database connections minimum 1 maximum 5
    If a connection is inactive for > 60 seconds for that connection to be closed
    My problem is that, despite all the API's, the ADF for 4GL guide, forum entries and Steve Muench's guide to AM Pooling I still can't get this relatively simple example to work.
    My bc4j.xcfg file looks like (assume all other settings are as default):
             <jbo.recyclethreshold>1</jbo.recyclethreshold>
             <jbo.ampool.maxavailablesize>5</jbo.ampool.maxavailablesize>
             <jbo.ampool.maxinactiveage>30000</jbo.ampool.maxinactiveage>
             <jbo.ampool.minavailablesize>1</jbo.ampool.minavailablesize>
             <ApplicationName>gpl.model.PreUserLoginModule</ApplicationName>
             <jbo.ampool.monitorsleepinterval>30000</jbo.ampool.monitorsleepinterval>My data-sources.xml file has the following entries for the connection used by that application module (assume all other settings are as default):
      <connection-pool name="jdev-connection-pool-gslportal_at_ppmsdb"
                       disable-server-connection-pooling="false"
                       validate-connection="false" inactivity-timeout="60"
                       max-connections="5" min-connections="1"
                       property-check-interval="30"
                       used-connection-wait-timeout="30">With this configuration I can open a maximum of 5 browsers and each one connects successfully. On opening the 6th I get an exception because no more connections are available (as expected). My problem is that if I wait for 5 minutes I'd expect that
    a) 4 of the inactive application modules should be released (with one left available as per the min setting)
    b) The database connections of the 4 inactive application modules should be released as per the "inactivity" and "used-connection-wait" timeouts on the data-source
    c) I'd now expect the 6th browser to be able to connect because of the "freed up" resources
    From what I can make out none of these things happens. Even if I close the original 5 browsers, the 6th still cannot connect.
    I have noticed that if I set the "time-to-live-timeout" for the datasource then this will close the connection after the given period of time, but regardless of whether or not the connection was in use and in doing so renders the application module held in the pool as useless. (So if any of my original 5 sessions attempt to re-use the application module with the closed database connection, a "Closed Connection" SQLException is raised).
    I do appreciate this topic has been given LOTS of forum discussion already - but I really have done my research and am still none the wiser. Any help or guidance will be much appreciated.
    Kind Regards
    Dave

  • Questions about application server architecture

    Hello guys,
    I have few questions about application server architecture�
    I have a task to build a server application which will do the following: Clients (special java clients) will connect to it and send some data for further processing on server side. Chunks of data will be relatively small but they will take a lot of time for processing (it is ok that it will be quite slow).
    Also server will run some sort of �database� where all clients� working data will be stored. So, in case a client loses its data he/she is always able to download it from the server.
    For me it seems, like server will consist of the following components:
    1. �Reception�. This part will be responsible for all client-communication procedures.
    2. �Data storage�. This part will simply store all clients� data and provide some API interface for clients through �reception� to manage it (add/get/delete and so on).
    3. �Processor�. Some sort of dummy-sophisticated module. It will take some input data from �data storage� when it receives order for this and process it. �Processor� will have two states: �busy� which means �processor� processing some data and �available� which means �processor� ready to process new data.
    4. �Manager�. This part will always check �data storage� for new data and �processor� for availability. When �processor� and new data are available �manager� will make an order for �processor� to take new data from �data storage� and process it.
    So, my question is the following: Which technology and approaches I should use to realize my plan?
    I think that I can make �reception� as a Session Bean, but I don�t know yet, what are the best for the rest, for example �manager� and �processor�. I was thinking about writing my own application server (and I can do it), but I would like to learn j2ee technologies, so I think it is a perfect chance for me (I read a lot about j2ee before I wrote this post, but all examples have only �account�-�bill�-�money transfer� I think it is quite far away from reality or I am doing something wrong ;-)!
    p.s. I am thinking about using JBoss as an Application Server. I tested it and wrote some tests. They work and run fast enough, so I like it. Moreover it has module architecture.
    Please, give me some advises and tips!
    Thank you in advance!

    1. �Reception�. This part will be responsible for all
    client-communication procedures.Session bean with remote interface.
    2. �Data storage�. This part will simply store all
    clients� data and provide some API interface for
    clients through �reception� to manage it
    (add/get/delete and so on).Session bean that will use entity beans or hibernate to work with persistant data.
    3. �Processor�. Some sort of dummy-sophisticated
    module.Use a message driven bean. Make Reception to enqueue a message when new data is available for processing. Processor will process the data and store the resut in database using Data Storage session bean.
    4. �Manager�. This part will always check �data
    storage� for new data and �processor� for
    availability. When �processor� and new data are
    available �manager� will make an order for
    �processor� to take new data from �data storage� and
    process it.It's redundand component, because application server will manage messages and processors.

  • Several questions about Application Security

    Hello,
    I have several questions about Application Security and perhaps I need a few tips...
    I have a lot of users in a few groups which have access to my application! And the different groups should have only access to their pages.
    In my application I use trees to navigate through the application.
    So my idea is that i display different trees for the different user groups and restrict the user to access the URL....so the user can only see and contact "their" pages.
    I know how to create the logic behind the trees, but how can I create the restricted URL access...
    The "No URL Access" in the Session State Protection can not be used, because I use a lot of links in reports and HTML regions.
    Is there another way to solve that?
    But I am unsure if that is a "good" solution for my problem!
    What do you think about that?
    Am I going to do that too complicated?
    Could that be done by authentication or authorization?
    (By the way, I do not understand the differences between authentication and authorization. Can anyone help?)
    I would be glad for any reply!
    Thank you,
    Tim

    Hey Arie and Scott,
    thank you for your quick reply!
    Now I understand the context around authorization and authentication...
    I try the Access Control List and I think that is a very nice feature! Really good!
    But now I am wondering, how I can create more privileges?
    So that I have a few "end-user-roles" and then I can choose who have access to a page and who not!
    Does anybody know how to do that?
    Thank you,
    Tim

  • About application module pooling

    Hi all,
    I'm developing an application with JDev9i and I' trying to enable am pooling. I setup the jbo.recycletreshold=0 property and I put a log statement in the constructor of my Entity Object.
    I execute a query and display its result (in a paged form 10 by 10) in a jsp.
    every time I call the jsp (even when I click on the next page) I see the creation of all the entity objects. I logged applicationmodule.hashCode() and it's always the same.
    Which steps should I follow to enable am pooling with entity object pooling? I'm trying to read the pdf docs but I still haven't found what I'm looking for. Can anyone explain me what I'm doing wrong and where to find the documentation I need?
    Thanks,
    Giovanni

    Hi,
    The issue is that changing where clause parameters does not itself cause a ViewObject to re-execute its query. So,
    analyzing your code sample above:
    ApplicationModule am = cookie.useApplicationModule(true);
    Acquire an ApplicationModule instance for the session.
    ViewObject vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(1160)});
    // tag0
    Find the target ViewObject and set its where clause. Do not execute the query. VO State:
    Not executed
    RowSet for ID_DOC 1160 is not fetched
    Not iterated
    RangeSize = default
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    int firstIndex=0;
    int maxSize=vo.getRowCount();
    Acquire the VO's rowCount. This will force the VO to execute itself if it has not already been executed. If the VO has
    already been executed then this will not force the VO to re-execute itself. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Not iterated
    RangeSize = default
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    int rangeSize=1;
    vo.setRangeStart(0);
    vo.setRangeSize(rangeSize);
    Row[] rows=vo.getAllRowsInRange();
    Row row = rows[0];
    Setup the VO range size. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    if (row != null)
    System.out.println("IdDoc: " + row.getAttribute("IdDoc"));
    // release the application module statefully
    cookie.releaseApplicationModule(true, true);
    Release the ApplicationModule statefully. Note here that the rangeSize, the whereClause, the whereClause parameters,
    the current row, and the ViewObject's row cache will all be maintained by the ApplicationPool. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    // acquire an application module instance. use the same cookie.
    // this is equivalent to a second HTTP request originating from the same
    // session which released the cookie statefully.
    am = cookie.useApplicationModule(true);
    At this point, assuming that the AM was not recycled for use by another session (true for this SimpleTest), the same
    AM instance that was released will be returned. VO state (same as upon release):
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(1159)});
    // tag1
    Set the VO where clause. This is where the issue occurs. As mentioned above modifying the where clause
    parameters do not force the VO query to be re-executed. So, the VO remains in an executed, iterated state with a
    row cache corresponding to ID_DOC 1159. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1159
    //vo.executeQuery();
    //row = vo.first();
    vo.setRangeStart(0);
    vo.setRangeSize(rangeSize);
    rows=vo.getAllRowsInRange();
    row = rows[0];
    // tag2
    Setup and populate the range. If the VO is already in an executed state then all of these operations will be performed
    against the cached RowSet (again, ID_DOC 1159). So, these will not force the VO to re-execute itself. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1159
    if (row != null)
    System.out.println("IdDoc: " + row.getAttribute("IdDoc"));
    // release the application module statefully
    cookie.releaseApplicationModule(true, true);
    It sounds as if you would like the VO to be re-execute itself at :tag1above, placing it in the following state at :tag2:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    The most efficient way to achieve this is to force a query re-execution when the where clause parameters change.
    For example execute the following at tag0 (I assume this is the portion that simulates the servlet (model/controller) logic
    and/or at tag1 (I assume that this is the portion that simulates the JSP (view) logic which I also assume would not
    normally be responsible for setting the where clause parameter and modifying the range, correct?).
    Object[] oldWhereClauseParams = vo.getWhereClauseParams();
    // this block was copied from above tag0
    ViewObject vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(<new where clause parameter>)});
    Object[] newWhereClauseParams = vo.getWhereClauseParams();
    boolean whereClauseParamsSame =
    (newWhereClauseParams.length == oldWhereClauseParams.length);
    if (whereClauseParamsSame)
    for (int i=0; i < newWhereClauseParams.length; i++)
    if (!oldWhereClauseParams.equals(newWhereClauseParams[i]))
    whereClauseParamsSame = false;
    break;
    // force a query re-execution if the where clause paramters have changed.
    if (!whereClauseParamsSame)
    vo.executeQuery();
    which would yield the following VO state at tag2:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    Hope this helps.
    JR

  • Beginner: about Application Modules

    I am learning ADF, I have developed some small apps using JSPs/Servlets before.
    To get an understanding of how the framework works, and to learn 'best practice(s)', I first describe how I did things before:
    When developing my JSPs/Servlets I used the DAO pattern.
    For example: I have addresses and complaints in my database. I created a Address class and an AddressDAO class, plus an Complaint class and a ComplaintDAO class.
    Inside the DAO's I use a ConnectionManager for getting a (pooled/non pooled) Connection, and using JDBC I access the DB.
    Note the separation: there a two DAO's, each focused on a part of the total application.
    I do not use Hibernate (or other). I do not buffer data.
    Now my questions:
    - can I compare an ADF AM to a DAO?
    - is it better to create 1 Model project, having several Application Modules and VOs (each in their own package) OR create several specific Model projects?
    - when I use (instantiate) an AM based on a VO and read records from DB, I see (a lot) of instances are created in the VM.
    Is the AM stored in the Session? (and if so: as a singleton?)
    Are the VO instances (records from DB) kept in AM?
    Are these VO instances ever(automatically) released to prevent to much data in memory?
    Thanks so far!
    grts Stephan

    Hi,
    Now my questions:
    - can I compare an ADF AM to a DAO?You could probably compare it with VO or EO.
    - is it better to create 1 Model project, having several Application Modules and VOs (each in their own package) OR create several specific Model projects?Depends on usage. If you have multiple View projects and not every one of them uses all the models, then split them up into different model projects and use whichever is needed (adf library jars).
    - when I use (instantiate) an AM based on a VO and read records from DB, I see (a lot) of instances are created in the VM.Well, a correction here. AMs are data modeled based on single/multiple VOs. And, could you make it clear on lots of instances "of what" are created in the VM?
    Is the AM stored in the Session? (and if so: as a singleton?)This blog would be a worth a read : https://blogs.oracle.com/jdevotnharvest/entry/recommended_number_and_size_of_application_modules
    Are the VO instances (records from DB) kept in AM?AM is a container. VO comes under them. When a particular VO in a AM is executed, the data from DB are queried and fetched to it.
    Are these VO instances ever(automatically) released to prevent to much data in memory?In theory yes.
    -Arun

  • Quick question about app module?

    Hi,
    Are following two pages correctly instantiate and release the application module? Please notice release tag at the end of each page.
    -------------- page1 --------------------------------
    <%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
    <%@ page language="java" errorPage="errorpage.jsp" contentType="text/html;charset=ISO-8859-1" %>
    <%@ page import = "oracle.jbo.html.*,oracle.jbo.*%>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=WINDOWS-1252">
    <jbo:ApplicationModule configname="myPackage.app1.app1Local" id="app1" username="" password="" />
    <jbo:DataSource id="ds" appid="app1" viewobject="View1" ></jbo:DataSource>
    <%
    ...Some javacode here
    request.getRequestDispatcher(nextpage).forward(request,response);
    %>
    <jbo:ReleasePageResources appid="app1" releasemode="Stateful" />
    -------------- page2 --------------------------------
    <%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
    <%@ page language="java" errorPage="errorpage.jsp" contentType="text/html;charset=ISO-8859-1" %>
    <%@ page import = "oracle.jbo.html.*,oracle.jbo.*%>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=WINDOWS-1252">
    <jbo:ApplicationModule configname="myPackage.app1.app1Local" id="app1" username="" password="" />
    <jbo:DataSource id="ds" appid="app1" viewobject="View1" ></jbo:DataSource>
    <%
    ... Some javacode here
    %>
    <jbo:ReleasePageResources appid="app1" releasemode="Stateful" />
    <%
    request.getRequestDispatcher(nextpage).forward(request,response);
    %>

    What do you think about this?

  • Is it possible to export and import jsf page and application module?

    Hi,
    I want to export a application module and then import it to another application,so deos jsf pages.If I can do this ,then my team could do the diffent work at the same time.one group response for data model then commit as application module,one group for page create and edit and so on .Who has any good idea?
    Thanks advance
    lixinzhu
    2007/09/19

    hi,frank
    thank you.
    You know a page include a .jspx file,a page definition file and depend faces-config.xml,faces-config.oxd_faces and other I don't know information,so if i only put the first two file into cvs,but how can i get other information in the last two file?When I get the first two file and needed information in the other file,how can i merge these into new project and let jdeveloper "reconize it"?Applicaion is more complex,it not only depend its self java class,xml and many entity object and view object,how to handle the "export" and "import" process?Just like oracle form,only a fmb is enough,database object only need to "put into database","export" and "import" are very simple,so i need jdeveloper to supply these "import" and "export" function.I'm not familar with cvs,does it can know object dependency like application module?if it can,how to let jdev "reconize" imported in object?
    lixinzhu
    2007/09/19

  • About application module

    Hi,
    I want to call executeWithParams method in one of application modules view object..
    what is the syntax?

    ADFBC problem with bind variables

  • Question about RAW to JPG file sizes

    Hello all, I have a question/concern in reference to file size changes when converting from RAW to JPG formats in PSE6. I've recently purchased a CANON 50D, and have started shooting in RAW format (actually RAW2+JPG). I have the CAMERA RAW 5.2 plugin and my workflow process is something akin to this:
    1. Separate all RAW and JPG images into their respective folders.
    2. Open the RAW folder in BRIDGE, and then open up a CR2 file. CR2 file is approx 15MB at this point, as reported in Finder.
    3. Perform various corrections in ACR52 to the file, then do as SAVE AS to a DNG file.
    4. Next step is to OPEN IMAGE, bringing it up in PSE6.
    5. Make any necessary corrections to the picture, and then do a SAVE AS to a new file name and folder, selecting JPG format.
    6. Selection MAX QUALITY from subsequent dialogue box, and SAVE.
    When the file is saved, its now down to a mere 2.1 or 2.2MB, and when viewing its properties (vs. the same file that came from camera in JPG format), its down from a 44x66" format, to somewhere around 4x6" and 240dpi.
    I've been doing some reading on this over the weekend, but cant explain away the severe loss in file size, and whether this is right, or if I'm doing something wrong in the process.
    Appreciate any advice or suggestions to help improve my work processes, and ultimately the final photos!

    Regarding your file size questions, have a look at this thread and see if it answers some of your questions:
    http://www.fredmiranda.com/forum/topic/741532/0
    > When the file is saved, its now down to a mere 2.1 or 2.2MB, and when viewing its properties (vs. the same file that came from camera in JPG format), its down from a 44x66" format, to somewhere around 4x6" and 240dpi.
    Dimensions and resolution are related and multiple combinations can be produced from the same number of pixels. For example, your 50D at maximum image size produces 4,752 by 3,168 pixels. This full-size image could be printed at:
    - 19.8 x 13.2 inches at 240 PPI
    - 47.52 x 31.68 inches at 100 PPI
    - 7.92 x 5.28 inches at 600 PPI
    As you can maybe see, talking about dimensions and resolution doesn't make much sense until you are ready to consider printing. Note also that I used "PPI" or Pixels Per Inch since this is the slightly more correct terminology. DPI or "Dots Per Inch" is usually a reference to how a printer lays down the ink drops onto the paper. Many printers actually put more "dots" on the paper than there are pixels. Many people and companies use DPI when they mean PPI.
    Now in your case you are apparently starting with an SRAW2 raw file. SRAW2 files from the 50D have a reduced number of pixels and are 2,276 pixels wide by 1,584 pixels high. At 240 PPI this would allow you to print the image at 9.9 by 6.6 inches. If you are ending up with something smaller than that, it means you have either re-sampled the image (changed the image so the same image is displayed with fewer pixels) or you have cropped the image.
    Hope that helps.

  • The question about application priority in OCAP

    First question:
    I know the AIT includes priority for each application.
    But I find nothing about priority description in XAIT, may be I made a mistake about XAIT's structure.
    Second question:
    OCAP(10.2.2.5) define the priority range from 1 to 255. Where we can use this value, only in AIT?
    BRs.
    Alexander

    hi igor,
    you have to import the IDOC Types under the imported objects in the integration repository objects,
    what are all the data that coming out from the file adapter, you design the datatype.
    the target IDOC should be real and you do the mapping for the all necessary fields.
    refer: --
    File to IDOC:
    Re: how to Sending XML data to idoc
    IDOC Mapping:
    http://help.sap.com/saphelp_crm40/helpdata/en/77/a1d48b1ce06d40932e0a26f3c117ce/frameset.htm

  • Questions about entity bean caching/pooling

    We have a large J2ee app running on weblogic6.1 sp4. We are using entity beans
    with cmp/cmr. We have about 200 EntityBeans and accessed quite heavily. We are
    struggling with what is the right setting of max-beans-in-cache and idle-time-out.
    The current max heap setting is 2GB. With the current setting (default setting
    of max-beans-in-cache to 1000, with a few exceptions to take care of cachefullexceptions)
    we run into extended gc happening after about 4 hours. The memory freed gradually
    reduces with time and lurks around the 30% mark after about 4 hours of run at
    the expected load. In relation to this we had the following questions
    1. What does caching mean?
    a. If a bean with primary key 100 exists in the cache, and the following
    is done what is expected
    i. findByPrimaryKey(100)
    ii. findBySomeOtherKey(xyz)
    which results in loading up bean with primary key 100
    iii. cmr access to bean with
    primary key 100
    Is the instance in the cache reused at all between transactions?
    If there is minimal reuse of the beans in cache, Is it fair to assume that caching
    can only help loading of beans within a transaction. If this is the case, is there
    any driver to increase the max-beans-in-cache other than to avoid CacheFullException?
    In other words, is it wrong to say that max-beans-in-cache should be set to the
    minimum value so as to avoid CacheFullExceptions.
    2. Again what is the driver of setting idle-time-out to a value? ( We currently
    have it at 30 secs) Partly the answer to this question would again go back to
    what amount of reuse is done from cache? Is it right to say that it should be
    set to a very low value? (Why is the default 10 min?)
    3. Can you provide us any documentation that explains how all this works
    in more detail, particularly in relevance to entity beans. We have already read
    the documentation from weblogic as is. Anything to give more explicit detail?
    Any tools that can be of use.
    4. What is the right parameter (from among the things that weblogic console
    throws up) to look at for optimizing?
    Thanks in advance for your help
    Cheers
    Arun

    The behaviour changes according to these descriptor settings: concurrency-strategy,
    db-is-shared and include-updates.
    1. If concurrency-strategy is Database, then the database is used to provide locking
    and db-is-shared is ignored. A bean's ejbLoad() is called once per transaction,
    and the 'cache' is really a per-transaction pool. A findByPrimaryKey() always
    initially hits the db, but can use the cache if called again in the same txn (although
    you'd simply just pass a reference around). A findByAnythingElse() always hits
    the db.
    2. If concurrency-strategy is ReadOnly then the cache is longer-term: ejbLoad()
    is only called when the bean is activated; thereafter, the number of times ejbLoad()
    is called is influenced by the setting of read-timeout-seconds. A findByPrimaryKey()
    can use the cache. A findByAnythingElse() can't.
    3. If concurrency-strategy is Exclusive then db-is-shared influences how many
    times ejbLoad() is called. If db-is-shared is false (i.e. the container has exclusive
    use of the underlying table), then the ejbLoad() behaviour is more like ReadOnly
    (2. above), and the cache is longer-term. If db-is-shared is true, then the ejbLoad()
    behaviour is like Database (1. above).
    Exclusive concurrency reduces ejbLoads(), increases the effectiveness of the cache,
    but can reduce app concurrency as only one instance of an entity bean can exist
    inside the server, and access to it is serialised at the txn level.
    You can't use db-is-shared = false in a cluster. So Exclusive mode is less useful.
    That's when you think long and hard about Tangosol Coherence (http://www.tangosol.com)
    4. If include-updates is true, then the cache is flushed to the db before every
    non-findByPrimaryKey() finder call so the finder (which always hits the db) will
    get the latest bean values. This overrides a true setting of delay-updates-until-end-of-tx.
    The max-beans-in-cache setting refers to the maximum number of active beans (really
    beans that have been returned by a finder in a txn that hasn't committed). This
    wasn't checked in SP2 (we have an app that accidently loads 30,000 beans in a
    txn with a max-beans-in-cache of 3,000. Slow, but it works, showing 3,000 active
    beans, and 27,000 passivated ones...).
    This setting is checked in SP5, but I don't know about SP4. So you do need to
    size appropriately.
    In summary:
    - The cache isn't nearly as useful as you'd like. You get far more db activity
    with entity beans than you'd like (too many ejbLoads()). This is disappointing.
    - findByPrimaryKey() finders can use the cache. How long the cache is kept around
    depends on concurrency-strategy.
    - findByAnythingElse() finders always hit the db.
    WebLogic 8 tidies all this up a bit with a cache-between-transactions setting
    and optimistic locking. But I believe findByAnythingElse() finders still have
    to hit the db - ejbql is never run against the cache, but is always converted
    to SQL and run against the db.
    Hope this is of some help - feel free to email me at simon-dot-spruzen-at-rbos-dot-com
    (you get the idea!)
    simon.

  • General question about Marketing Module (OBIEE)

    Hi.
    I'm trying to deploy OBI Marketing functionality integrated with Oracle Siebel CRM.
    I have set up sample preconfigured rpd and marketing data, provided by Oracle:
    +>EnterpriseBusinessAnalytics.zip+
    +>OracleBIAnalyticsApps.rpd+
    The point is that in preconfigured rpd all Qualified List Items use Oracle Data Warehouse Connection Pool. But in my case I do not have ODW deployed. I have only one data source - Siebel CRM DB.
    And My question is..
    What is the most popular practise when deploying Siebel Marketing Module (OBI)? How do you decide whether to use preconfigured rpd or to deploy your own one when deploy siebel marketing functionaluty? And how much is it performable to use preconfigured repository and metadata? Is it always applicable to use it?
    Thank you and regards,
    Alex.

    You want to run Segmentation against the OLTP tables? Impressive! Make sure you have a good explanation for the CRM guys for every time their database dies.
    The most popular practice is to actually use an analysis-oriented database rather than a transactional one. Parsing a couple of million S_CAMP_CON records with an 8KB blocksize isn't fun.
    The decision between preconfigured and custom rpd boils down to this: how much of the standard functionality are you actually using and how much has been customized? If your segmentation criteria don't match the ones inthe preconfigured rpd at all, then you'll need to add to it or just drop it if you really have nothing in common with the OOB one.
    That said...there's still the DWH part. And there I really wouldn't suggest building your WH from scratch. Add to the existing, modify it etc.
    Cheers,
    C.

  • Question about using ZFS root pool for whole disk?

    I played around with the newest version of Solaris 10/08 over my vacation by loading it onto a V210 with dual 72GB drives. I used the ZFS root partition configuration and all seem to go well.
    After I was done, I wondered if using the whole disk for the zpool was a good idea or not. I did some looking around but I didn't see anything that suggested that was good or bad.
    I already know about some the flash archive issues and will be playing with those shortly, but I am curious how others are setting up their root ZFS pools.
    Would it be smarter to setup say a 9gb partition on both drives so that the root ZFS is created on that to make the zpool and then mirror it to the other drive and then create another ZFS pool from the remaining disk?

    route1 wrote:
    Just a word of caution when using ZFS as your boot disk. There are tons of bugs in ZFS boot that can make the system un-bootable and un-recoverable.Can you expand upon that statement with supporting evidence (BugIDs and such)? I have a number of local zones (sparse and full) on three Sol10u6 SPARC machines and they've been booting fine. I am having problems LiveUpgrading (lucreate) that I'm scratching my head to resolve. But I haven't had any ZFS boot/root corruption.

  • A question about creating a Connection pool that uses Oracle JDBC

    Dear all,
    I have an issue with creating a connection pool within a web application in order to be used by several servlets. I appreciate if you could kindly give me a hand.
    I'm using:
    Web server: Apache-tomcat: 6.0.18
    Oracle Database 11g Enterprise: 11.1.0.6.0 - Production
    Operating system: Linux (ubuntu 8.10)
    IDE: Sun Netbeans
    Oralce JDBC Drivers: 11.1.0.7.0-Production (ojdbc6.jar and orai18n.jar)
    JDK 1.6
    Usually, just for creating a connection to my database (without using a connection pool), I proceed in the following way:
    String dbURL = "jdbc:oracle:thin:@localhost:1521:database01";
    String username = "scott";
    String user_password = "tiger";
    String userSqlQuery = "SELECT * FROM mytable";
    Connection connection = DriverManager.getConnection (dbURL, username, user_password);
    Statement statement = connection.createStatement();
    statement.executeUpdate(query_text);This works pretty well allowing to communicate with my oracle database. By this method I have run several projects
    with different queries (SELECT, INSERT, UPDATE, DELETE ,etc.) and each time it worked without any problem and
    returned the result of the query. Therefore I think that there is no problem with JDBC drivers
    However, when I want to create a connection pool, it seems that the lookup method cannot locate Oracle JDBC drivers. That is,
    try
         InitialContext ic = new InitialContext();
         Context envContext  = (Context)ic.lookup("java:/comp/env");
         dataSource = (DataSource)envContext.lookup("jdbc/oracle11gEnterprise");
           Connection connection = dataSource.getConnection();
    catch (Exception e)
         e.printStackTrace();
    }Just after calling dataSource.getConnection() the java.lang.NullPointerException is thrown.
    Any idea?
    Thanks in advance,
    And for your information, here are context.xml and web.xml files for my project
    Here is my context.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiJARLocking="true" path="/WebApplication1">
        <Resource name="jdbc/oracle11gEnterprise"
              scope="Shareable"
              type="javax.sql.DataSource"
              auth="Container"
              description="Oracle Database 11g Enterprise"
              maxActive="100"
              maxIdle="30"
              maxWait="10000"
              removeAbandoned="true"
              removeAbandonedTimeout="60"
              logAbandoned="true"
              url="jdbc:oracle:thin:@localhost:1521:database01"
              username="scott"
              password="tiger" />
    </Context>my web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <ConsumeOutput>false</ConsumeOutput>
        <resource-ref>
            <res-ref-name>jdbc/oracle11gEnterprise</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
        <!--
            .  And here as usual I write servlet definition and url mappings
        -->   

    nobody?

Maybe you are looking for