ADF BC with CDM Ruleframe informationals and warnings

Best experts,
I have an issue regarding using ADF BC in combination with CDM-RuleFrame.
We are raising different kind of messsages (errors,warnings,informationals).
JHeadstart delivers an AM that raises the errors but ignores the transactions with warnings and informationals.
To display the informationals and warnings I want to follow this path:
DB ==> Transaction (stores the messages on the AM) ==> CommitBean (Displays the messages in browser)
I use the folowing transactionImpl:
public class RuleFrameTransactionImpl extends DBTransactionImpl2{
  String mUndoId;
  private static Logger sLog = Logger.getLogger(RuleFrameTransactionImpl.class);
  private boolean hasErrors;
  public static String MESSAGE_SEPARATOR = "<br>";
  public static String QMS_UNHANDLED_EXCEPTION = "QMS-00100";
  public RuleFrameTransactionImpl()
    super();
   * Standard Ruleframe
  private void openRuleFrameTransaction()
    try
      CallableStatement cs = this.createCallableStatement("begin qms_transaction_mgt.open_transaction('JAVA'); end;",
                                                          1);
      try
        cs.execute();
      catch (java.sql.SQLException e)
        handleSQLError(e);
      finally
        try
          cs.close();
        catch (Exception ex)
          sLog.error("Error closing Callable Statement for CDM RuleFrame Open Transaction: " + ex);
  public void closeRuleFrameTransaction()
    // Close RuleFrame transaction
    CallableStatement cs = this.createCallableStatement("begin qms_transaction_mgt.close_transaction('JAVA'); end;",
                                                        1);
    try
      cs.execute();
      setDBFeedbackOnApplicationModule();
    catch (java.sql.SQLException e)
      handleSQLError(e);
    finally
      try
        cs.close();
      catch (Exception ex)
        sLog.error("Error closing Callable Statement for CDM RuleFrame Close Transaction: " + ex);
  @Override
  public void postChanges(TransactionEvent te)
    passivateStateForUndo();
    openRuleFrameTransaction();
    super.postChanges(te);
    setDBFeedbackOnApplicationModule();
    catch (DMLException e)
      // retrieve SQL error from details
      Object details[] = e.getDetails();
      if (details[0] instanceof SQLException)
        handleSQLError((SQLException)details[0]);
      // If reached this line, the detail is not a SQLException,
      // so throw it again
      throw e;
  public void handleSQLError(SQLException e)
    throws JboException
    if ((e.toString().indexOf("ORA-20998") > 0) ||
      // 20999 is raised when posting of changes fails
      // due to database constraint violation or built-in TAPI rule
      (e.toString().indexOf("ORA-20999") > 0))
      setDBFeedbackOnApplicationModule();
    else
      // Raise the SQL exception, it is not a RuleFrame error
      throw new JboException(e);
  @Override
  public void doCommit()
    closeRuleFrameTransaction();
    super.doCommit();
  public void passivateStateForUndo()
    sLog.debug("Executing passivateStateForUndo so we can roll back the Application Module when RuleFrame transaction fails");
    ApplicationModule am = getRootApplicationModule();
    String undoId = am.passivateStateForUndo("beforeRuleFramePost",
                                             null,
                                             0);
    mUndoId = undoId;
    hasErrors = false;
  public void activateStateForUndo()
    // If an undoId is stored on the request, we rollback the transaction
    // to the undoId savepoint. The undoId is stored prior to deleteing rows
    // from a table. By rolling back to the state prior to removing the
    // rows, we can re-display the failed-to-delete rows
    String undoId = mUndoId;
    if (undoId != null)
      sLog.debug("Executing activateStateForUndo, restoring state of before postChanges because RuleFrame transaction failed");
      ApplicationModule am = getRootApplicationModule();
      am.activateStateForUndo(undoId,
                              0);
   * Aanpassingen vanwege QMS-messages (informationals + warnings)
  public void setDBFeedbackOnApplicationModule()
    RuleFrameApplicationModuleImpl am = (RuleFrameApplicationModuleImpl)getRootApplicationModule();
    sLog.debug("SetDBFeedback");
    CallableStatement st = null;
    try
      sLog.trace("create statement");
      // 1. Create a JDBC PreparedStatement for
      st = createCallableStatement("begin jhs_pck_errors.get_db_feedback(?,?,?);end;",
                                   0);
      sLog.trace("define parameters");
      // 2. Define out parameters
      st.registerOutParameter(1,
                              Types.VARCHAR);
      st.registerOutParameter(2,
                              Types.VARCHAR);
      st.registerOutParameter(3,
                              Types.VARCHAR);
      sLog.trace("Execute statement");
      // 3. Execute the statement
      st.executeUpdate();
      sLog.trace("Build return objects");
      // 4. Build return objects
      ArrayList informationArray = new ArrayList();
      ArrayList warningArray = new ArrayList();
      ArrayList errorArray = new ArrayList();
      sLog.trace("merge into array");
      mergeStringIntoArray(informationArray,
                           st.getString(1));
      mergeStringIntoArray(warningArray,
                           st.getString(2));
      mergeStringIntoArray(errorArray,
                           st.getString(3));
      if (errorArray.size() > 0)
        //Error occured ==> rollback am.
        activateStateForUndo();
      am.addErrorArray(errorArray);
      am.addWarningArray(warningArray);
      am.addInformationArray(informationArray);
    catch (SQLException e)
      throw new JboException(e);
    finally
      if (st != null)
        try
          // 5. Close the statement
          st.close();
        catch (SQLException e)
  private void mergeStringIntoArray(ArrayList al, String string)
    sLog.debug(string);
    if (string != null)
      string = string.replaceAll("   ",
                                 "°");
      StringTokenizer st = new StringTokenizer(string,
                                               "°");
      int tokenCount = st.countTokens();
      sLog.debug("Tokencount messages : " + tokenCount);
      for (int i = 0; i < tokenCount; i++)
        sLog.debug("Add " + i);
        al.add(st.nextToken());
}This works when there are only informationals or warnings.
When errors are raised I recieve the following stacktrace:
<Warning> <oracle.adf.controller.faces.lifecycle.Utils> <BEA-000000> <ADF: Adding the following JSF error message: Internal error:Entity.afterCommit.status_modified
oracle.jbo.JboException: Internal error:Entity.afterCommit.status_modified
at oracle.jbo.server.EntityImpl.afterCommit(EntityImpl.java:7049)
at oracle.jbo.server.DBTransactionImpl.doAfterCommit(DBTransactionImpl.java:2189)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2085)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2273)
at local.achmeavastgoed.model.adfbc.base.RuleFrameTransactionImpl.commit(RuleFrameTransactionImpl.java:188)
Can you give me some advise?
Regards,
Romano

Hi Romano,
your application is not aware of the fact that there are errors because all exceptions are gracefully handled.
Because of that the doCommit() in your code example will just commit the changes by calling super.doCommit() even after the activateStateForUndo() did a rollback.
public void doCommit()
    closeRuleFrameTransaction();
    super.doCommit();
  }So you need to change two things:
First rewrite the doCommit()
public void doCommit()
    closeRuleFrameTransaction();
try{
    super.doCommit();
      } catch (JboException e){
      //  do something here
}And also throw a Jbo exception in the handleSQLError()
   public void handleSQLError(SQLException e) throws JboException
      if ((e.toString().indexOf("ORA-20998") > 0)
           // 20999 is raised when posting of changes fails
           // due to database constraint violation or built-in TAPI rule    
           || (e.toString().indexOf("ORA-20999") > 0)
         setDBFeedbackOnApplicationModule();
         throw new JboException(e);
      else
     ....................................Now it should work. Your application will gracefully handle the errors, and once that is done, you just throw an exception in order not to commit.
Regards
Luc Bors

Similar Messages

  • An HTML DB application over table with CDM RuleFrame

    Hi guys,
    I have an Oracle Forms application we built using the CDM RuleFrame framework available with Headstart (an offering from Oracle Consulting). This framework allows us to validate all our business rules in the database using PL/SQL packages and DB triggers at commit time. When at least 1 rule is invalid, a generic exception is raised and all messages are available thru a call to a procedure that returns a PL/SQL table of records.
    Now, we need to build a Web interface to that application and I need to know if we can reuse the same messaging framework we already have if we use HTML DB.
    I don't know if it is relevant or not but Headstart does come with a mechanism to display those errors with the now defunct WebDB.
    What do you guys think?
    Thanks
    P.S. Be gentle please as I have no experience (yet) with HTML DB

    In this small example, you create a process and button which fires the process. Also, create an item called ERR_TXT. Make the process source:
    begin
    :foo := 1/0;
    exception when others then
    :ERR_TXT := sqlerrm;
    end;
    When you run this page and click the button, you'll see that the item ERR_TXT contains the value:
    ORA-01476: divisor is equal to zero
    In your case, you'd be looking for a specific exception and you'd get the error messages out of the PL/SQL table rather than simply from SQLERRM.
    Once you have the messages and assigned them to one or more HTML DB items you can print them out in separate region.
    Sergio

  • [Solved]Problem in showing ADF tables with 50,000 Records and more in TP4

    Hi,
    When I tried to view readonly ADF table in TP4, it loaded perfectly, but when i tried to run the vertical scrollbar to bottom record, it showed Fetching Data .... for few minutes and finally it showed a message. java.lang.OutOfMemoryError: Java heap space.
    When I tried to view normal ADF table in TP4, it loaded perfectly, but when i selected one row a popup Error message came and reported all the columns in the table with java.lang.NullPointerException.
    Similar functionality works beautifully in JDeveloper 10g version. Seems to be a serious problem in handling cached rows.
    Regards,
    Santhosh
    I am also getting a warning in OC4J console as given below:
    WARNING: Application loader current-workspace-app.web.SRApplication-ViewController-webapp:0.0.0 may not use /D:/Appl/jdevstudio1111/j2ee/home/lib/oc4j-internal.jar (from <code-source> in META-INF/boot.xml in D:\Appl\jdevstudio1111\j2ee\home\oc4j.jar)
    Message was edited by:
    Santhosh1234
    Message was edited by:
    Santhosh1234

    Hi!
    You have two ways:
    1. build your own table CollectionModel that will use TopLink paged data source access (see Pedja's thread here Paging of large data sets - SOLUTION
    2. use new Paged EJB finders that started to appear with TP4 when you use wizard to generate SessionBeans (named something like "query<Entity>FindAllByRange") . I posted already question about this new paged finders here How to use new "query<Entity>FindAllByRange" EJB finders? but no answers from devs yet :)
    Personally, I opt for no. 2 (paged finders) as it looks more platform-supported that writing custom CollectionModels for each finder... But until devs enlighten us with details how the paged finders are to be used (the af:table is not [yet?] supportive for drag-and-drop of paged finders), we are stuck with 1. option.
    Regards,
    Pavle

  • Can I Integrate ADF Mobile with (BPEL or BPM)

    I want to know if I can Integrate ADF Mobile with (BPEL or BPM) and can I open my worklist App from ADF Mobile.

    Hi,
    why don't you access the worklist app from the mobile device browser?
    To answer your question: You can access BPEL processes as a service from an ADF Mobile application. If you have URLs which content you want to display within the mobile Application, then try adding a feature that uses a URL as a resource.
    Frank

  • Programatically creating ADF Tree with nodes,child nodes & links?

    Hi,
    Currently I am using Build JDEVADF_11.1.1.3.PS2_GENERIC_100408.2356.5660. Please provide me detailed code for programatically creating ADF Tree with nodes, child nodes and links in it.
    Thanks,
    Vik

    You need to create a model for the tree. ADF has a build in model that you can use to build your own tree.
    This is what you need to write in your JSPX:
    <af:tree summary="Navigation" id="treeNav" value="#{pageFlowScope.treeNavigationBackingBean.model}"
               var="node" contextMenuSelect="true" rowSelection="single" fetchSize="30">   
           <f:facet name="nodeStamp">
          <af:outputText id="txtText" value="#{node.text}"/>
        </f:facet>
    </af:tree>This is the code to retreive the model:
      public TreeModel getModel() {
        if(model == null)
            model = new ChildPropertyTreeModel(instance,"children");
        return model;
      }instance contains the actual tree. I build it in the constructor of my managed bean:
        public BeanTreeNavigation() {
          ArrayList<TreeItem> rootItems = new ArrayList<TreeItem>();
          TreeItem node1 = new TreeItem("Root node");
             ArrayList<TreeItem> level1 = new ArrayList<TreeItem>();
             TreeItem level1Node1 = new TreeItem("Level1 Node1");
              level1.add(level1Node1);
           node1.setChildren(level1);
           rootItems.setChildren(node1); 
          this.setListInstance(rootItems);
          root = rootItems;
      public void setListInstance(List instance) {
        this.instance = instance;
        model = null;
      }The TreeItem class is not a default one. I created it myself. You can make of it whatever you want:
        public class TreeItem {
          private String text;
           private List<TreeItem> children = null;
           public TreeItem(String text){
            this.text = text;
            public void setText(String text) {
                this.text = text;
            public String getText() {
                return text;
            public void setChildren(List<TreeItem> children) {
                this.children = children;
            public List<TreeItem> getChildren() {
                return children;
            }I wrote the TreeItem as an inner class of the managed bean.
    The most important part is the getModel methode. There you need to specify an Object and the name of the getter that will return a List of the children.
    Hope this helps.
    Edited by: Yannick Ongena on Feb 22, 2011 7:30 AM

  • ADF integration with Ebiz (R12.2.3)

    Hi,
        I have to develop a custom ADF application with around 10 pages and integrate it with EBiz 12.2.3.
    Since the Oracle apps is on Weblogic, can I make use of the same weblogic server to deploy my custom application? Or do I need a separate Weblogic server to deploy this application?
    Please advise.
    Thanks,

    Hi All,
    Please confirm can we use Oracle 12.2.3 weblogic server for custom ADF deployment.
    As mentioned above Oracle said we need different weblogic Server for same.
    Request you to share :
    Oracle link or SR or metalink note where it mentioned.
    Regards,
    Sameer

  • How to pre-populate ADF form with data?

    Hi Guys,
    Just wondering how you go about generating a pre-populated ADF form. Is it something that is done though the ADF designer and Business Objects? or do you have to create the Database tables seperatley and bind them into ADF and the workflow. Specifically I want this so a user is presented with a several drop-down lists when the initiator human task is run.
    Thanks,
    Ross

    Hi Ross
    1. Yes, in the very first place in the Database, we added all the data manually for all the Lookups. Its our own custom Schema. We are planning to provide some simple admin screens in a different WebApps to maintain these lookup values. Note that this is a different simple ADF App, with one EJB Layer and EJB Layer calling this database and getting/updating the values.
    2. ALSO, we have some lookup values that we get from totally another System/application like Oracle EBS Suite. For this, we already have a custom schema created. In this custom schema, we have some stored procedures created by the EBS database developers (they are more familiar with EBS). Now within our EJB layer, we use JPA architecture, call these stored procedures, and get all the lookup values and show in the TaskDetails page. These lookup values are maintained in EBS itself, so we do not have any custom admin screens within our SOA/BPM project.
    In conclusion, for our SOA/BPM applications, we have like 2 Databases. First database is for SOA Components where we run RCU comand and it has all SOA_INFRA, MDS, ORABAM schemas etc. The second database is for our custom schema specific to our application. Here we have our own lookup tables, custom tables and any cutom stored procedures that coonect to external EBS etc. From Weblogic console, we just create a Datasource for this second database and use that in JPA layer (persistence.xml file). For the first database, you already know that at domain creation itself, it will create all datasources also.
    Thanks
    Ravi Jegga

  • ADF: Problem with List and ListOfValues bindings

    In my page I have panelSplitter.
    In first facet I have panelCollection with ADF tree. For the tree definition I have Iterator binding, which contains the elements with no parent and one accessor, which define a recursive master-detail hierarchy. For the tree node I have specified TragetIterator property, that look up second iterator binding, which containes all tree elements (parents and their children).
    In second facet I have panelForm with input fields, based on second iterator binding. So when the user clicks on any node in the tree, it can see and edit in input fields the data for this node.
    In panelCollection I have placed two buttons to create a new node and to delete current node.
    By creation of new node I do the following:
    1) From currently selected node I get the value of one attribute named Code, which is alternate unique key;
    2) From second iterator binding I get the ViewObject, create a new Row and for the "parent" attribute I set the value derived from step 1.
    3) I rerender through PPR tree component and PanelForm with input fields.
    As result I have a new empty node in the tree and empty input fields in second facet, which must be populated and submitted (commited).
    My problem happens after I populate all fields in panelForm, when I commit changes (press Button with Commit action binding) and rerender page content. The exception, which is trown is listed below.
    I want to make the follwing additional remarks:
    1) My primary key in ViewObject is ROWID. I need this attribute to uniquely identify created new rows.
    2) The problem happens only when in panelForm I have field based on Model driven List or ListOfValues binding (<af:selectOneChoice> or <af:inputListOfValues>).
    When I create a new row the ADF BC assign to it one "dummy" ROWID (for example 317499) and after Commit this ROWID is replaced wtih actual ROWID from database. But I don't understand, why after commit of changes on the page the method findByKey of oracle.jbo.server.ViewObjectImpl is called with initial "dummy" ROWID (317499)?
    When there is no field based on List or ListOfValues binding, then there are no calls of findByKey method and there is no such problem.
    And that is the exception:
    2009-7-29 18:04:54 oracle.adf.controller.faces.lifecycle.FacesPageLifecycle addMessage
    WARNING: ADFc: ORA-01410: невалиден ROWID
    oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation. Statement: SELECT OU.CODE, OU.NAME, OU.ABBREVIATION, OU.ORGUNIT_TYPE, OU.PARENT_UNIT, OU.IS_VALID, OU.ROWID FROM ORG_UNITS OU WHERE (OU.ROWID = :1)
         at oracle.jbo.server.BaseSQLBuilderImpl.processException(BaseSQLBuilderImpl.java:3837)
         at oracle.jbo.server.OracleSQLBuilderImpl.processException(OracleSQLBuilderImpl.java:4621)
         at oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:1150)
         at oracle.jbo.server.QueryCollection.executeQuery(QueryCollection.java:762)
         at oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(ViewObjectImpl.java:5681)
         at nsi.isbs.dmc.common.IsbsViewObjectImpl.executeQueryForCollection(IsbsViewObjectImpl.java:56)
         at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:1005)
         at oracle.jbo.server.ViewRowSetImpl.executeQueryForMasters(ViewRowSetImpl.java:1162)
         at oracle.jbo.server.ViewRowSetImpl.executeQueryForMode(ViewRowSetImpl.java:1082)
         at oracle.jbo.server.ViewRowSetImpl.executeQuery(ViewRowSetImpl.java:1076)
         at oracle.jbo.server.ViewObjectImpl.retrieveByKey(ViewObjectImpl.java:13994)
         at oracle.jbo.server.ViewObjectImpl.retrieveByKey(ViewObjectImpl.java:13758)
         at oracle.jbo.server.ViewObjectImpl.retrieveByKey(ViewObjectImpl.java:13752)
         at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:4891)
         at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:4679)
         at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:4673)
         at oracle.jbo.server.ViewObjectImpl.findByKey(ViewObjectImpl.java:9456)
         at oracle.jbo.server.ApplicationModuleImpl.getListBindingName(ApplicationModuleImpl.java:8421)
         at oracle.adf.model.bc4j.DCJboDataControl.getListBindingName(DCJboDataControl.java:2244)
         at oracle.jbo.uicli.binding.JUCtrlListBinding.initDefFromServerBinding(JUCtrlListBinding.java:2366)
         at oracle.jbo.uicli.binding.JUCtrlListBinding.getAttributeDefs(JUCtrlListBinding.java:2327)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeDef(JUCtrlValueBinding.java:497)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.getAttributeDef(JUCtrlValueBinding.java:487)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.isInternalAttributeUpdateable(JUCtrlValueBinding.java:3262)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.isAttributeUpdateable(JUCtrlValueBinding.java:1617)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.isAttributeUpdateable(JUCtrlValueBinding.java:1695)
         at oracle.jbo.uicli.binding.JUCtrlValueBinding.isUpdateable(JUCtrlValueBinding.java:2512)
         at oracle.jbo.uicli.binding.JUCtrlListBinding.isUpdateable(JUCtrlListBinding.java:3357)
         at oracle.adfinternal.view.faces.model.AdfELResolver._isReadOnly(AdfELResolver.java:85)
         at oracle.adfinternal.view.faces.model.AdfELResolver.isReadOnly(AdfELResolver.java:101)
         at javax.el.CompositeELResolver.isReadOnly(CompositeELResolver.java:353)
         at com.sun.faces.el.FacesCompositeELResolver.isReadOnly(FacesCompositeELResolver.java:113)
         at com.sun.el.parser.AstValue.isReadOnly(AstValue.java:128)
         at com.sun.el.ValueExpressionImpl.isReadOnly(ValueExpressionImpl.java:230)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.getReadOnly(EditableValueRenderer.java:400)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.wasSubmitted(EditableValueRenderer.java:341)
         at oracle.adfinternal.view.faces.renderkit.rich.EditableValueRenderer.decodeInternal(EditableValueRenderer.java:113)
         at oracle.adfinternal.view.faces.renderkit.rich.SimpleInputListOfValuesRendererBase.decodeInternal(SimpleInputListOfValuesRendererBase.java:88)
         at oracle.adfinternal.view.faces.renderkit.rich.LabeledInputRenderer.decodeInternal(LabeledInputRenderer.java:55)
         at oracle.adf.view.rich.render.RichRenderer.decode(RichRenderer.java:236)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.__rendererDecode(UIXComponentBase.java:1089)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decode(UIXComponentBase.java:714)
         at oracle.adf.view.rich.component.UIXInputPopup.processDecodes(UIXInputPopup.java:134)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:970)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:956)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:812)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:970)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:956)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:812)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:970)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:956)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:812)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:970)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:956)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:812)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(UIXComponentBase.java:970)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(UIXComponentBase.java:956)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(UIXComponentBase.java:812)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl$ApplyRequestValuesCallback.invokeContextCallback(LifecycleImpl.java:1113)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:722)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.invokeOnComponent(ContextSwitchingComponent.java:153)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.invokeOnComponent(ContextSwitchingComponent.java:153)
         at oracle.adf.view.rich.component.fragment.UIXPageTemplate.invokeOnComponent(UIXPageTemplate.java:208)
         at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
         at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:664)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:303)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:175)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:181)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:85)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:279)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:239)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:196)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:139)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
         at oracle.security.jps.wls.JpsWlsFilter$1.run(JpsWlsFilter.java:85)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:257)
         at oracle.security.jps.wls.JpsWlsSubjectResolver.runJaasMode(JpsWlsSubjectResolver.java:250)
         at oracle.security.jps.wls.JpsWlsFilter.doFilter(JpsWlsFilter.java:100)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:65)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(Unknown Source)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: java.sql.SQLException: ORA-01410: невалиден ROWID
         at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
         at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:116)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:177)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
         at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:947)
         at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:891)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
         at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1490)
         at oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:1040)
         ... 104 more
    ## Detail 0 ##

    I have resolved my problem. I have changed the type of list binding to be Dynamic List (not Model Driven List).

  • Issues with CDM and Windows XP?

    Hi,
    My client is planning an upgrade to Windows XP Professional. They use the I-Development Accelerators, including the CDM.
    Are there any known issues or problems with using CDM in an XP environment?
    THanks,
    Beatriz.

    Beatriz,
    Not that we know of, but honesty forces me to say that we haven't tested it ourselfs yet, since we still use Windows/2000.
    On the other hand, from my experience issues with CDM always were more dependent on the version of the browser
    or Word you are using and less of Windows versions. It would not surprise me if using the Word templates with
    Word from Office XP would know some issues. Those would than be caused by changed behaviour in the way Word
    deals with macro's.
    What the rest of the iDevelopment Accellerator Suite concerns, this can be easily found out by checking the
    compatability of Designer and Developer against Windows XP.
    With kind regards, Jan Kettenis

  • Jdev9.0.3 JSP STRUTS ADF application problem with jdve10.1.3 and 10g IAS

    Hello, All,
    My current application is developed with jdev9.0.3 and deployed to OC4J 9.0.4 on ias, it works fine.
    Now I need to deploy it to our new 10g application server. the application run into the following error:
    NoClassDefFoundError: oracle/jdeveloper/html/HTMLElement
    at oracle.adf.controller.struts.util.ErrorReporting.addError(ErrorReporting.java:99)
    at oracle.adf.controller.struts.util.ErrorReporting.addError(ErrorReporting.java:94)
    Then I tried to migrate the application to jdev10.1.3 first, the code run into some red lines, e.g. <c:out .../> can't be within <c:set.../>, but it compiled ok and run fine within jdeveloper.
    But when I deployed the new .war file into the 10g server, now I run into different set of error(Please see belowe).
    Is there anything I need to do when I deploy a jdev903 application to 10g server, or migrating to jdev10.1.3?
    Any advice will be appreciated,
    Deborah
    java.lang.NoClassDefFoundError     at at oracle.adf.controller.v2.struts.lifecycle.StrutsPageLifecycleFactory.getDefaultInstance(StrutsPageLifecycleFactory.java:68)
    at org.apache.struts.config.impl.ModuleConfigImpl.freeze(ModuleConfigImpl.java:503)     
    at javax.servlet.GenericServlet.init(GenericServlet.java:258)     
    at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.HttpApplication.loadServlet(HttpApplication.java:2354)
    ...

    Migrating ADF/Struts 10.1.2 to 10.1.3.
    http://radio.weblogs.com/0118231/2006/02/28.html#a665

  • OAM and ADF Security with WebLogic 11

    WebLogic Server 11, ADF 11, OAM 10.1.4.3
    I understand (and have successfully implemented) an ADF application with application roles tied to enterprise roles which are mapped to OAM groups (and users). This appears to use the OAMAuthenticator and OAMIdentityAsserter authentication providers from OAM installed into the WLS.
    However, there appears to be a gap in the authorization component beyond simple group membership. Does WLS support roles and policies defined in OAM as they might pertain to an ADF application? In the Oracle Access Manager Integration Guide, the entire section on integration with WLS has been removed between versions 10.1.4.0.1 and 10.1.4.3 (along with several other chapters). What is the future direction here? What would be the best means to create roles and policies (including dynamic roles) which extend beyond simple group membership?
    Regards,
    Tom Gresham

    For a start JDeveloper 10.1.3 uses an older version of JSF that WebLogic 11g. You would be best upgrading your app with JDeveloper 11g and then re-deploying.

  • CDM RULEframe Client-Side Validation/Front-End Enforcement

    In a designer 6/headstart 2.x project CDM ruleframe is applied.
    There is however a requirement for having an immediate response when data is entered that violates a business-rule.
    There are a few ways to satisfy this requirement. One way would be to code the business rules both in triggers and the CAPI.
    Another way would be to use the CAPI structure to enable front-end enforcement.
    As I understand it you should call the (table)CAPI function that evaluates to TRUE/FALSE then raise an alert with the message. Or even better post the message the same way the CAPI does and use the 'default' mechanism to show the errors.
    Will this work?
    Or will this interfere with the transaction-concept of ruleframe.
    Is it possible to get a list of business rules per module/component/table/column-usage? (Which views to use best)
    So from this list when-validate-item triggers can be generated via the repository API?
    null

    Peter,
    You wrote:
    As I understand it you should call the (table)CAPI function that evaluates to TRUE/FALSE then raise an alert with the message. Or even better post the message the same way the CAPI does and use the 'default' mechanism to show the errors.
    Will this work?
    Or will this interfere with the transaction-concept of ruleframe.Answer: yes, this will work. An easy way to generate the alert into your form is by using a client-side check constraint of type Function Call, and specify the message code in the error property of the check constraint. It will not interfere with the transaction-concept.
    Is it possible to get a list of business rules per module/component/table/column-usage?
    (Which views to use best)These lists are part of Oracle Designer Web Assistant. ODWA 6.0 (for Designer 6.0) can be downloaded for free from the Headstart corner on OTN (Consulting -> iDelivery).
    So from this list when-validate-item triggers can be generated via the repository API?If you want to generate the client side enforcements, I would advise a Headstart type utility that creates the check constraints as mentioned above. In fact, such a utility will be included in Headstart 6i. If you need it for Designer 6.0, you could hire an Oracle consultant who could convert it for you (which should not be difficult). Contact your Consulting Representative for more information!
    regards,
    Sandra

  • GOTCHA's with Setting up ADF Security with JDev 11.1.1.6.0

    If you're getting into ADF security, you're probably going to want to get rid of that ugly default login.html page. I mean, it gets the job done, but we want something a little better. And if you want something a little better and you're using JDev 11.1.1.6.0, it behooves you to read this post!
    First off, get acquainted with these four posts. All good stuff. They'll walk you through the 1st half of what you need to know. Y'know, the non-Gotcha half.
    http://one-size-doesnt-fit-all.blogspot.com/2010/07/adf-security-revisited-again-again.html
    http://myadfnotebook.blogspot.com/2011/11/adf-security-basics.html
    http://andrejusb.blogspot.com/2010/11/things-you-must-know-about-adf-faces.html
    http://java2go.blogspot.com/2010/12/creating-centered-page-layout-using-adf.html
    Are you getting either of the following errors?
    <CodebasePolicyHandler> <migrateDeploymentPolicies> Migration of codebase policy failed. Reason: {0}.
    oracle.security.jps.JpsException: java.lang.IllegalArgumentException: oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl
    Error 500--Internal Server Error
    java.lang.RuntimeException: Cannot find FacesContextI'll show you where they're coming from. Follow along.
    1) Create a new application.
    2) Create three .jspx pages called login, error, and welcome.
    3) Generate PageDef files for them by right-clicking on the file and selecting "Go To PageDefinition". You'll want these so that you may apply security against them.
    4) Right-Click on your Application and select Secure->Configure ADF Security
    5) ADF Authentication and Authorization -> Form Based Authentication (Use the search symbol to select your created login and error pages. Should be something like "/faces/login.jspx") -> No Automatic Grants -> Finish
    Right-Click your welcome.jspx and select run. You'll get this error before your web page opens up in your browser and then proceeds to wig out.
    <CodebasePolicyHandler> <migrateDeploymentPolicies> Migration of codebase policy failed. Reason: {0}.
    oracle.security.jps.JpsException: java.lang.IllegalArgumentException: oracle.security.jps.internal.core.principals.JpsAnonymousRoleImplThat just won't do. Let's fix it, shall we?
    6) Open your newly JDev created jazn-data.xml file. It's located in the Application Resources panel (usually located by Data Controls and your Projects expandable panels)
    7) Resource Grants -> Resource Type (Web Page dropdown) -> error page should have a key symbol by it. Delete the anonymous role in the "Granted To" column. Now click the green button to add an Application Role. Huh, there's TWO of them? How bout that? Looks like we're going to have to delete some XML code!
    8) Click the Source tab on the bottom of the page to open up the XML View. You'll see the following piece of erroneous code. Erroneous, I say!
      <policy-store>
        <applications>
          <application>
            <name>SecurityError</name>
            <app-roles>
              // Hello, I'm the app role that has sucked away two hours of your life that you can never, ever get back
              <app-role>
                <name>anonymous-role</name>
                <class>oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl</class>
                <display-name>anonymous-role</display-name>
              </app-role>
             // Whew, the end of that app role
            </app-roles>
            <jazn-policy>
              <grant>9) You're going to want to delete that app role XML
    10) Go back into your jazn-data.xml file and create some users. For example, bob and jane. Create an Enterprise role called "admin". Put bob and jane as members into this Enterprise role. Create an Application role called managers. Map managers to your Enterprise role admin.
    11) Go back to the Resource Grants tab -> Resource Type (Web Page) and delete any "Granted To" authorizations that may assigned to any of the pages. Assigned a "Granted To" application role of "anonymous-role" to the error and login pages. Assign "managers" to welcome.
    12) Run your welcome page. Yay, the error is gone. How sweet it is.
    Now you want to refactor/move your login and error page somewhere else? Great, just right-click and select factor. Refactor to some place like /public_html/jspx/<your login page>.jspx. Re-run your welcome page.
    // You fool!
    Error 404--Not Found
    From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
    10.4.5 404 Not FoundThat's not so good. Let's fix that.
    1) Open up web.xml. It's located at ViewController/WEB-INF/web.xml.
    2) Click the security tab and you'll see Form-Based Authentication with a login page and error page. Click that Search glass and locate your new file. Do the same for the error page. You should see something like "/jspx/login.jspx" come back.
    3) Re-run your welcome page.
    // Suckered AGAIN!
    Error 500--Internal Server Error
    java.lang.RuntimeException: Cannot find FacesContextThis is a tricky one. The search icon brings back a faulty address. Since we're using a .jspx page, it needs to be "/faces/jspx/login.jspx". Repeat for the error page. Re-run your welcome.jspx.
    Ahh!! Now THAT's how we do it in Kingsport!
    Finally, a custom .jspx login works. Now what are you doing here? Shouldn't you be playing some Diablo 3?
    Will

    Ha :-)
    Point being good summaries like yours tend to get lost on the forums because of the volume of posts. With a blog people have the chance to subscribe to your posts so it's just a better vehicle all round for posting content to help others.
    I highly recommend writing blogs even if it's for scratch notes, because you'll learn a lot in structuring your thoughts. It's also a really good way to get noticed in the community because bloggers stand out.
    But your call, no pressure of course ;-)
    CM.

  • Packaging ADF application with Libraries

    Hi Experts,
    I was exploring on packaging/ bundling an ADF application with all required libraries, so that this application can be deployed on any J2EE server.
    I have gone through another thread on similar topic - Error while deploying ADF application to a standalone weblogic server
    Above thread says that installation of run-time libraries are must. But I want to dig little deeper into the reasoning.
    What are libraries that can't be added into Application WAR file? (Normally J2EE developed application can be bundled and deployed on any of these servers (Weblogic/ tomcat/websphere)).
    Is it possible to bundle ADF application with all libraries and then deploy it to Websphere server directly (without installing 3rd party libraries)?
    Any help on this is appreciated.
    Thanks,
    Randhir

    Timo / Frank / Shay,
    Thanks for your help.
    Websphere server is being used by other applications. So the intention of bundling libs was to check ADF application funcationality on Websphere server without installing 3rd party ADF libraries (installation may conflict other libraries and some application can stop working).
    I gave a try on bundling all libraries with ADF application, but still I can see some error messages about missing libraries.
    What is your suggestion on installing 3rd party libs on Websphere server? Will this impact any deployed application?
    Thanks,
    Randhir

  • ADF scanning with HP Office jet pro 8600

    Have a new machine. I can scan documents individually on the scanner glass no problem, and when I feed documents through the ADF it all feeds through ok and says "scan successful" however what I have scanned through the ADF always shows as a blank document.  I have checked and double checked I am scanning the documents the right way up and even did it the opposite way just to be sure) and made sure I dont have anything on the glass blocking the scan.  I have changed between text and photo settings.  What am I doing wrong or is there something wrong with the scanner or the ADF?? Its like the document is not being fed through past the glass (I assume thats how it works??) however the machine doesnt make any funny noices or otherwise lets me know anything is wrong.  I get no error messages.  This is only with the ADF.

    If the document is coming in blank, one of the reasons for that could be that the ADF is dirty and it is not able to read the document. That would be the first thing that you would want to do when troubleshooting any kind of scan quality issue. The flatbed scanner and the ADF use different components to scan. That document is very relevant to this issue. Solution 5 is servicing the printer...which means that the ADF hardware has probably gone bad and it needs to be replaced. If you were to call into phone support, everything in that document would have to be completed before the printer could be replaced regardless. If it does come down to that, then you are saving yourself time by not having to do it later when you call into support. 
    However, I do have another step that can tried before reaching that conclusion. If after trying that you are still having issues, then I would recommend that we try a semi-full reset on the printer. If that doesn't fix it, then it is a hardware issue. Try the steps in that document and report back to me and let me know if they work or not. If they do not, I will send you a private message through the forums with the steps on how to perform a semi-full reset. 
    Best of luck,
    Kyle
    -------------How do I give Kudos? | How do I mark a post as Solved? --------------------------------------------------------

Maybe you are looking for