BC4J, EntityImpl : Domain4s Constructors

I Decided to implement my own Java Data Type using Domains and join them to Entity4s attributes. There are i.e. these reasons:
1. to recognize column type in getAttribute and setAttribute method in my Entity descendant and implement here special behavior (for example use Sequence)
2. to recognize type when I support Web edit layer - creating special edit behavior
I created two domains using Domain Wizard. Both of Domains were based on Integer and I added them other functionality. Both were
joined to NUMBER (10) columns in table.
JDev always created several constructors including one with String value.
When I debugged this code, behavior was different for each Domain. I loaded data from table using view.executeQuery and view.first methods.
From JBO framework was used constructor with String value in first case. Second Domain ended up with DataCreationException. I found
that problem was caused since constructor with BigDecimal value had missed. When i added it, everything was OK but constructor with BigDecimal value was used.
Could anybody give me piece of advice why framework doesn4t use Integer constructor I expect or at least the same type
of constructor4s value for both domains? Or is there any way how to predict which constructor will be called for domain of certain type?

I don't know why it is working within embeded OC4J, but it isn't working on AS. But I've got my 2 cents:
1) We put the code for assigning sequence to key after super.create(...). Maybe it's wrong (does anyone know), but I seems to me that this ensures, that the entity will have always id from sequence. I think that in your approach, if (somehow) the id would be within the attribute list it will override your sequnce value.
2) I don't think doDML is good place for things you want to do. Maybe you can look at:
http://otn.oracle.com/products/jdev/howtos/bc4j/multientityvo.html
Especialy part:
Pre-Populating the Foreign Key Attribute in New Employee Instances
It seems to me same situation as yours.
Regards
Miro

Similar Messages

  • ArrayOutOfBoundsException during EntityImpl.doDML (BC4J)

    Hi,
    in our BC4J application we have an entity object ("ContractProductionData") which is based on
    on a table. Additionally it has 3 attributes not based on a table column. A view objects selects
    data based on this entity objects and has some calculated attributes.
    An error occurres when a row is inserted in a detail entity object of "ContractProductionData".
    This happens when the changed data is posted to the database.
    The calculations are influenced by this row.
    In the stack trace you can see that View object(s) are notified about a change.
    What exactly happens in doDML of an EntityImpl?
    What array may have too less values?
    Sometimes the Exception is followed by the number 23. What does this number mean or
    can it help us to find the real error?
    Cheers, Elmar
    The stack trace of the error:
    java.lang.ArrayIndexOutOfBoundsException
    at oracle.jbo.server.ViewObjectImpl.sourceChanged(ViewObjectImpl.java:6684)
    at oracle.jbo.server.EntityCache.deliverEntityEvent(EntityCache.java:456)
    at oracle.jbo.server.EntityCache.notifyColumnChange(EntityCache.java:480)
    at oracle.jbo.server.EntityImpl.notifyAttributesChanged(EntityImpl.java:3466)
    at oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(OracleSQLBuilderImpl.java:465)
    at oracle.jbo.server.EntityImpl.doDML(EntityImpl.java:3907)
    at de.opitzconsulting.ovid.bc4j.contract.ContractProductionDataImpl.doDML(ContractProductionDataImpl.java:520)
    at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:3154)
    at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:2073)
    at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:2017)
    at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:1363)
    at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:1517)
    at de.opitzconsulting.apollo.SessionManager.commit(SessionManager.java:268)
    at de.opitzconsulting.apollo.form.Form.requestCommit(Form.java:276)
    at de.opitzconsulting.apollo.actions.DefaultActionHandler.doSave(DefaultActionHandler.java:353)
    at de.opitzconsulting.apollo.actions.DefaultActionHandler.handleAction(DefaultActionHandler.java:131)
    at de.opitzconsulting.apollo.actions.ActionManager.handleAction(ActionManager.java:289)
    at de.opitzconsulting.apollo.actions.ActionObject.actionPerformed(ActionObject.java:64)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)
    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:279)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:259)
    at javax.swing.plaf.basic.BasicMenuItemUI$ClickAction.actionPerformed(BasicMenuItemUI.java:1007)
    at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1384)
    at javax.swing.JComponent.processKeyBinding(JComponent.java:2078)
    at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:666)
    at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:678)
    at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:648)
    at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:252)
    at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:239)
    at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2145)
    at javax.swing.JComponent.processKeyBindings(JComponent.java:2138)
    at javax.swing.JComponent.processKeyEvent(JComponent.java:2041)
    at java.awt.Component.processEvent(Component.java:3553)
    at java.awt.Container.processEvent(Container.java:1164)
    at java.awt.Component.dispatchEventImpl(Component.java:2593)
    at java.awt.Container.dispatchEventImpl(Container.java:1213)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2155)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2135)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:914)
    at java.awt.Component.dispatchEvent(Component.java:2497)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)

    Elmar,
    Do any of the entities being committed have "refer-after-insert" or "refresh-after-update" attributes? (the most common situation would be for the primary key or some change-indicator-attribute that's getting set in a database trigger?
    Do you have any custom code written in the doDML() method ?
    Any way to get a reproducible testcase?

  • FR BC4J: publish EntityImpl.getPostedAttribute in ViewRow interface

    Would be nice if getPostedAttribute(int) from EntityImpl would also be available in the oracle.jbo.Row interface.
    We would need this for some validation stuff at client side.
    Thanks, Markus

    ok i can understand that, but hasn't this already
    happen?
    e.g. for a ViewCriteriaRow a refresh, lock, revert,
    setNewRowState, removeFromCollection,
    removeAndRetain, getKey does not make many sense.
    But VCR is inherited from Row and therefore the API
    user has already to investigate if those methods are
    somehow implemented or not (btw. the API doc is not
    very helpful regarding this).
    So i do not see a big problem for another method that
    is only implemented in some subclasses.
    Perhaps there is a need for a new "DatabaseRow "
    interface to put those methods and constants in?
    I do not see another place to publish this
    functionality to the client.
    Thanks, MarkusMarkus:
    That's right. The Row interface is primarily driven by our needs to access ViewRow and EntityRow in abstract way.
    As getPostedAttribute is only available on EntityImpl and not on ViewRowImpl, I don't feel it belongs to Row.
    If you want this method to be added to Row, so that the API would be available in the CLIENT tier, remember that EntityImpl is not available in the CLIENT tier. Specifically, if you're running your app in 3 tier config, you have no access to EntityImpl in the CLI side. So, making it available on the Row interface will not help.
    Thanks.
    Sung

  • Creating a BC4J EO Based on Stored Proc w/DB assigned PK using Seq/Trigge

    BC4J Code-o-philes;
    Using Steven Muench article "Creating a BC4J Entity Object Based on Stored Procedures" (HOWTO: Basing BC4J Entity on Stored Procedure as a starting point, I would like to modify that example to use a Stored Procedure where the Primary Keys of the Department Table are assigned by a DB Sequence/Before trigger. I already have the stored procedure and sequence/trigger working fine in SQL*Plus.
    The assumption I have is that code below needs to be modified, but I'm not sure exactly what need to be done to retreive the DB assigned PK.
    Lastly, I think that JDeveloper should be doing this automatically, maybe next release?
    Bill G...
    void handleStoredProcInsert() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_insert(?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */
    st.registerOutParameter(3,Types.NUMERIC);
    if (getDepartmentName() != null) {
    st.setString(1,getDepartmentName());
    else {
    st.setNull(1,Types.VARCHAR);
    if (getLocationId() != null) {
    st.setLong(2,getLocationId().longValue());
    else {
    st.setNull(2,Types.VARCHAR);
    int rows = st.executeUpdate();
    Long newId = new Long(st.getLong(3));
    populateAttributeAsChanged(DEPARTMENTID, new DBSequence(newId));
    catch (SQLException s) {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}

    ARGHHHHHHHHHHHHHH!
    I've change the line
    st.setLong(1,getDepartmentId().longValue());
    to
    st.setLong(1,getSequenceNumber().longValue());
    And I'm still getting Error(303,20): method getSequenceNumber not found in class stproc.DepartmentsImpl.
    even though i've imported "oracle.jbo.domain.DBSequence;"
    The code below is taken from the BC4J StoredProc sample and is what I want to modify to get it working with DB/Triggers.
    BG...
    package stproc;
    import java.math.BigDecimal;
    import java.lang.Math;
    import java.sql.CallableStatement;
    import java.sql.SQLException;
    import java.sql.Types;
    import oracle.jbo.JboException;
    import oracle.jbo.Key;
    import oracle.jbo.RowInconsistentException;
    import oracle.jbo.RowIterator;
    import oracle.jbo.domain.Number;
    import oracle.jbo.server.AttributeDefImpl;
    import oracle.jbo.server.DBTransaction;
    import oracle.jbo.server.EntityDefImpl;
    import oracle.jbo.server.EntityImpl;
    import oracle.jbo.server.TransactionEvent;
    import oracle.jbo.AlreadyLockedException;
    import oracle.jbo.domain.DBSequence;
    // --- File generated by Oracle Business Components for Java.
    public class DepartmentsImpl extends EntityImpl
    protected static final int DEPARTMENTID = 0;
    protected static final int DEPARTMENTNAME = 1;
    protected static final int LOCATIONID = 2;
    private static EntityDefImpl mDefinitionObject;
    * This is the default constructor (do not remove)
    public DepartmentsImpl()
    * Retrieves the definition object for this instance class.
    public static synchronized EntityDefImpl getDefinitionObject()
    if (mDefinitionObject == null)
    mDefinitionObject = (EntityDefImpl)EntityDefImpl.findDefObject("stproc.Departments");
    return mDefinitionObject;
    * Gets the attribute value for DepartmentId, using the alias name DepartmentId
    public DBSequence getDepartmentId()
    return (DBSequence)getAttributeInternal(DEPARTMENTID);
    * Sets <code>value</code> as the attribute value for DepartmentId
    public void setDepartmentId(DBSequence value)
    setAttributeInternal(DEPARTMENTID, value);
    * Gets the attribute value for DepartmentName, using the alias name DepartmentName
    public String getDepartmentName()
    return (String)getAttributeInternal(DEPARTMENTNAME);
    * Sets <code>value</code> as the attribute value for DepartmentName
    public void setDepartmentName(String value)
    setAttributeInternal(DEPARTMENTNAME, value);
    * Gets the attribute value for LocationId, using the alias name LocationId
    public Number getLocationId()
    return (Number)getAttributeInternal(LOCATIONID);
    * Sets <code>value</code> as the attribute value for LocationId
    public void setLocationId(Number value)
    setAttributeInternal(LOCATIONID, value);
    // Generated method. Do not modify.
    protected Object getAttrInvokeAccessor(int index, AttributeDefImpl attrDef) throws Exception
    switch (index)
    case DEPARTMENTID:
    return getDepartmentId();
    case DEPARTMENTNAME:
    return getDepartmentName();
    case LOCATIONID:
    return getLocationId();
    default:
    return super.getAttrInvokeAccessor(index, attrDef);
    // Generated method. Do not modify.
    protected void setAttrInvokeAccessor(int index, Object value, AttributeDefImpl attrDef) throws Exception
    switch (index)
    case DEPARTMENTID:
    setDepartmentId((DBSequence)value);
    return;
    case DEPARTMENTNAME:
    setDepartmentName((String)value);
    return;
    case LOCATIONID:
    setLocationId((Number)value);
    return;
    default:
    super.setAttrInvokeAccessor(index, value, attrDef);
    return;
    protected void doSelect(boolean lock) {
    if (lock) {
    this.handleStoredProcLock();
    else {
    this.handleStoredProcSelect();
    public void doDML(int operation, TransactionEvent e) {
    switch (operation) {
    case DML_INSERT: {
    handleStoredProcInsert();
    break;
    case DML_UPDATE: {
    handleStoredProcUpdate();
    break;
    case DML_DELETE: {
    handleStoredProcDelete();
    break;
    void handleStoredProcSelect() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_select(?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */
    st.registerOutParameter(2,Types.VARCHAR);
    st.registerOutParameter(3,Types.NUMERIC);
    int rows = st.executeUpdate();
    populateAttribute(DEPARTMENTNAME,st.getString(2),true,false);
    populateAttribute(LOCATIONID,st.getBigDecimal(3),true,false);
    catch (SQLException s) {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}
    void handleStoredProcDelete() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_delete(?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */ // bg mod
    st.registerOutParameter(1,Types.NUMERIC); // bg add
    int rows = st.executeUpdate();
    catch (SQLException s) {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}
    void handleStoredProcInsert() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_insert(?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */ // bg mod
    st.registerOutParameter(3,Types.NUMERIC);
    if (getDepartmentName() != null) {
    st.setString(1,getDepartmentName());
    else {
    st.setNull(1,Types.VARCHAR);
    if (getLocationId() != null) {
    st.setLong(2,getLocationId().longValue());
    else {
    st.setNull(2,Types.VARCHAR);
    int rows = st.executeUpdate();
    Long newId = new Long(st.getLong(3));
    populateAttributeAsChanged(DEPARTMENTID, new DBSequence(newId));
    catch (SQLException s) {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}
    void handleStoredProcUpdate() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_update(?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */ // bg mod
    /* dbSeqVal.getSequenceNumber().longValue() */
    st.setLong(1,getSequenceNumber().longValue());
    if (getDepartmentName() != null) {
    st.setString(2,getDepartmentName());
    else {
    st.setNull(2,Types.VARCHAR);
    if (getLocationId() != null) {
    st.setLong(3,getLocationId().longValue());
    else {
    st.setNull(3,Types.VARCHAR);
    int rows = st.executeUpdate();
    catch (SQLException s) {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}
    void handleStoredProcLock() {
    CallableStatement st = null;
    try {
    String stmt = "BEGIN hr.do_lock(?,?,?); END;";
    DBTransaction tr = getDBTransaction();
    st = tr.createCallableStatement(stmt,1);
    /* st.setLong(1,getDepartmentId().longValue()); */ // bg mod
    st.registerOutParameter(2,Types.VARCHAR);
    st.registerOutParameter(3,Types.NUMERIC);
    int rows = st.executeUpdate();
    String newDname = st.getString(2);
    BigDecimal newLoc = st.getBigDecimal(3);
    // Compare the old values to the current values to
    // detect if row has changed.
    compareOldAttrTo(DEPARTMENTNAME,newDname);
    compareOldAttrTo(LOCATIONID,newLoc);
    catch (SQLException s) {
    if (Math.abs(s.getErrorCode())==54) {
    throw new AlreadyLockedException(s);
    else {
    throw new JboException(s);
    finally {
    try {
    if (st != null) st.close();
    catch (SQLException s) { /* ignore */}
    void compareOldAttrTo(int slot, Object newVal) {
    if ((getPostedAttribute(slot) == null && newVal != null) ||
    (getPostedAttribute(slot) != null && newVal == null) ||
    (getPostedAttribute(slot) != null && newVal != null &&
    !getPostedAttribute(slot).equals(newVal))) {
    throw new RowInconsistentException(createPrimaryKey(getDepartmentId()));
    * Creates a Key object based on given key constituents
    public static Key createPrimaryKey(DBSequence departmentId)
    return new Key(new Object[] {departmentId});
    }

  • How can I get all my entities out of BC4J

    I would like to extend the entityimpl class in a generic way, so I can use codelogic for all entieties in the BC4J Project?
    How can I do this?
    I would like to write a method that uses the entityname as the parameter and then per entity (using the paremeter) get each attributename?
    How can I implement this?
    This is very urgent? Can anybody help me please, thank you.
    null

    You can extend any entity object from an existing entity object.
    To do this, simply right-click on the package. Select 'Create entity object . . .', choose your connection, and by pass the welcome screen. The first step has a field that allows you to extend an entity. The browse button will pull in the correct path.
    Each entity object should have the following instance method. For example, in the online orders app example that comes with Jdeveloper, you have:
    * Retrieves the definition object for this instance class.
    public static synchronized EntityDefImpl getDefinitionObject() {
    if (mDefinitionObject == null) {
    mDefinitionObject = (EntityDefImpl)EntityDefImpl.findDefObject("OnlineOrders.Category");
    return mDefinitionObject;
    This instance class will return the EntityDefImpl. From here you can use its various methods to get metadata about the entity such as its attributes. For example getAttributeDefImpl(String) will return an attribute definition object based on attribute name.
    You can find more information by doing a search on 'EntityDefImpl' in the online help that comes with JDeveloper 3.2.3.
    -Stuart
    null

  • Can SimpleDateFormat for BC4J be used in Jdev 10g?

    I recently migrated a struts/bc4j app from Jdev 9.0.3.4, we use SimpleDateFormat quite extensivly in Entity and View Objects, however the AttributeDefImple.getFormattedAttribute method is throwing the following exception:
    Error Message: JBO-29000: Unexpected exception caught: java.lang.IllegalArgumentException, msg=Cannot format given Object as a Date
    Error Message: Cannot format given Object as a Date
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.IllegalArgumentException, msg=Cannot format given Object as a Date
         at oracle.jbo.server.AttributeDefImpl.getFormattedAttribute(AttributeDefImpl.java:2849)
         at oracle.jbo.html.HtmlServices.getAttributeStringValue(HtmlServices.java:881)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.getHTMLValue(HTMLFieldRendererImpl.java:432)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.getHTMLValue(HTMLFieldRendererImpl.java:409)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.setValueFromRow(HTMLFieldRendererImpl.java:442)
         at oracle.jdeveloper.html.ReadOnlyField.renderToString(ReadOnlyField.java:27)
         at oracle.jbo.html.jsp.datatags.RenderValueTag.doStartTag(RenderValueTag.java:33)
         at main.jspService(main.jsp:65)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:569)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:304)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
         at java.lang.Thread.run(Thread.java:534)
    ## Detail 0 ##
    java.lang.IllegalArgumentException: Cannot format given Object as a Date
         at java.text.DateFormat.format(DateFormat.java:279)
         at java.text.Format.format(Format.java:133)
         at oracle.jbo.format.DefaultDateFormatter.format(DefaultDateFormatter.java:84)
         at oracle.jbo.server.AttributeDefImpl.getFormattedAttribute(AttributeDefImpl.java:2843)
         at oracle.jbo.html.HtmlServices.getAttributeStringValue(HtmlServices.java:881)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.getHTMLValue(HTMLFieldRendererImpl.java:432)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.getHTMLValue(HTMLFieldRendererImpl.java:409)
         at oracle.jdeveloper.html.HTMLFieldRendererImpl.setValueFromRow(HTMLFieldRendererImpl.java:442)
         at oracle.jdeveloper.html.ReadOnlyField.renderToString(ReadOnlyField.java:27)
         at oracle.jbo.html.jsp.datatags.RenderValueTag.doStartTag(RenderValueTag.java:33)
         at main.jspService(main.jsp:65)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:569)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:304)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
         at java.lang.Thread.run(Thread.java:534)
    this breaks the jbo datatags datatable and rendervalue plus some custom code I have to get the formatted dates using HtmlServices.getAttributeStringValue(...)
    So is Simple Date Format broken in 10g? Is this the wrong way to go about view/entity formatting? I don't see what I could be doing wrong, this all works fine in 9.0.3.4, I am not including any old jars from 9.0.3.4 either...any ideas?

    Problem solved.
    I was including BC4J Generic Domains library in my project. Which contains yet another implemetation of oracle.jbo.domains.Date this one is not what we want to use :) The problem arose because the IDE detected the correct Date class while the embedded server chose the wrong one, so just removed that library and I was good to go. This problem also reared it's ugly head when I tried to use the infamous FlexiDate class and it complained that it couldn't find a constructor in it's superclass that took a byte array as input.

  • ApplicationModule get configuration used bc4j.xcfg

    Is there a way to find the bc4j.xcfg file (or its content) used from an applicationModule instance ?
    In bc4j.xcfg file, I put some additionnal attributes values used as application parameters that I use during runtime, but I have to load them !
    Today, I have add in the constructor of the AM the class path to find the bc4j.xcfg file, but I think there is a better way... I hope !
    Thanks
    Rafael.

    John,
    In the DataBindings.cpx i can't find any reference to a datacontrol...
    This is my bindings:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Application xmlns="http://xmlns.oracle.com/adfm/application"
                 version="11.1.1.56.60" id="DataBindings" SeparateXMLFiles="false"
                 Package="be.usermanagementProv.portlets" ClientType="Generic">
      <definitionFactories>
        <factory nameSpace="http://xmlns.oracle.com/adf/controller/binding"
                 className="oracle.adf.controller.internal.binding.TaskFlowBindingDefFactoryImpl"/>
        <dtfactory className="oracle.adf.controller.internal.dtrt.binding.BindingDTObjectFactory"/>
      </definitionFactories>
      <pageMap>
        <page path="/UserManagement/view.jspx"
              usageId="be_usermanagementProv_portlets_viewPageDef"/>
      </pageMap>
      <pageDefinitionUsages>
        <page id="be_usermanagementProv_portlets_viewPageDef"
              path="UserManagement.viewPageDef"/>
      </pageDefinitionUsages>
    </Application>In the datacontrol section when i right click the DC the "edit definition" is grayed out. Probably because the DC comes from the library and is not created in the application.

  • BC4J/Jedeveloper 3.2 BUG with SetAttribute on LONG RAW

    Hi,
    I'm using Jdeveloper 3.2, a BC4J/JSP application and a Oracle Thin connection to Oracle 8.0.4.
    I think I found a bug in BC4J:
    I have a table with a LONG RAW column that is also used by other (non BC4J)
    applications to store binary data (including, but not limited to JPG's)
    I'm able to retrieve data of any size using GetAttribute().
    When I use the following code from a WebBean, it fails on commit
    when the file is bigger than 4K.
    The error is:
    Error Message: JBO-26041: Failed to post data to database during "Update":
    SQL Statement " UPDATE BDATA Bdata SET LRDATA=:1 WHERE ID_CARD=:2 AND CODE_REGISTRATION=:3".
    Error Message: ORA-01461: can bind a LONG value only for insert into a LONG column
    public void setData(java.io.File f) throws Exception
    long len = f.length();
    InputStream in = new FileInputStream(f);
    Row myRow = qView.getCurrentRow();
    byte[] buffer = new byte[(int)len];
    in.read(buffer, 0, (int) len);
    in.close();
    Raw myval = new Raw(buffer);
    myRow.setAttribute("Lrdata", myval);
    Please help, I need this to work !
    null

    Raw domain is limited to the oracle-JDBC limitations of 4K length for such-streaming data types unless a Stream is used to update the data. We plan to support such streaming for Raw domain in the next major-release.
    However, you should be able to work with Raw domain and if your data size is bigger than 4K, override the doDML() method in EntityImpl (that contains the Raw attribute) and perform a custom update for the Raw data. Basically the logic will be something like:
    doDML()
    1. save the raw attribute value
    2. Populate 'null' or a single byte-bytearray for raw attribute value so that super.doDML() won't fail.
    3. prepare an update statement with just the raw column and where clause for this entity's primary key.
    4. fill in the raw data using an in-memory stream over the bytes from the Raw domain instance held in step 1. Use Statement.setBinaryStream() method.
    5. execute the statement (to post the stream).
    6. re-populate the entity data-structure with the valid Raw domain instance.
    null

  • [BC4J] JBO-27122 Invalid Column Type

    Dear forum,
    I am using JDeveloper 10.1.3.4.0.4270 with ADF Business Components 10.1.3.42.70.
    Here is what I am calling inside the validate method of a class that extends EntityImpl.
        protected void validateEntity() {
            super.validateEntity();
            /* JBO-27122
            // test
            this.getParents(); // This call is enough to trigger the exception.
            // trying to set the parent from the VO
            this.setParents((ParentsImpl)this.getParentsView().getEntity(0)); // goes ok...
            super.checkStuff(this.getParents().getChildren()); // and then fail at getParents
            super.checkStuff((MyEntityImpl)this.geParentsView().getEntity(0)); // goes ok
        }Any call to "getParents()" gives me a JBO-27122 error, caused by "Invalid Column Type".
    The stack trace first line is "oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:836)". I have searched this forum and Metalink, and did not get a single hit.
    Despite the fact that an invalid column type is reported, I know that my queries are ok, because
    - The entities are synchronized with the database.
    - I have tested the queries in SQL*Plus using adequate bind variables, with no error.
    - The variables to be bound are instances of the right class (oracle.jbo.domain.Number in this case).
    - There is no bound variables naming mismatch.
    - The BC4J components are working as they should, except for the getParents that is.
    - Recreating the EOs & VOs as well as their associations and links from scratch gives me the same result.
    What bothers me is that casting the parent's viewRowImpl into an entityImpl goes fine, but getting the entityImpl directly does not.
    Perhaps I am doing something wrong, or something that I shouldn't be doing.
    Has anyone encountered this?
    Cheers,
    adsm

    Hi Frank,
    Thank you for your answer.
    I have been unable to reproduce the error using the HR schema. Going on from there, I have also been unable to reproduce it on a new BC4J project in the same application.
    I suppose that it has something to do with the BC4J configuration file, but I haven't been able to find what is wrong. What I have found out is that this issue only appears when dealing with more than one level of view link (ie: View1->ViewLink1->View2->ViewLink2->View3).
    Anyway, this application has been migrated time and time again from an early JDev9 version, so something like that was bound to happen someday. A pity that we didn't catch this sooner.
    Cheers,
    adsm

  • Db sequence work in bc4j tester but not at jsp editform? !

    According to "HOWTO#:Use BC4J With or Without DB Triggers",i use db trigger and db sequence to realize insert primary key value from sequence.
    It work fine at bc4j tester ,however at jsp it produce error. error information:
    Error Message: ORA-01401: 2eHk5DV56TSZAP9}4s ORA-06512: TZline 1
    oracle.jbo.DMLException: JBO-26041: Failed to post data to database during "Insert": SQL Statement "BEGIN INSERT INTO FYZ_YZJBK(DZ,DG,BZ,FDZYF,FXF) VALUES (:1,:2,:3,:4,:5) RETURNING BH, BZ INTO :6, :7; END;".
         void oracle.jbo.server.OracleSQLBuilderImpl.doEntityDML(oracle.jbo.server.EntityImpl, int, oracle.jbo.server.TransactionEvent)
         void oracle.jbo.server.EntityImpl.doDML(int, oracle.jbo.server.TransactionEvent)
         void YFGLBC4J.YFJCImpl.doDML(int, oracle.jbo.server.TransactionEvent)
         void oracle.jbo.server.EntityImpl.postChanges(oracle.jbo.server.TransactionEvent)
         void oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(oracle.jbo.server.TransactionEvent, com.sun.java.util.collections.ArrayList, com.sun.java.util.collections.HashMap, com.sun.java.util.collections.ArrayList, boolean, boolean)
         void oracle.jbo.server.DBTransactionImpl.postChanges(oracle.jbo.server.TransactionEvent)
         int oracle.jbo.server.DBTransactionImpl.commitInternal(boolean)
         void oracle.jbo.server.DBTransactionImpl.commit()
         int oracle.jbo.html.jsp.datatags.CommitTag.doStartTag()
         void tagcomponent.DataHandlerComponent._jspService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void oracle.jsp.runtime.HttpJsp.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void oracle.jsp.runtimev2.JspPageTable.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)
         void oracle.jsp.runtimev2.JspServlet.internalService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void oracle.jsp.runtimev2.JspServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.GetParametersRequestDispatcher.include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.EvermindPageContext.include(java.lang.String)
         int oracle.jbo.html.jsp.datatags.ComponentTag.doStartTag()
         void yfgl.yfjc__browse._jspService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void oracle.jsp.runtime.HttpJsp.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void oracle.jsp.runtimev2.JspPageTable.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)
         void oracle.jsp.runtimev2.JspServlet.internalService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void oracle.jsp.runtimev2.JspServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         void javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.invoke(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
         void com.evermind.server.http.ServletRequestDispatcher.forwardInternal(javax.servlet.ServletRequest, javax.servlet.http.HttpServletResponse)
         boolean com.evermind.server.http.HttpRequestHandler.processRequest(com.evermind.server.ApplicationServerThread, com.evermind.server.http.EvermindHttpServletRequest, com.evermind.server.http.EvermindHttpServletResponse, java.io.InputStream, java.io.OutputStream, boolean)
         void com.evermind.server.http.HttpRequestHandler.run(java.lang.Thread)
         void com.evermind.util.ThreadPoolThread.run()
    Who can tell me why? Thank in advance! Urgent!

    David:
    Your exception should include the stack trace of "## Detail" exception. Could you post that for us to look at? If you don't have a detail exception, let me know as well and we'll see what we can do.
    Thanks.
    Sung

  • BC4J Objects with PKs based on two columns using multiple sequences

    I have implemented a BC4J object that is based on a DB table that has two columns as the primary key. For example Table A's primary key is Group and ID and there is a DB sequence for each Group.
    I use the BC4J object using servlets and JSPs and I have been able to implement an Update form.
    I now want to implement a Create (New) form. I've read forum postings and info on the help regarding using the SequenceImpl class to override the EntityImpl object's create method as shown below:
    protected void create(AttributeList attributeList)
    super.create(attributeList);
    SequenceImpl mySeq = new SequenceImpl("MY_SEQ",getDBTransaction());
    setMyObjectId(mySeq.getSequenceNumber());
    But as you can see I need to know the value of the group attribute before I can get the next value sequence:
    For new EO belonging in Group1 I need sequence from "GROUP1_SEQ", Group 2 from "GROUP2_SEQ", etc.
    I would like to put this code in the Entity Object where it belongs. I guess my problem is simply how to create a new row in the View Object with a passed parameter which is the value of Group.
    Thanks in advance!

    Angelo:
    How is the EO suppose to receive the group id? Is it from the view row? If so, the VO can pass that group id to the EO through the attribute list and calling the
    public Row createAndInitRow(AttributeList nvp);
    API.
    Example code would be:
    ViewObject myVO;
    // myVO is initialized
    AttributeList nvp = new oracle.jbo.NameValuePairs();
    // GroupID is the attr name of the Group ID
    nvp.setAttribute("GroupID", <some-value>);
    Row row = myVO.createAndInitRow(nvp);
    If you do that the create(AttributeList attributeList) method of the EO will receive the GroupID value coming from the VO.
    Then, you can use that for your sequence.
    Thanks.
    Sung

  • Deploying BC4J 9.0.3.4 Application in WebSphere 5.0.2

    We are deploying the application developed using BC4J 9.0.3.4 libraries in WebSphere 5.0.2.
    We are getting the following error when we tried to create new row using BC4J view object.
    [511] BaseSQLBuilder: setSavepoint 'BO_SP' ignored
    [512] BaseSQLBuilder Executing DML ... (Insert)
    [513] Executing DML...
    [514] Warning: BaseSQLBuilder does not support RETURNING (key-cols) clause....
    [515] Warning: BaseSQLBuilder does not support RETURNING (cols) clause....
    [516] INSERT INTO FISTS_USER_MESSAGE(MSG_ID,MSG_FROM_USER_ID,MSG_MOD_NAME,MSG_SUBJECT,
    MSG_BODY,MSG_CREATE_TS,MSG_USER_ID,MSG_GLOBAL_FLAG,MSG_EXPIRATION_DT) VALUES (?,?,?,?,?,?,?,?,?)
    [517] Fetch RefreshOnInsert attributes
    [518] BaseSQLBuilder.doRefreshSQL, Executing Select for Refresh-on-insert or update attributes
    [519] Warning: Attempting to use current primary key attributes for refresh SQL.
    [520] ******* Found no UniqueKey attribute when a PK attribute is marked for refresh on Entity:FistsUserMessage
    [521] Built select: 'SELECT MSG_ID, MSG_GLOBAL_FLAG FROM FISTS_USER_MESSAGE'
    [522] Executing Refresh SQL...SELECT MSG_ID, MSG_GLOBAL_FLAG FROM FISTS_USER_MESSAGE WHERE MSG_ID=?
    [523] General failure Failure in select : JBO-25019: Entity row of key oracle.jbo.Key[-42 ] not found in FistsUserMessage.
    [524] Close prepared statement for refresh SQL
    [525] BaseSQLBuilder: rollbackToSavepoint 'BO_SP' ignored
    oracle.jbo.RowAlreadyDeletedException: JBO-25019: Entity row of key oracle.jbo.Key[-42 ] not found in FistsUserMessage.
    FYI: we are using BC4J setting jbo.SQLBuilder=SQL92, since jbo.SQLBuilder=Oracle is not working either.
    ====================================================
    Error when we use BC4J setting jbo.SQLBuilder=Oracle
    java.lang.ClassCastException: com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement
         at oracle.jbo.server.OracleSQLBuilderImpl.doStatementSetRowPrefetch(OracleSQLBuilderImpl.java:919)
    Any help to resolve this issue is appreciated.
    Sam

    Since you're using WebSphere, SQLBuilder=SQL92 is the correct setting.
    As for your RowAlreadyDeletedException, the following lines are key in solving your issue:
    [519] Warning: Attempting to use current primary key attributes for refresh SQL.
    [520] ******* Found no UniqueKey attribute when a PK attribute is marked for refresh on Entity:FistsUserMessageIt seems
    1. You designated your PK as DBSequence which implies/needs retrieve-on-insert. (Retrieve-on-insert means that after the row is inserted into db, the attr value needs to be refreshed from database).
    With DBSequence, when you create a new row, the DBSequence domain object is assigned a temporary value (in your case -42).
    2. You are using a SQLBuilder which does not support 'RETURNING' clause. Oracle DB allows you do insert a row and then bring back the attr values using the RETURNING clause. Since your SQLBuilder does not support RETURNING, BC4J generates a SQL block that has
    -> The INSERT statement
    -> Immediately followed by a SELECT statement that tries to retrieve your PK attr.
    3. For this SELECT statement, we need a WHERE clause to identify the row that was just inserted. Normally (if the PK attr is stable), we use the PK attr. However, in your case, since PK itself will be assigned a new value in the database, we try to find another unique attribute. When this turn up nothing we print the above "Warning: Attempting to ..."
    4. Then, it issues SELECT statement with WHERE MSG_ID = -42. Since database assigned a new value to this attr, it doesn't find the row.
    5. So, it thinks that the row was deleted by another transaction ==> RowAlreadyDeletedException.
    ~~~~~
    To work around this, I would suggest one of the followings:
    A) Instead of DBSequence and retrieve-on-insert, you can try to set the PK value by getting its seq number in the EntityImpl's create() method override.
    B) Or, you can desginate some other attr (if you have one) as unique (should be stable, meaning that its value will not change by the insert operation). Then, we can use that to locate the row and perform the correct SELECT operation.
    Thanks.
    Sung

  • Where is this class:  oracle.jbo.server.EntityImpl

    Does anyone know what jar file contains the following classes:
    oracle.jbo.server.EntityImpl
    oracle.jbo.server.AttributeDefImpl
    Thanks!
    -Teri Kemple
    [email protected]

    It's bc4jmt.jar in BC4J\lib. "mt" probably stands for "middle tier".

  • URGENT- PLEASE HELP: java.lang.threads and BC4J

    Hi,
    according to my issue "no def found for view" in the same titled thread I'm wondering how you would implement asynchronous calls of methods that use BC4J to update a couple of data.
    To be more precise:
    A requirement of our software is to start an update database job, which can take a couple of minutes/hours, from the web browser. Before it will be executed the logged-in user receives a notification that this batch job has been started.
    I dont't want to use JMS overhead and MD Beans for this simple requirement, therefore I implemented a class that extends java.lang.Thread and put all the update codings within the run method. After having called the start-method of the thread I get a JBO-25022(No XML file found) error when I try to set a new value for an attribute of the row. The row consists of attributes which belong to four entity objects that mus be updated.
    When calling the run method directly, everything works fine.
    My questions:
    * do you know any workaround how to make the xml files
    reachable?
    * how would you implement anschronous calls of long time-
    consuming jobs?
    * is this a bug of BC4J?
    Any help, tip, hint is really appreciated.
    Stefan

    Arno,
    many thanks for your reply:
    Here is an excerpt of the source code of my thread "Aenderungsdienst":
    public class Aenderungsdienst extends java.lang.Thread
    private SviAdministrationModuleImpl mSviModul;
    // Application module that contains view object
    // IKViewImpl
    public Aenderungsdienst(SviAdministrationModuleImpl aSviModul)
    mSviModul = aSviModul;
    public void run()
    ausfuehrenAenderungsdienst(mAenderungsdienstNr); <--error within this methode
    private int ausfuehrenAenderungsdienst(String aAenderungsdienstNr)
    int rAnzahlSaetze = 0;
    try
    IkViewImpl aenderungen = mSviModul.getIkView();
    aenderungen.suchenAenderungssaetze(aAenderungsdienstNr); <-- method within View Object Impl that executes a query with customized where-clauses
    if ((rAnzahlSaetze = aenderungen.getRowCount()) > 0)
    IkViewRowImpl ik = null;
    while (aenderungen.hasNext())
    ik = (IkViewRowImpl) aenderungen.next();
    ik.setBestandsstatus("B"); <-- error occurs here when setting the status of a current row in my rowset to "B"
    mSviModul.getTransaction().postChanges();
    mSviModul.getTransaction().commit();
    catch (Exception e)
    e.printStackTrace();
    mSviModul.getTransaction().rollback();
    //todo: Verarbeitungsprotokoll erstellen
    return rAnzahlSaetze;
    This thread will be called by the application module "sviAdministrationModuleImpl":
    public void ausfuehrenAenderungsdienst(String
    aAenderungsdienstNr)
    Aenderungsdienst aenderungsdienst = new
    Aenderungsdienst(this);
    aenderungsdienst.setAenderungsdienstNr
    (aAenderungsdienstNr);
    aenderungsdienst.start();
    Using the start() method of the thread causes this exception:
    [653] No xml file: /hvbg/svi/model/businessobjects/businessobjects.xml, metaobj = hvbg.svi.model.businessobjects.businessobjects
    [654] Cannot Load parent Package : hvbg.svi.model.businessobjects.businessobjects
    [655] Business Object Browsing may be unavailable
    [656] No xml file: /hvbg/svi/model/businessobjects/IK_Inlandsbankverb.xml, metaobj = hvbg.svi.model.businessobjects.IK_Inlandsbankverb
    09.03.2004 10:27:41 hvbg.common.businessobjects.HvbgEntityImpl setAttributeInternal
    SCHWERWIEGEND: Fehler beim Setzen des Attributs 1 im Entity Objekt: JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
    09.03.2004 10:27:42 hvbg.svi.model.dienste.Aenderungsdienst ausfuehrenAenderungsdienst
    SCHWERWIEGEND: Beim Ausführen des Aenderungsdienstes 618 trat während der DB-Aktualisierung ein schwerer Fehler auf:
    JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
    oracle.jbo.NoDefException: JBO-25002: Definition hvbg.svi.model.businessobjects.IK_Inlandsbankverb vom Typ Entitätszuordnung nicht gefunden.
         at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:328)
         at oracle.jbo.mom.DefinitionManager.findDefinitionObject(DefinitionManager.java:268)
         at oracle.jbo.server.MetaObjectManager.findMetaObject(MetaObjectManager.java:649)
         at oracle.jbo.server.EntityAssociation.findEntityAssociation(EntityAssociation.java:98)
         at oracle.jbo.server.AssociationDefImpl.resolveEntityAssociation(AssociationDefImpl.java:725)
         at oracle.jbo.server.AssociationDefImpl.getEntityAssociation(AssociationDefImpl.java:135)
         at oracle.jbo.server.AssociationDefImpl.hasContainer(AssociationDefImpl.java:546)
         at oracle.jbo.server.AssociationDefImpl.getContainer(AssociationDefImpl.java:468)
         at oracle.jbo.server.EntityImpl.getContainer(EntityImpl.java:1573)
         at oracle.jbo.server.EntityImpl.setValidated(EntityImpl.java:1649)
         at oracle.jbo.server.EntityImpl.setAttributeValueInternal(EntityImpl.java:2081)
         at oracle.jbo.server.EntityImpl.setAttributeValue(EntityImpl.java:1985)
         at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:1700)
         at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:946)
         at hvbg.common.businessobjects.HvbgEntityImpl.setAttributeInternal(HvbgEntityImpl.java:56)
         at hvbg.svi.model.businessobjects.IKImpl.setBestandsstatus(IKImpl.java:174)
         at hvbg.svi.model.businessobjects.IKImpl.setAttrInvokeAccessor(IKImpl.java:770)
         at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:859)
         at oracle.jbo.server.ViewRowStorage.setAttributeValue(ViewRowStorage.java:1108)
         at oracle.jbo.server.ViewRowStorage.setAttributeInternal(ViewRowStorage.java:1019)
         at oracle.jbo.server.ViewRowImpl.setAttributeInternal(ViewRowImpl.java:1047)
         at hvbg.svi.model.dataviews.IkViewRowImpl.setBestandsstatus(IkViewRowImpl.java:264)
         at hvbg.svi.model.dienste.Aenderungsdienst.ausfuehrenAenderungsdienst(Aenderungsdienst.java:337)
         at hvbg.svi.model.dienste.Aenderungsdienst.run(Aenderungsdienst.java:290)
    Using run(), everything works perfectly.
    The view object IKView consists of four entity objects which are linked by associations. There exists an association between the entity objects ik and inlandbankverb. The xml-file for the association object is named "ik_inlandsbankverb.xml". It seems so that this definition could not be found when calling my thread in asynchronous (via start()-method call) mode.
    Is this a bug of JDeveloper?
    Thanks in advance,
    Stefan

  • Bc4j,jsp,jdev3.22:Error using custom Domain

    I have created a domain subclassing from oracle.jbo.domain.Number, to allow for the formatting of numbers.
    I attached this new domain to a attribute of an entity object e.g. bid. When using the tester, the number is displayed correctly.
    When assessing the view (e.g bidView), from the JSP client, i get the error:
    java.lang.VerifyError: package6.common.num
    What am i doing wrong or is there a better way to format numbers when using jsp and bc4j?
    The code is as follows:
    package package6.common;
    import oracle.jbo.server.*;
    import oracle.jbo.domain.DomainOwnerInterface;
    import oracle.jbo.domain.DomainInterface;
    import oracle.jbo.JboException;
    import oracle.jbo.domain.Number;
    import java.text.*;
    import java.math.*;
    import java.sql.*;
    public class num extends Number {
    * This is the default constructor (do not remove)
    public num() {
    public num(String value) throws SQLException, ParseException {
    super(new BigDecimal(NumberFormat.getInstance().parse(value).doubleValue()));
    //validate();
    public String toString() {
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumFractionDigits(2);
    return nf.format(this.doubleValue());

    Take the code of the jsp file :
    <%@ page language="java" %>
    <%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>
    <html>
       <head>
         <title> First Struts Application </title>
       </head>
         <body>
            <table width="500" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td> </td>
            </tr>
            <tr bgcolor="#36566E">
              <td height="68" width="48%">
                <div align="left">
                  <img src="images/hht.gif" width="220" height="74">
                </div>
              </td>
            </tr>
            <tr>
             <td> </td>
            </tr>     
           </table>
           <html:form action="Lookup"
                      name="lookupForm"
                      type="wiley.LookupForm" >
           <table width="45%" border="0">
            <tr>
              <td>Symbol:</td>
              <td><html:text property="symbol" /> </td>
            </tr>
             <tr>       
              <td colspan="2" align="center"><html:submit/> </td>
             </tr>       
            </table>              
          </html:form>
         </body>
    </html>

Maybe you are looking for

  • How do I get downloaded CD's from Windows vista to my Ipod touch 5th gen?

    I bought an ipod touch 5th gen and have itunes on my computer , but I can't get my down loaded cd's from windows media player to itunes or my ipod. Please ask me more questions if you can help me.

  • My Export to Youtube doesn't work.

    I just got Adobe Premiere Elements 8 for my Dell Windows 7 laptop for Christmas. I got the program knowing it was an outstanding video editing software & I make Youtube videos & needed a good program. So I was very pleased the first few times of usin

  • Authorization object coding in ABAP report

    Hi, I am working on a report. The output of the report is details regarding vendor based on purchasing organization. When user executes the reports, they should be only able to see details if they are authorized to (create, change and display) for th

  • Liquify not working correctly

    Hey everyone. Having trouble with liquify for the past couple weeks. It is not showing my changes in real time. I use whichever tool and the change appears after the spinning wheel of frustration shows for a few seconds. Have tried installing updates

  • Using classes from another jar?

    Hello, Could anybody show me an example for how to put a shared library of classes in one jar file, and put an applet in another jar while the applet can use classes in the first jar file? Is this even possible at all??? Thanks!