JClient 3-tier questions

How can I develop JClient which uses middle-tier on AS?
I've created Application Modules from "Creating Swing Clients for Business Components Tutorial". Added Business Components Session EJB deployment profile. Added application modules as Session Facade (CMT). How to add remote middle-tier to Application Modules?
What ports they use to communicate?
Does protocol support proxy?

Hi,
check this out
Re: My little BC4J EJB/Swing/JNLP HOWTO
Frank

Similar Messages

  • JClient 2 Tier Application Release Connection

    We have a 2 tier application with many application modules which can be open at the same time. In each screen we call "Release" when it is closed but in Toad we see it is not releasing the connection.
    There is a post on this but nothing about if this was resolved?
    How to immediately released database connection in jclient form app ?
    Cory

    1)3 tier means the database is one tier, the applications server (the fmx) is the second tier, and the browser (where the UI gets displayed) is the 3rd tier. The 3rd Tier is a browser and requires no extra software.
    2) You can do this but the power of Forms is that the act of writing your middle tier(application logic) is easy because of the power of Forms. In theory, you could write all your application logic in Java and only write the screens (and the part that interfaces with the Java business Logic) in Forms. But this is not really what Forms is about - you would probably want to look at JDeveloper.
    3) Forms makes the interation with the database soooo easy - however if you have a load of business logic already written in Java you can integrate it with Forms using the Java importer.
    Regards
    Grant Ronald
    Forms Product Management

  • ADF-JClient Refresh (Newbie question)

    I've gotta believe this is an easy thing to do with ADF, yet after perusing the documentation I could find (most is struts oriented) I just can't seem to get this working and I'm sure somebody here has done it. Also I'm pretty green when it comes to this ADF stuff so hopefully I use all the right terms, etc.
    I have a simple app, that hooks up to a EJB application using a session facade. I have an Order bean, and I have an order line item bean and as you may guess there is a 1-M relationship between the two.
    I set up the page with all the ADF stuff, and basically both are displayed as JTables. When I go to add a line item I:
    1)want to call the ADF operation to do so
    2) refresh both tables with their appropriate data (orders has a total price item that needs to be incremented)
    3) select the orders JTable's order record that corresponds to the line item I just inserted
    4) select the lineItems JTable's line item record that I just inserted.
    The way I currently try to do this, which doesn't quite work is:
    1) call the ADF operation "addLineItem" passing it appropriate details
    2) define an ActionBindingListener class that has an afterActionPerformed() method that:
    a) calls panelBinding.execute() (to refresh the orders table)
    b) calls ordersTable.changeSelection(x, y, false, false) to try and select the appropriate row in the orders table
    c) calls "getLineItems" operation which looks at the row that ordersTable is pointing to to update the line items table
    d) calls lineItemsTable.changeSelect(x, y, false, false) to select the appropriate row in the line items table
    Doing this, after I add an item, I see the correct order get selected, but then the table seems to switch off of it and select the row at the top of the table (as if a refresh had been requested again). The odd thing is that sometimes the above logic seems to work. I'm thinking my problems probably stem from calling panelBinding.execute(), but I haven't found any other clear way to refresh the data without doing that. What am I doing wrong? or am I right and there is a bug with the refresh?
    Any ideas/suggestions, no matter how stupid it may seem are appreciated. I think this is something simple, I'm convinced I've just missed something obvious.

    I think I figured out my problem. The key was to not use the JTable.changeSelection() method to set my selection post update. I needed to set it on the the JUTableBinding via a using a NavigatableRowset, so I did something like:
    void selectLineItemRecord(Long oid)
    JUTableBinding tableBinding = (JUTableBinding) panelBinding.findControlBinding("lineItemList");
    NavigatableRowIterator iter = tableBinding.getIteratorBinding().getNavigatableRowIterator();
    if(oid != null)
    for(int i = 0; i < iter.getRowCount(); i++)
    Row row = iter.getRowAtRangeIndex(i);
    if(oid.equals(row.getAttribute("oid")))
    iter.setCurrentRow(row);
    return;
    // fall through if not found or oid doesn't exist
    iter.reset();
    This seems to work much better now. Now if I just need to figure out some scroll bar stuff and I should be all set.
    FYI, the thread I garnered this information from is Re: JTable returning to previously selected row after executeQuery()

  • JClient Find Mode question

    I have an application where I want to give the user the option of which columns to search for a user-given key. Everything works except that the find mode ANDs the results from the selected columns, so if I'm searching for a number string that appears in the Card ID column, no results are displayed, since that number doesn't appear in the Last Name column as well. Is there a way of setting Find Mode to OR the results?

    Scott,
    if i remember well just from looking at the table when going in find mode, then all entries in one lines are AND'ed together, while different lines are OR'ed together.
    Frank

  • Question regarding templates

    I am currently reading the JDeveloper Handbook, and one of the first things it has me do in Creating the Application Workspace is to select the "Java Application [Default]" template; and this template utilizes ADF Business Components and ADF JClient.
    The questions I have with this are that:
    a) I don't have a Java Application [Default] selection in the dropdown nor when I look in 'Manage Templates'
    b) Even when I look in Manage Templates, I don't see anything that looks like ADF JClient.
    Is this something where the name changed, or do I need to download something to add to the JDeveloper install [like an add-in or such].
    I am obviously new to this, so any help would be appreciated. If this build information helps, this is what I have:
    Studio Edition Version 10.1.3.1.0.3984
    Build JDEVADF_10.1.3.1.0_NT_061009.1404.3984
    ADF Business Components     10.1.3.39.84
    Thanks.
    Matt

    The names have changed since version 10.1.2 (for which the book you are reading was written) - now it is Java Application [Swing, ADF BC]
    By the way, if this one doesn't appear in your version make sure you are using the studio edition of JDeveloper and not another one.
    Some more up to date books are here:
    http://www.oracle.com/technology/products/jdev/collateral/training10g.html

  • Mircomeno with a classic and transfer a voice memo for a windows to a Mac

    Hello,
    I have a two tier question.
    1. I bought a Micromemo recorder by XtremeMac a couple of years ago and it worked great with my 5th generation iPod. I recently got a Classic iPod (6th generation) and it is not syncing up. Is the Micromemo compatible with Classic? Is there any way to make it compatible?
    2. My Micromemo did work on a Nano iPod 2nd that is formated to Windows. How can I transfer that Voice Memo on to my Mac?

    It really denpends on the os running in the vm and what the permissions are set to on those shares.
    I run a few vms on both a mac at home and windows at work and all other computers in my home or at work can connect to the vms without any problems. Even multiple computer at the same time.
    It also depends on how you have set the vm up for networking. If you are setting it up as nat, instead of bridged, that can also cause problems access it from multiple system. With nat the vm is on its own network branch.

  • Remote Managing remote computers

    I don't know if this is a question for the Remote Management area since it's also probably a mid-tier question.
    I should first mention that we currently are using ZEN 7 looking possibly to upgrade to ZEN 10 next year, but looking at possibly adding a mid-tier server this year.
    We are trying to find a solution to remote manage machines outside of the corporate network. We have about 30 machines at about 20 remote sites that sit outside of our corporate network. These machines don't have a hardware VPN tunnel, but rather a software VPN connection to access network resources. Some of these machines are used on a regular basis and some of them might go untouched for 30-60-90 days or even more.
    Anyway, since these machines all do have software VPN on them, we want to stay on top of the machines as far as policies, antivirus updates, windows updates, and everything else. Without being able to remote manage them, it becomes difficult.
    My question is whether it is possible, using a mid-tier server, can we administer these machines remotely without a user being there to sign in to the software VPN and give me ip information? A lot of these machines are always on, but not always connected to the network w/ the software VPN which times out after x-amount of time (a day, a week... I'm not sure). A lot of the documentation I've been reading seems to indicate that users use the desktop management agent to login thru the mid-tier server which sits in a DMZ which authenticates to the ZENworks server. I guess I want to know if we can get at these machines if we have a static IP and the machine is on, but it isn't logged using the Desktop Management Agent or Novell Client.
    Thanks,
    Brent

    Sorry about bumping my own post, but does anyone have any ideas?
    Thanks,
    Brent

  • Question about shutting down the middle tier while leaving the DB up

    Hi,
    We just successfully upgraded 11.5.10.2 from running on 9.2.0.8 SOLARIS SPARC 32-bit to 11.2.0.1 SOLARIS SPARC 64-bit.
    I am in the process of rewriting the backup scripts. We used to do a once-a-week backup (zip) of the middle tier directories,
    after shutting down EVERYTHING cold (MT first, then DB listener, the DB). Our DB consultant likes hot-only backups of the
    DB so we are going to keep the DB running all the time and always do hot backups from the DB, but keep MT cold backup.
    We want to keep our MT cold backup so we retain our downtime window that users expect (Saturday night - Sun morning).
    So my question is ---- is there any issue with shutting down the entire MT- only (adstpall.sh) -- but leaving the DB up?
    When I do a adstrtal (via my script) the next morning--- everything should just start fine with no DB bonce having been done, right?
    In the past, once I have the MT down, wait 5 min, kill any stray FND processes, I usually go on to bounce the database
    "for good measure". I am 99% sure that I don't have to do this... and that there is no harm in "not" doing this, just need
    some confirmation.
    MH
    One more piece of information - Our concurrent managers shut down cleanly almost all of the time without putting jobs on hold.
    We don't have many users (< 60) and while we do have autoinvoice that runs every 5 min, I haven't had to do a big bounce
    with cmclean.sql very often-- only about once or twice a year when users lock each others tables and the cleanest fix is to bounce
    everything --very rarely.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Hi,
    So my question is ---- is there any issue with shutting down the entire MT- only (adstpall.sh) -- but leaving the DB up? There should be no issues.
    When I do a adstrtal (via my script) the next morning--- everything should just start fine with no DB bonce having been done, right?Correct.
    In the past, once I have the MT down, wait 5 min, kill any stray FND processes, I usually go on to bounce the database
    "for good measure". I am 99% sure that I don't have to do this... and that there is no harm in "not" doing this, just need
    some confirmation.You still need to wait for sometime for the CM to shutdown, that's all.
    One more piece of information - Our concurrent managers shut down cleanly almost all of the time without putting jobs on hold.
    We don't have many users (< 60) and while we do have autoinvoice that runs every 5 min, I haven't had to do a big bounce
    with cmclean.sql very often-- only about once or twice a year when users lock each others tables and the cleanest fix is to bounce
    everything --very rarely.You should be OK with your approach.
    Thanks,
    Hussein

  • Question about three-tier architecture for MI

    Hi,
    my question is just for the right understanding. If we speak about three-tier architecture of MI is it right, that the following is meant:
    Client = Presentation Tier
    Middleware = Application Tier/Logic Tier/Business Logic Tier
    Backend = Data Tier
    Thank you and regards,
    Florian

    Hi Florian,
    ICF (Internet Communication Framework) is actually a framework provided by any WebAS. MI makes use of this to receive/send the data from/to the client. It is referred to as ABAP Sync Service in MI terminology. Data comes in the form of HTTP stream. A service is created to provide this functionality. It performs the same job as of the J2EE engine in the earlier versions. The advantage being that an intermediate component between the client & middleware is not necessary anymore, because ICF is part of the WebAS itself.
    You can have a look at this in the sicf transaction, provide the service name as MJC, under this u can see that there are 3 services which MI uses - mi_host, mi_service & mi_mds.
    You can set these parameters in the mobileengine.config file to make the client connect to ABAP Sync Service.
    MobileEngine.Sync.Gateway.Service=/sap/bc/MJC/mi_host
    MI.Sync.ProtocolVersion=251500
    I am in the process of writing a blog, please wait for it.
    Regards,
    Nameeta

  • Three tier architecture questions

    Hello,
    My question is in regards to using Toplink in a three tier architecture situation. If I wish to send an object A which has a collection of Bs and B has a collection of C ( A nested object structure with two or more levels of indirection). Is the best solution to have the named query be part of a unit of work so that even if on the client side somebody unknowingly were to make the modification to one of the entity objects ( a POJO) the shared session cache would not be affected ?
    This is assuming the client side HTTP layer and the RMI/EJB layer are on different JVMs.
    Some of the other suggestions I have heard is to retrieve it from the shared session cache directly and if in case I need to modify one or more of the objects do a named query lookup on that object alone and then proceed to register that object in a unit of work and then commit the changes.
    Also the indirection would have to be utilised before the data objects are sent to the Servlet layer I presume ?(That is if I do a a.getAllOfBObjects() on the servlet side I would get a nullpointer exception unless all of B were already instatiated on the server side). Also when the objects are sent back to the server do I do a registerObject on all the ones that have changed and then do a deepMergeClone() before the uow.commit() ?
    Thanks,
    Aswin.

    Aswin,
    If your client is remote to the EJB tier then all persistent entities are detached through serialization. In this architecture you do not need to worry about reading and modifying the shared instance as it never the one being changed on the client (due to serialization).
    Yes, you do need to ensure that all required indirect relationships are instantiated on the server prior to returning them from the EJB call.
    Yes, you do need to merge the changes of the detached instance when returned to the server. I would also recommend first doing a read for the entity being merged (by primary key) on the new UnitOfWork prior to the merge. This will handle the case where you are merging into a different node of the cluster then where you read as well as allowing you to check for the case where the entity no longer exists in the database (if the read returns null then the merge will result in an INSERT and this may not be desired).
    Here is an example test case that does this:
        public void test() throws Exception {
            Employee detachedEmp = getDeatchedEmployee("Jill", "May");
            assertNotNull(detachedEmp);
            // Remove the first phone number
            PhoneNumber phone = detachedEmp.getPhoneNumber("Work");
            assertNotNull("Employee does not have a Work Phone Number",
                          detachedEmp.getPhoneNumber("Work"));
            detachedEmp.removePhoneNumber(phone);
            UnitOfWork uow = session.acquireUnitOfWork();
            Employee empWC = (Employee) uow.readObject(detachedEmp);
            if (empWC == null) { // Deleted
                throw new RuntimeException("Could not update deleted employee: " + detachedEmp);
            uow.deepMergeClone(detachedEmp);
            uow.commit();
         * Return a detached Employee found by provided first name and last name.
         * Its phone number relationship is instantiated.
        public Employee getDeatchedEmployee(String firstName, String lastName) {
            ReadObjectQuery roq = new ReadObjectQuery(Employee.class);
            ExpressionBuilder builder = roq.getExpressionBuilder();
            roq.setSelectionCriteria((builder.get("firstName").equal(firstName)).and(builder.get("lastName").equal(lastName)));
            Employee employee = (Employee)session.executeQuery(roq);
            employee.getPhoneNumbers().size();
            return (Employee)SerializationHelper.serialize(employee);
        }One other note: In these types of application optimistic locking is very important. You should also make sure that the locking field(s) are mapped into the object and not stored only in the TopLink cache. This will ensure the locking semantics are maintained across the detachment to the client and the merge back.
    Doug

  • Web-tier design question

    Hello,
    The web tier framework I'm working utilizes Struts, and I have a question about using interfaces in base action classes. We have created static utility wrapper methods for accessing different scopes and services. Now in our base action class we have wrapper methods which wrap calls to the static utility methods. Now my colleague suggested that we create an interface that defines these wrapper methods to be used in the base classes and implement this interface in all our web-tier base classes i.e. BaseAction, BaseFilter, BaseTilesAction.
    Is this overkill? I don't see the advantage because we're never instantiating these classes. However, we would be placing a rule that these classes must contain certain functionality.
    Any insight would be greatly appreciated.
    Thanks

    Does it make sense to wrap calls to utility methods which are static?Depends - what does that accomplish? Fewer lines of code? Is there state involved in the calls (create object - set state - call method - get results)? If it accomplishes nothing concrete within the current requirements specification, refactor it later if you find a concrete reason to do so.
    There may be reasons to do the non-easy thing. Such as you are going to sell the classes and customers will subclass them. But if that isn't about to happen soon, try hard not to gold plate and complexify the code.
    How big is your application - how many servlets do you expect? How many concurrent developers (1, 2, 10, 100)?

  • JClient Refresh Question (Am I trying too hard?)

    Environment: Windows 2000, JDeveloper (9.0.3.10.35)
    I have a JClient with a bunch of JTextFields bound to my BC4J app. I perform all of my business logic calculations/validations in the entity objects. I have some entity calculated attributes and these are calculating just fine. However, I also do some more complex calculations and manually set these entity attributes (about 5 of them). These calculations are triggered whenever a user modifies a textfield...
    My problem is that whenever I modify a textfield, the calculations are performed, the entity attributes updated, but they aren't shown/refreshed in the client. Hmmm... Here are some of the things I've been trying:
    - Override sourceChanged() in my view implementation. Ok, I can see "attribute changed" events, but how do I update the Swing textfield?
    - Got a handle to the iterator binding and forced a refresh from entity->view by calling "navigate(null)".
    Calling navigate(null) worked, so I then thought I could add this logic to the sourceChanged() handler but I am not sure about the easiest way to get the iterator binding from the view implementation. Hmmm... I think I'm making this way too hard... Am I missing something totally basic here? Any suggestions would be great? Thank you.
    BTW, the attributes are marked as updateable in both entity and view.

    I've done some more debugging, looking into the areas you referred me to... I think I have stumbled across the "eventing mechanism bug" between EO and VO when subclassing is involved (Re: package in all_objects shows invalid but compiles fine
    ). I failed to mention that I was using a polymorphic rowset because I didn't think it was relevant (shouldn't have assumed...)
    Here's what I've verified:
    When I set an attribute in the entity with no subclassing, notifyRowUpdated() is called in the view object. However, if the entity is a subclass, notifyRowUpdated() isn't called.
    Your first question may be if I have correctly setup the polymorphic rowset behavior. I think so... I've read all the articles/how to's that I've found about polymorphic rowsets in this discussion group. My "abstract" view points to my abstract entity, and then imports all of the subclasses (defined when you click the "subtypes" button in view object properties window). The discriminator is working and BC4J is instantiating the correct subclass, however, the view isn't getting notified when an entity's attribute is modified (ie, notifyRowUpdated() isn't getting called).This info along with the other link gives us enough to reproduce the bug and as mentioned in the other link, it is targeted for fix in our next release.
    The workaround to the "EO/VO eventing bug" was to call executeQuery() to refresh the detail. My problem seems to be in a slightly different context, so I'm not sure exactly what to do. As I had mentioned earlier, calling navigated(null) seemed to refresh the view. Should I pursue this or do you suggest something else? naviated(null) is a fine workaround. JClient bindings simply get the current row from 'the iterator' and displays that so that's effectively a refresh on the control-bindings.
    Would you like a small repro case? Thank you. Let us know if you hit any issues with this workaround.
    Thanks
    Shailesh

  • Deploying BI Beans for 2-tier JClient

    Hi
    Environment: JDev 10.1.2.1.0 (1913), Oracle 9i EE (9.2.0.7), Oracle App Server 10g (10.1.2)
    I have an ADF-based 2-tier JClient deployed via Web Start. I'm using several BI Beans graphs that seem to cause the client to bomb (non graphical elements work fine). I've tried including the BIBeans Runtime and OLAP API jars as deployment contributers but that just causes JDev to give me an Out of Memory error when right after "Ear file was sucessfully read".
    Has anyone deployed this type of app in a similar environment? What am I missing? I've followed the "Deploying Oracle ADFJClient Applications with Web Start" white paper and made sure to check "include graph" box in the JNLP JClient wizard.
    Application error on pages containing BI Beans graphs:
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError:
    oracle/bali/share/nls/LocaleUtils
         at oracle.dss.util.format.BaseViewFormat.setLocale(BaseViewFormat.java:6535)
         at oracle.dss.graph.managers.GraphRuleFormatter.formatAxisValue(GraphRuleFormatter.java:293)
         at oracle.dss.graph.GraphNumberFormatCallback.toString(GraphNumberFormatCallback.java:384)
         at oracle.dss.graph.pfj.RelativeAxisObj.getNumericLabels(RelativeAxisObj.java:1873)
         at oracle.dss.graph.pfj.Axis2DObj.getLabels(Axis2DObj.java:833)
         at oracle.dss.graph.pfj.Perspective.calc(Perspective.java:4480)
         at oracle.dss.graph.pfj.Perspective.doPainting(Perspective.java:8908)
         at oracle.dss.graph.pfj.Perspective.startPaint(Perspective.java:8882)
         at oracle.dss.graph.pfj.Perspective._paint(Perspective.java:8812)
         at oracle.dss.graph.pfj.Perspective.paintComponent(Perspective.java:8674)
         at javax.swing.JComponent.paint(Unknown Source)
         at oracle.dss.graph.pfj.Perspective.paint(Perspective.java:8684)
         at oracle.dss.graph.PFJ.paint(PFJ.java:120)
         at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
         at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
         at javax.swing.JComponent._paintImmediately(Unknown Source)
         at javax.swing.JComponent.paintImmediately(Unknown Source)
         at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
         at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
         at java.awt.event.InvocationEvent.dispatch(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    Thanks
    John

    update:
    ok, so now I see that oracle/bali/* is in c:\oracle\ora92\jlib\share.jar and I see that this jar is, in fact, added to the bc4jlibs.ear->jlibs.war. I re-deployed the bc4jlibs.ear and re-ran my application from a client via Web Start. Same ClassDefNotFoundError. I also tried adding the share.jar to my application's libraries but to no avail.
    I could be wrong but I don't think it's the JRE version because the same error occurs when I run the app via Web Start on my development machine
    any ideas?

  • Error in 3-tier JClient  Deployment

    I am getting the following error when running a JClient Application deployed to a standalone oc4j in 3-tier model :
    (oracle.jbo.common.ampool.ApplicationPoolException) JBO-30003: The application pool (mypackage1.AppModuleAS) failed to checkout an application module due to the following exception:
    ----- LEVEL 1: DETAIL 0 -----
    (oracle.jbo.JboException) JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-25222: Unable to create application module.
    ----- LEVEL 2: DETAIL 0 -----
    (oracle.jbo.JboException) JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-25222: Unable to create application module.
    ----- LEVEL 3: DETAIL 0 -----
    (oracle.jbo.JboException) JBO-25222: Unable to create application module.
    ----- LEVEL 4: DETAIL 0 -----
    (javax.naming.NamingException) Lookup error: javax.naming.AuthenticationException: Invalid username/password for JClientModelEJB (admin); nested exception is:
         javax.naming.AuthenticationException: Invalid username/password for JClientModelEJB (admin)
    Looks like I should have set the admin password to the application server in some configuration file... Where should I set it? I followed the steps specified in the document:
    http://otn.oracle.com/products/jdev/collateral/papers/10g/adfjclientbcwebstart.pdf
    It was not mentioned there.
    Any suggestions would be greatly appreciated,
    Stephanie

    Jan,
    Thanks for the reply. I have already figured out the fix for this issue: in the Connection properties Authentication tab the checkbox "Deploy Password" needs to be checked. Then repeat the deployment process. Now the JClient App(running local in the JDeveloper) works fine with the EJB deployed Business Components model. However I am still getting another Exception when running the application from oc4j.jsp, here is the stack trace, looks like some library is missing on the server, I saw a similar posting in this Forum which was unresolved...
    I am giving up this attempt at this point..
    JBO-30003: The application pool (oracle.sample.jbo.uicli.jui.custom.model.AppModuleLocal) failed to checkout an application module due to the following exception:
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-25222: Unable to create application module.
         at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1772)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2611)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:406)
         at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:262)
         at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
         at oracle.adf.model.BindingContext.get(BindingContext.java:411)
         at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
         at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
         at oracle.adf.model.binding.DCIteratorBinding.<init>(DCIteratorBinding.java:127)
         at oracle.jbo.uicli.binding.JUIteratorBinding.<init>(JUIteratorBinding.java:59)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:58)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:47)
         at oracle.adf.model.binding.DCBindingContainerDef.createIterBindings(DCBindingContainerDef.java:197)
         at oracle.adf.model.binding.DCBindingContainerDef.createBindingContainer(DCBindingContainerDef.java:273)
         at oracle.adf.model.binding.DCBindingContainerReference.getBindingContainer(DCBindingContainerReference.java:40)
         at oracle.adf.model.BindingContext.get(BindingContext.java:427)
         at oracle.jbo.uicli.jui.JUPanelBinding.setup(JUPanelBinding.java:89)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.setBindingContext(LovForm.java:283)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.main(LovForm.java:173)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at com.sun.javaws.Launcher.executeApplication(Unknown Source)
         at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
         at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
         at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
         at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    ## Detail 0 ##
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-25222: Unable to create application module.
         at oracle.jbo.pool.ResourcePool.createResource(ResourcePool.java:541)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.prepareApplicationModule(ApplicationPoolImpl.java:1859)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1739)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2611)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:406)
         at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:262)
         at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
         at oracle.adf.model.BindingContext.get(BindingContext.java:411)
         at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
         at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
         at oracle.adf.model.binding.DCIteratorBinding.<init>(DCIteratorBinding.java:127)
         at oracle.jbo.uicli.binding.JUIteratorBinding.<init>(JUIteratorBinding.java:59)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:58)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:47)
         at oracle.adf.model.binding.DCBindingContainerDef.createIterBindings(DCBindingContainerDef.java:197)
         at oracle.adf.model.binding.DCBindingContainerDef.createBindingContainer(DCBindingContainerDef.java:273)
         at oracle.adf.model.binding.DCBindingContainerReference.getBindingContainer(DCBindingContainerReference.java:40)
         at oracle.adf.model.BindingContext.get(BindingContext.java:427)
         at oracle.jbo.uicli.jui.JUPanelBinding.setup(JUPanelBinding.java:89)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.setBindingContext(LovForm.java:283)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.main(LovForm.java:173)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at com.sun.javaws.Launcher.executeApplication(Unknown Source)
         at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
         at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
         at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
         at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    ## Detail 0 ##
    oracle.jbo.JboException: JBO-25222: Unable to create application module.
         at oracle.jbo.common.ampool.DefaultConnectionStrategy.createApplicationModule(DefaultConnectionStrategy.java:156)
         at oracle.jbo.common.ampool.DefaultConnectionStrategy.createApplicationModule(DefaultConnectionStrategy.java:81)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.instantiateResource(ApplicationPoolImpl.java:2214)
         at oracle.jbo.pool.ResourcePool.createResource(ResourcePool.java:532)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.prepareApplicationModule(ApplicationPoolImpl.java:1859)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1739)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2611)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:406)
         at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:262)
         at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
         at oracle.adf.model.BindingContext.get(BindingContext.java:411)
         at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
         at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
         at oracle.adf.model.binding.DCIteratorBinding.<init>(DCIteratorBinding.java:127)
         at oracle.jbo.uicli.binding.JUIteratorBinding.<init>(JUIteratorBinding.java:59)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:58)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:47)
         at oracle.adf.model.binding.DCBindingContainerDef.createIterBindings(DCBindingContainerDef.java:197)
         at oracle.adf.model.binding.DCBindingContainerDef.createBindingContainer(DCBindingContainerDef.java:273)
         at oracle.adf.model.binding.DCBindingContainerReference.getBindingContainer(DCBindingContainerReference.java:40)
         at oracle.adf.model.BindingContext.get(BindingContext.java:427)
         at oracle.jbo.uicli.jui.JUPanelBinding.setup(JUPanelBinding.java:89)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.setBindingContext(LovForm.java:283)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.main(LovForm.java:173)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at com.sun.javaws.Launcher.executeApplication(Unknown Source)
         at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
         at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
         at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
         at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    ## Detail 0 ##
    javax.naming.NamingException: oracle.jbo.server.InitialContextImpl [Root exception is java.lang.ClassNotFoundException: oracle.jbo.server.InitialContextImpl]
         at oracle.jbo.common.JboInitialContextFactory.getInitialContext(JboInitialContextFactory.java:65)
         at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
         at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
         at javax.naming.InitialContext.init(Unknown Source)
         at javax.naming.InitialContext.<init>(Unknown Source)
         at oracle.jbo.common.ampool.DefaultConnectionStrategy.createApplicationModule(DefaultConnectionStrategy.java:114)
         at oracle.jbo.common.ampool.DefaultConnectionStrategy.createApplicationModule(DefaultConnectionStrategy.java:81)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.instantiateResource(ApplicationPoolImpl.java:2214)
         at oracle.jbo.pool.ResourcePool.createResource(ResourcePool.java:532)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.prepareApplicationModule(ApplicationPoolImpl.java:1859)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1739)
         at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2611)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:441)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:411)
         at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:406)
         at oracle.adf.model.bc4j.DataControlFactoryImpl.createSession(DataControlFactoryImpl.java:262)
         at oracle.adf.model.binding.DCDataControlReference.getDataControl(DCDataControlReference.java:63)
         at oracle.adf.model.BindingContext.get(BindingContext.java:411)
         at oracle.adf.model.binding.DCUtil.findSpelObject(DCUtil.java:228)
         at oracle.adf.model.binding.DCUtil.findContextObject(DCUtil.java:308)
         at oracle.adf.model.binding.DCIteratorBinding.<init>(DCIteratorBinding.java:127)
         at oracle.jbo.uicli.binding.JUIteratorBinding.<init>(JUIteratorBinding.java:59)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:58)
         at oracle.jbo.uicli.binding.JUIteratorDef.createIterBinding(JUIteratorDef.java:47)
         at oracle.adf.model.binding.DCBindingContainerDef.createIterBindings(DCBindingContainerDef.java:197)
         at oracle.adf.model.binding.DCBindingContainerDef.createBindingContainer(DCBindingContainerDef.java:273)
         at oracle.adf.model.binding.DCBindingContainerReference.getBindingContainer(DCBindingContainerReference.java:40)
         at oracle.adf.model.BindingContext.get(BindingContext.java:427)
         at oracle.jbo.uicli.jui.JUPanelBinding.setup(JUPanelBinding.java:89)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.setBindingContext(LovForm.java:283)
         at oracle.sample.jbo.uicli.jui.custom.utility.LovForm.main(LovForm.java:173)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at com.sun.javaws.Launcher.executeApplication(Unknown Source)
         at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
         at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
         at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
         at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: oracle.jbo.server.InitialContextImpl
         at com.sun.jnlp.JNLPClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at oracle.jbo.common.java2.JDK2ClassLoader.loadClassForName(JDK2ClassLoader.java:38)
         at oracle.jbo.common.JBOClass.forName(JBOClass.java:161)
         at oracle.jbo.common.JboInitialContextFactory.getInitialContext(JboInitialContextFactory.java:53)
         ... 41 more

  • General questions about JClient

    1. We are having problems with a business application we have developed using BC4J and a JClient client. The performance is horrible. On one update form we have 7 comboboxes, two tabels, some labels and one textfield. It takes 12 - 15 seconds to load, first time, and 4 - 7 seconds second time. Isn't it possible to get better performance on complexe GUI's using JClient?
    2. We have found out that the navigation binding on the comboboxes are about 10 - 15 times as slow as a LOV binding, but we are having problems using the LOV binding. The comboboxes work in a master - detail relationship, and we have that working with a view link and navigation binding. But we would like to use the faster LOV binding. Is it possible to use a LOV binding in a master - detail relationship?
    3. Why are navigation bindings so slow compared to LOV bindings?
    4. What are you general plans with JClient?
    5. Could you possible refer to another project or currently running program that is build using JClient. We feel that we are a little alone on this issue. Is JClient only running on samples, or has it shown it's effeciency in real life.
    6. It is running whitout problems in the samples and when we use the wizards to generate simple forms. But when we construct a complex GUI-structure we quickly run into performance problems. But also unexpected problems that we have difficulty solving, due to lack of documentation and knowledge.
    We would really appreciate, if you would take the time to answer our questions.
    A frustated development team.

    1. We are having problems with a business application we have developed using BC4J and a JClient client. The performance is horrible. On one update form we have 7 comboboxes, two tabels, some labels and one textfield. It takes 12 - 15 seconds to load, first time, and 4 - 7 seconds second time. Isn't it possible to get better performance on complexe GUI's using JClient?Depends on how the application is setup. There are a number of options for deployment that affects how the client app will perform. Are you running JClient app in client-server mode?
    Also in JDev 903, JClient designtime and runtime has fixed a number of issues that led to poor performance by default on a JClient wizard generated app by generating code that performs lazy load of controls and lazy bind of controls. This definitely affects the startup time of forms with tab windows such that only the required controls/bindings on the display is created to begin with.
    Further more if you have a certain example situation that you want us to look at, we'd definitely give that a test to see where the performance bottle-necks are? From our work with other customers, we've seen examples where application assumptions have led to "performance degradation" and when you remove those assumptions, the performance improvements are "noticable" - like how many queries get executed when you startup? Are all those needed? Could the queries be optimized? How many controls come up? Are they all visible and bound? Could they be lazily rendered/bound? etc.
    Yes, we do not have a suggested document yet, as JClient is still pretty new and customers are working on real-life apps which we've studied over time and are gathering "inputs" for best - practices kind of an article/example.
    2. We have found out that the navigation binding on the comboboxes are about 10 - 15 times as slow as a LOV binding, but we are having problems using the LOV binding. The comboboxes work in a master - detail relationship, and we have that working with a view link and navigation binding. But we would like to use the faster LOV binding. Is it possible to use a LOV binding in a master - detail relationship? In JDev 902, LOV Binding was "fetching" all the data for LOV Bindings upfront, so if your data set is small it'd perform well, however in most realtime customer apps that we saw, we found this to be a problem as LOVs would take time to come up the first time. That's been fixed in 903. Now Lovs and Navigation bindings both respect the fetch sizes and other tuning parameters set on the Bc4J ViewObject. So you can tune the fetchsize/rangesize on the VO in the Bc4J object to control how much data is fetched upfront for a given binding. that will definitely affect performance and memory usage as based on a case by case basis, apps would determine what/how many rows should be fetched upfront vs. how many to fetch on scroll/navigation etc.
    3. Why are navigation bindings so slow compared to LOV bindings?see 2 above.
    4. What are you general plans with JClient?See the JClient docs on OTN (jdeveloper page) for general information.
    If you have specific needs/questions we could sure get you answers for those.
    5. Could you possible refer to another project or currently running program that is build using JClient. We feel that we are a little alone on this issue. Is JClient only running on samples, or has it shown it's effeciency in real life.Again JDeveloper home page has referenceslinks that indicate which customers have used what kind of applications. Note that JClient was released for the first time in JDev 9.0.2 so it's still going thru the first round of performance and usability improvements.
    6. It is running whitout problems in the samples and when we use the wizards to generate simple forms. But when we construct a complex GUI-structure we quickly run into performance problems. But also unexpected problems that we have difficulty solving, due to lack of documentation and knowledge.This forum on OTN has a great amount of discussion on JClient issues and how to resolve various performance and other bugs in Jdev 902.
    I agree on lack of complete documentation and examples and we're working towards that. Note that we did put up a Jclient Bindings demo which is a good example of how to "architect" a medium complexity application, how to layout controls, bind them, show/hide etc. An improved version of this example will be placed on OTN alongwith a version of JDev 903 when it is made available on OTN.
    We would really appreciate, if you would take the time to answer our questions.
    A frustated development team. And your critique/bugs/feature ideas are always welcome.

Maybe you are looking for