public class WSApplicationModuleImpl extends WSObject implements ApplicationModule, Session, java.io.Serializable, Exportable
| Modifier and Type | Field and Description | 
|---|---|
| static int | BATCH_ALLOW_CACHE | 
| static int | BATCH_ALLOW_INFO | 
| static int | BATCH_ALLOW_MASTER_DETL | 
| static int | BATCH_ALLOW_PASSIVATION | 
| static int | BATCH_ALLOW_RANGE | 
| static int | BATCH_ALLOW_RANGE_SET | 
| static int | BATCH_ALLOW_STRUCT | 
| static int | BATCH_ALLOW_XML | 
| static int | BATCH_ALLOW_XTN | 
| static int | BATCH_DEFAULT | 
| static java.lang.String | END_REQUEST_RELEASE_LEVEL | 
mVariableOpersMAP_NULL_VALUEACTIVATE_CLIENT_FLAG, ACTIVATE_REMOVE_FLAG, ACTIVATE_SKIP_RESTORE_VO_FROM_DEF, ACTIVATE_TRANSIENT_FLAG, ACTIVATE_UNDO_FLAG, DEFAULT_DEF_FULL_NAME, DEFAULT_ROOT_APP_MOD_NAME, EFF_DT_PROPERTY_STR, IMAGE_LOC, PASSIVATE_DEFER_FLAG, PASSIVATE_HINT_FLAG, PASSIVATE_TO_DATABASE, PASSIVATE_TO_FILE, PASSIVATE_TO_MEMORY, PASSIVATE_TO_STACK_FLAG, PASSIVATE_TRANSIENT_FLAG, PASSIVATE_UNDO_FLAG, RELEASE_LEVEL_MANAGED, RELEASE_LEVEL_RESERVED, RELEASE_LEVEL_UNMANAGED, REMOVE_SNAPSHOT, RESET_CLIENT_ONLY_FLAG, RESET_INTERNAL_FLAG, RESET_KEEP_ALL_SNAPSHOTS_FLAG, RESET_MANAGE_SNAPSHOTS, RESET_RELOAD_FLAG, RESET_ROLLBACK_FLAG, RESET_SKIP_DETACH_TXN_FLAG, SYNC_BATCH, SYNC_IMMEDIATE, SYNC_LAZYDEFINITION_STATE_ACTIVE, DEFINITION_STATE_DEPRECATED, PROPERTY_DEFINITION_STATE, PROPERTY_LABEL, PROPERTY_LABEL_PLURAL, PROPERTY_TOOLTIPJBO_SESSION_COOKIE, JBO_SESSION_LOCALE| Modifier | Constructor and Description | 
|---|---|
|   | WSApplicationModuleImpl(ApplicationModule am) | 
|   | WSApplicationModuleImpl(SessionCookie sessionCookie) | 
| protected  | WSApplicationModuleImpl(java.lang.String name,
                       java.lang.String defName,
                       WSApplicationModuleImpl parent) | 
| protected  | WSApplicationModuleImpl(java.lang.String name,
                       WSApplicationModuleImpl parent) | 
| Modifier and Type | Method and Description | 
|---|---|
| byte[] | activateState(int id,
             boolean remove) | 
| byte[] | activateState(int id,
             boolean remove,
             SessionData info) | 
| byte[] | activateState(int id,
             SessionData info,
             int flags)Internal: Applications should not use this method. | 
| byte[] | activateStateForUndo(java.lang.String id,
                    int flags)Restore an application module undo record. | 
| protected void | addChild(java.lang.Object child) | 
| void | addChildAM(WSApplicationModuleImpl childAM) | 
| void | addResponse(java.io.Serializable resp) | 
| void | addWarning(JboWarning warn)Override from WarningContainer | 
| void | applyVOSortCriteria(ViewObject vo,
                   SortCriteria[] sortBy)Internal: Applications should not use this method. | 
| void | beginRequest(java.util.HashMap ctx) | 
| void | clearVOCaches(java.lang.String entityName,
             boolean recurse)Clears the view object cache for all view objects that use an entity object
 identified by  entityName. | 
| void | closeWSApplicationModule()Shuts down the WSApplicationModule. | 
| ApplicationModule | createApplicationModule(java.lang.String amName,
                       java.lang.String defName)Creates a nested application module in this application module from
 the application module definition. | 
| ComponentObject | createComponentObject(java.lang.String coName,
                     java.lang.String coDefName)Creates a component object in this application module from
 the component object definition. | 
| ViewDef | createCompositeViewDef(java.lang.String name,
                      java.lang.String fullName) | 
| Request | createRequest() | 
| ServiceMessage | createSyncMessage() | 
| ViewLink | createViewLink(java.lang.String vlName,
              java.lang.String defName,
              ViewObject master,
              ViewObject detail)Creates a view link in this application module from
 the view link definition. | 
| ViewLink | createViewLinkBetweenViewObjects(java.lang.String vlName,
                                java.lang.String accessorName,
                                ViewObject master,
                                AttributeDef[] srcAttrs,
                                ViewObject detail,
                                AttributeDef[] destAttrs,
                                java.lang.String assocClause)Creates a view link in this application module. | 
| ViewLink | createViewLinkFromEntityAssocName(java.lang.String vlName,
                                 java.lang.String entityAssocName,
                                 ViewObject master,
                                 ViewObject detail)Creates a view link in this application module from
 an entity association. | 
| ViewObject | createViewObject(java.lang.String voName,
                java.lang.String defName)Creates a view object in this application module from
 the view definition. | 
| ViewObject | createViewObjectFromQueryClauses(java.lang.String voName,
                                java.lang.String eoName,
                                java.lang.String selectClause,
                                java.lang.String fromClause,
                                java.lang.String whereClause,
                                java.lang.String orderByClause)Creates a view object in this application module from
 an entity Object and additional SQL clauses. | 
| ViewObject | createViewObjectFromQueryStmt(java.lang.String voName,
                             java.lang.String sqlStatement)Creates a view object in this application module based on 
 a SQL statement. | 
| ViewObject | createViewObjectFromQueryStmt(java.lang.String voName,
                             java.lang.String sqlStatement,
                             java.lang.String voImplClassName)Creates a read-only view object similar to  ApplicationModule.createViewObjectFromQueryStmt(String, String). | 
| ViewObject | createViewObjectOnEntity(java.lang.String voName,
                        java.lang.String eoName) | 
| ViewObject | createViewObjectOnRowSet(java.lang.String voName,
                        RowSet rs) | 
| void | detach() | 
| void | doFinish(boolean isEndOfSvcMsg) | 
| void | doInit() | 
| ApplicationPoolSvcMsgContext | doPoolMessage(ApplicationPoolSvcMsgContext ctx)Internal use only. | 
| void | doWork() | 
| void | endRequest(java.util.HashMap ctx) | 
| RowSet | executeQueryOnViewObjects(java.lang.String query) | 
| void | fetchAttributeProperties(java.lang.String[] voNames,
                        java.lang.String[][] voAttrNames,
                        LocaleContext locale)Fetches all custom properties for the given list of attributes for 
 the named view objects in this application module over to the remote 
 client objects in one network roundtrip. | 
| ApplicationModule | findApplicationModule(java.lang.String amName)Finds the named application module. | 
| ComponentObject | findComponentObject(java.lang.String coName)Finds the named component object. | 
| ViewObject | findCustomViewObject(java.lang.String voName,
                    java.lang.String voType) | 
| ViewObject | findCustomViewObject(WSViewObjectImpl wsvo,
                    java.lang.String voType) | 
| RowSetIterator | findRSIForEntity(RowSetIterator[] rsis,
                int eRowHandle)Finds the  RowSetIteratorassociated with the
 specified entity row handle. | 
| ApplicationModule | findSharedApplicationModule(java.lang.String appModuleName)INTERNAL:  Applications should not use. | 
| ViewLink | findViewLink(java.lang.String vlName)Finds the named view link. | 
| ViewObject | findViewObject(java.lang.String voName)Finds the named view object. | 
| ViewObject | findViewObjectUsingEntity(ViewObject[] vos,
                         java.lang.String entityName,
                         java.lang.String[] attrNames)Given an array of view objects (the vos parameter), finds
 the first matching view object. | 
| ViewObject | findViewObjectWithParameters(java.lang.String voname,
                            VariableManager params,
                            boolean executeIfNeeded)Internal: Applications should not use this method.
 Given a view object name, use findViewObject(String name) to find the
 view object and set it's named bind parameters with the values passed
 in the 'params' argument. | 
| WSApplicationModuleImpl | findWSApplicationModule(java.lang.String amName) | 
| WSComponentObjectImpl | findWSComponentObject(java.lang.String coName) | 
| WSViewLinkImpl | findWSViewLink(java.lang.String vlName) | 
| WSViewObjectImpl | findWSViewObject(java.lang.String voName) | 
| java.lang.Object | get(java.lang.Object keyObj) | 
| java.util.HashMap | getActiveObjects() | 
| java.lang.String[] | getAllApplicationModuleDefNames()Gets the names of the Application Module definitions
 contained in all packages. | 
| java.lang.String[] | getAllEntityAssociationDefNames()Gets the names of the entity association definitions defined in all packages. | 
| java.lang.String[] | getAllEntityDefNames()Gets the names of the Entity Object definitions available in all packages. | 
| java.util.ArrayList | getAllRowSetIterators() | 
| java.lang.String[] | getAllViewDefNames()Gets the names of the View Object definitions available in all packages. | 
| java.lang.String[] | getAllViewLinkDefNames()Gets the names of the View Link definitions defined in all packages. | 
| java.lang.String | getAMFullName() | 
| java.lang.String[] | getApplicationModuleDefNames(java.lang.String packageName)Gets the names of the Application Module definitions
 contained in a package. | 
| ApplicationModule | getApplicationModuleImpl() | 
| java.lang.String[] | getApplicationModuleNames()Returns an array of names of the nested application modules that are
 currently loaded within this application module. | 
| java.lang.String[] | getApplicationModuleNames(boolean inclLoadedOnes,
                         boolean inclNotLoadedOnes)Returns an array of names of the nested application modules in
 this application module. | 
| int | getBatchCommMode() | 
| ApplicationModule | getCustomApplicationModule() | 
| java.lang.String | getDefFullName()Retrieves the fully-qualified name of the component's definition. | 
| java.lang.String | getDefinitionState(LocaleContext locale)Retrives the definition state string that indicates if this object is deprecated. | 
| java.lang.String | getDefName()Retrieves the name of the component's definition. | 
| java.lang.String[] | getEntityAssociationDefNames(java.lang.String packageName)Gets the names of the entity association definitions defined in a package. | 
| java.lang.String[] | getEntityDefNames(java.lang.String packageName)Gets the names of the Entity Object definitions available in a package. | 
| java.util.Hashtable | getEnvironment()Returns the BC4J context for the session. | 
| JboExceptionHandler | getExceptionHandler() | 
| java.lang.String | getFullName()Retrieves the fully-qualified name of this component. | 
| java.lang.String | getHintValue(LocaleContext locale,
            java.lang.String sHintName)Return hint value based on the hint name | 
| java.lang.Object | getImplObject() | 
| java.lang.String | getLabel(LocaleContext locale)Retrieves the label to be used in any attribute prompts | 
| java.lang.String | getLabelPlural(LocaleContext locale)Retrives the LabelPlural text to be used for this attribute | 
| java.lang.String | getListBindingName(RowSetIterator rsi,
                  Key rowKey,
                  java.lang.String attrName,
                  java.lang.String lbName) | 
| RowSetIterator | getListBindingRSI(RowSetIterator rsi,
                 Key rowKey,
                 java.lang.String attrName,
                 java.lang.String lbName) | 
| java.util.Locale | getLocale()Gets the current  Localeused for localizing error messages. | 
| LocaleContext | getLocaleContext()retrieves the locale context for the session | 
| java.lang.Class | getMessageBundleClass() | 
| int | getMostRecentStackId()Internal: Applications should not use this method. | 
| java.lang.String | getName()Returns the name of this Variable Manager Owner. | 
| ObjectMarshaller | getObjectMarshaller() | 
| java.util.HashMap | getObjects() | 
| java.lang.String[] | getPackageNames()Gets names of the packages that make up this middle tier application. | 
| WSObject | getParent() | 
| RowSetIterator | getPreferredListRSI(RowSetIterator rsi,
                   Key rowKey,
                   java.lang.String attrName,
                   java.lang.String lbName) | 
| java.util.Hashtable | getProperties()Gets the table of properties. | 
| java.lang.Object | getProperty(java.lang.String hintName)Retrieves the specified property, if it exists. | 
| java.lang.Object | getProperty(java.lang.String hintName,
           LocaleContext locale) | 
| int | getReleaseLevel()Returns the release level that should be employed by clients of this
 application module. | 
| int | getRemoteObjectId(java.lang.Object obj) | 
| ResourceBundleDef | getResourceBundleDef() | 
| java.lang.String | getResponseName() | 
| WSApplicationModuleImpl | getRootWSApplicationModule() | 
| Session | getSession()Gets the application module's session. | 
| SessionCookie | getSessionCookie() | 
| ClientDocument | getStyles(java.lang.String name)Gets the style definition from an XML file in the middle tier. | 
| java.lang.Object | getSyncLock()Gets the locking object for this application module. | 
| int | getSyncMode()Returns the sync mode for this application module. | 
| java.lang.String | getTooltip(LocaleContext locale)Retrives the tooltip text to be used for this attribute | 
| Transaction | getTransaction()Gets this application module's database transaction. | 
| java.util.Hashtable | getUserData()Returns application context for the session. | 
| java.lang.String[] | getUserRoles()Returns the Roles/Groups for current user principal. | 
| java.lang.String | getVersion()Gets the middle tier's version information. | 
| java.lang.String[] | getViewDefNames(java.lang.String packageName)Gets the names of the View Object definitions available in a package. | 
| java.lang.String[] | getViewLinkDefNames(java.lang.String packageName)Gets the names of the View Link definitions defined in a package. | 
| java.lang.String[] | getViewLinkNames()Returns an array of the names of the view links that are
 currently loaded within this application module. | 
| java.lang.String[] | getViewLinkNames(boolean inclLoadedOnes,
                boolean inclNotLoadedOnes)Returns an array of names of the view links in
 this application module. | 
| java.lang.String[] | getViewObjectNames()Returns an array of names of the view objects that are
 currently loaded within this application module. | 
| java.lang.String[] | getViewObjectNames(boolean inclLoadedOnes,
                  boolean inclNotLoadedOnes)Returns an array of names of the view objects in
 this application module. | 
| WSApplicationModuleMarshaller | getWSApplicationModuleMarshaller() | 
| java.lang.String[] | getWSApplicationModuleNames() | 
| java.lang.String[] | getWSViewLinkNames() | 
| java.lang.String[] | getWSViewObjectNames() | 
| void | invalidateSession()INTERNAL:  Applications should not use. | 
| java.lang.Object | invokeExportedMethod(java.lang.String methodName,
                    java.lang.String[] argTypes,
                    java.lang.Object[] args) | 
| boolean | isClient()Returns whether this session is running as a client in 3 tier
 or not. | 
| static boolean | isEmpty(java.lang.String s) | 
| boolean | isOnLine() | 
| boolean | isRoot()Returns true if this application module is a root application module. | 
| boolean | isSyncIteratorState() | 
| boolean | isSyncNeeded() | 
| boolean | isUserInRole(java.lang.String role) | 
| boolean | isValidIdForUndo(java.lang.String id)Determines if an id created using  ApplicationModule.passivateStateForUndo(String, byte[], int)is still valid. | 
| void | loadPackage(java.lang.String packageName)Loads a package that may be browsed for defined objects. | 
| void | markForError(java.lang.Exception ex,
            boolean hasImplObject) | 
| java.lang.Object | marshal(java.lang.Object obj) | 
| int | passivateState(byte[] clientData) | 
| int | passivateState(byte[] clientData,
              int flags)Internal: Applications should not use this method. | 
| int | passivateState(int id,
              byte[] clientData)Internal: Applications should not user this method. | 
| int | passivateState(int id,
              byte[] clientData,
              int flags)Internal: Applications should not use this method. | 
| java.lang.String | passivateStateForUndo(java.lang.String id,
                     byte[] clientData,
                     int flags)Create an application module undo record. | 
| void | prepareAccessorViewObjects(ViewObject voObj,
                          Row voRow,
                          java.lang.String[] accNames,
                          AccessorHierarchyDefInterface[] typeBindings) | 
| void | prepareResetState() | 
| void | prepareSession(SessionData info)Internal: Applications should not use this method. | 
| void | prepareViewObjects(java.lang.String[] voNames,
                  java.lang.String[][] voAttrNames,
                  LocaleContext locale)Prepares view objects for execution. | 
| void | processChangeNotifications() | 
| java.lang.Object | refreshProperty(java.lang.String hintName)Retrieves the specified property, if it exists. | 
| void | registerObjFromActivation(java.lang.Object obj) | 
| void | remove()Deletes this component. | 
| void | removeState(int id)Internal: Applications should not use this method. | 
| int | reservePassivationId()Internal: Applications should not user this method. | 
| int | reserveSnapshotId(int flags)Internal: Applications should not use this method. | 
| void | resetState(boolean reload) | 
| void | resetState(int flags)Advanced use only | 
| void | resolve(ApplicationModule am)Resolves the "impl" pointers | 
| ServiceMessage | sendRequests(java.lang.String reqName,
            ServiceMessage msg) | 
| void | setBatchCommMode(int mode) | 
| void | setDataModelRefresh(boolean b) | 
| void | setExceptionHandler(JboExceptionHandler hndlr)Sets the exception handler for this application module. | 
| void | setImplObject(java.lang.Object o) | 
| void | setIsSyncNeeded(boolean b) | 
| void | setLocale(java.util.Locale locale)Sets a new  Localefor localizing error messages. | 
| void | setReleaseLevel(int releaseLevel) | 
| void | setStoreForPassiveState(byte storageType)Internal: Applications should not use this method. | 
| void | setStyles(java.lang.String name,
         ClientDocument clientDocument)Saves a style definition XML file in the middle tier. | 
| void | setSyncIteratorState(boolean b) | 
| void | setSyncMode(int mode)Sets the data synchronization mode between the client and the middle tier. | 
| void | sync()In 3 tier mode, this method enumerates through all row sets
 contained in this application module and flushes any changes
 pending in these row sets to the middle tier. | 
| void | syncIfNeeded() | 
| java.lang.Object[] | transformExceptionParams(ViewObject[] vos,
                        java.lang.String entityDefName,
                        java.lang.String className,
                        java.lang.Object[] params)Internal: Applications should not use this method.
 
 This method uses findViewObjectUsingEntity() to get the first view object
 that this entity is used in and then transforms the parameters from a given
 JboException from their entity layer equivalents to the view object equivalents. | 
closeObject, ensureVariableManager, getId, getImageLoc, getVariableManager, hasVariables, isReadOnly, setNameentrySet, equals, hashCode, internalGet, internalPut, put, setThrowIfPropertyNotFoundOnGetpublic static final int BATCH_ALLOW_XTN
public static final int BATCH_ALLOW_RANGE_SET
public static final int BATCH_ALLOW_INFO
public static final int BATCH_ALLOW_CACHE
public static final int BATCH_ALLOW_PASSIVATION
public static final int BATCH_ALLOW_XML
public static final int BATCH_ALLOW_MASTER_DETL
public static final int BATCH_ALLOW_STRUCT
public static final int BATCH_ALLOW_RANGE
public static final int BATCH_DEFAULT
public static final java.lang.String END_REQUEST_RELEASE_LEVEL
public WSApplicationModuleImpl(ApplicationModule am)
public WSApplicationModuleImpl(SessionCookie sessionCookie)
protected WSApplicationModuleImpl(java.lang.String name,
                       WSApplicationModuleImpl parent)
protected WSApplicationModuleImpl(java.lang.String name,
                       java.lang.String defName,
                       WSApplicationModuleImpl parent)
public SessionCookie getSessionCookie()
public boolean isOnLine()
public java.lang.String getResponseName()
public int getRemoteObjectId(java.lang.Object obj)
public java.lang.Object marshal(java.lang.Object obj)
public void setDataModelRefresh(boolean b)
public void addResponse(java.io.Serializable resp)
public ObjectMarshaller getObjectMarshaller()
public java.util.HashMap getObjects()
public java.util.HashMap getActiveObjects()
public boolean isSyncIteratorState()
public void setSyncIteratorState(boolean b)
public ApplicationModule getApplicationModuleImpl()
public java.lang.Object getImplObject()
getImplObject in class WSObjectpublic void setImplObject(java.lang.Object o)
setImplObject in class WSObjectpublic void markForError(java.lang.Exception ex,
                boolean hasImplObject)
markForError in class WSObjectpublic void detach()
public java.lang.String getAMFullName()
public void registerObjFromActivation(java.lang.Object obj)
public void addChildAM(WSApplicationModuleImpl childAM)
protected void addChild(java.lang.Object child)
public void prepareResetState()
public void doInit()
public void doWork()
public void doFinish(boolean isEndOfSvcMsg)
public java.util.ArrayList getAllRowSetIterators()
public ApplicationModule createApplicationModule(java.lang.String amName, java.lang.String defName)
ApplicationModuledefName parameter.
 Example code:
    ApplicationModule nestedAM = parentAM.createApplicationModule("MyAM", "package1.Package1Module");
 
 createApplicationModule in interface ApplicationModuleamName - the name to be assigned to the application module.
               If null, a system generated
               name is assigned.defName - the name of the application module definition from which the new
                nested application module is to be created.  It must
                be a fully qualified definition name (including
                the package name).
                If ApplicationModule.DEFAULT_DEF_FULL_NAME or null is passed,
                a generic application module (one without custom
                code or static component objects) is created.public static boolean isEmpty(java.lang.String s)
public ApplicationModule findApplicationModule(java.lang.String amName)
ApplicationModuleamName) may be a single part name or a multi-part
 name.  If it is multi-part (separated by dots), each part from
 left represents the containing (parent) application module.
 Based on the name, findApplicationModule first tries to find the nested application module starting with this application module. If it finds a match, it returns it. In this case, the name is said to be relative.
If it does not find a match, it starts searching for the application module from the root application module. If it finds a match, it returns it. In this case, the name is said to be absolute.
For example, suppose we have the following containership of nested application modules:
    Root (root Application Module)
       ChildAM1
          GrandChildAM1_1
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
       ChildAM2
          GrandChildAM2_1
 
 If one calls findApplicationModule("GrandChildAM1_2") on ChildAM1, it will find it from ChildAM1 and return it.
If one calls findApplicationModule("GrandChildAM1_2.GreatGrandChildAM1_2_1") on ChildAM1, it will find it from ChildAM1 and return it.
Both these are relative name cases.
If one calls findApplicationModule("Root.ChildAM2.GrandChildAM2_1") on ChildAM1, it will first try to find it from ChildAM1. This will fail because ChildAM1 does not have a nested application module named Root. After that, the search begins from the root application module. This will succeed because Root has a nested application module named ChildAM2 and ChildAM2 in turn has a nested nested application module named GrandChildAM2_1. This is an absolute name case.
For application module searching, findApplicationModule() makes no distinction between nested application modules included in other application modules during design time and those created programmatically during runtime.
Example code:
    ApplicationModule nestedAM = parentAM.findApplicationModule("MyNestedAM");
 
 findApplicationModule in interface ApplicationModuleamName - the name of the nested application module.  It may be
               a relative name or an absolute name.  If null,
               the root application module is returned.null if
         the application module is not found.public WSApplicationModuleImpl findWSApplicationModule(java.lang.String amName)
public java.lang.String[] getApplicationModuleNames()
ApplicationModuleExample code:
    String[] nestedAMNames = parentAM.getApplicationModuleNames();
    // If you want to retrieve all currently loaded nested Application Modules
    ApplicationModule[] nestedAMs = new ApplicationModule[nestedAMNames.length];
    for (int i = 0; i < nestedAMNames.length; i++)
    {
       nestedAM[i] = parentAM.findApplicationModule(nestedAMNames[i]);
    }
 
 
 If you need names of application modules that are not yet loaded,
 use ApplicationModule.getApplicationModuleNames(boolean, boolean)
getApplicationModuleNames in interface ApplicationModuleApplicationModule.findApplicationModule(String)public java.lang.String[] getApplicationModuleNames(boolean inclLoadedOnes,
                                           boolean inclNotLoadedOnes)
ApplicationModuleThis method allows the user to control whether the returning names are those of loaded (instantiated) nested application modules, or those of not yet loaded (uninstantiated) nested application modules, or both. Not yet loaded application modules would appear only if lazy loading is turned on.
 Note that ApplicationModule.getApplicationModuleNames()getApplicationModuleNames(true, false).
 
 If this method is called with loadedOnes = true and
 fromDef = true, both loaded and not-yet-loaded
 application module names are returned.  No duplicate name is returned.
 Note that loaded application modules include dynamically created ones.
 
getApplicationModuleNames in interface ApplicationModuleinclLoadedOnes - if true, loaded ones are
                   returned.inclNotLoadedOnes - if true, names of the child application modules from the
                application module definition are returned.  Some of
                these child AMs could have already been loaded and some may
                have not yet been loaded.public java.lang.String[] getWSApplicationModuleNames()
public Request createRequest()
public ServiceMessage createSyncMessage()
public void setIsSyncNeeded(boolean b)
public boolean isSyncNeeded()
public void syncIfNeeded()
public void sync()
ApplicationModuleApplicationModule.SYNC_IMMEDIATE,
 no pending changes would be found, and sync() will
 effectively be a no-op.
 In 2 tier mode, this method is a no-op, as all changes are applied immediately.
sync in interface ApplicationModulepublic ServiceMessage sendRequests(java.lang.String reqName, ServiceMessage msg)
public void setBatchCommMode(int mode)
public int getBatchCommMode()
public void setSyncMode(int mode)
ApplicationModuleApplicationModule.SYNC_LAZY and ApplicationModule.SYNC_IMMEDIATE.
 SYNC_LAZY is typically more efficient in that it causes fewer round trips to the middle tier.
 Note that the sync mode is an attribute of the root application
 module.  If one calls getSyncMode or setSyncMode
 on a nested application module, it is routed to the root
 application module.  Also, note that pending changes are
 managed at the root application module.  When the changes
 are flushed from the client to the middle tier, all changes
 pending under the root application module are flushed.
 
setSyncMode in interface ApplicationModulemode - the new synchronization mode: SYNC_LAZY or
 SYNC_IMMEDIATE.ApplicationModule.getSyncMode(), 
ApplicationModule.SYNC_LAZY, 
ApplicationModule.SYNC_IMMEDIATEpublic int getSyncMode()
ApplicationModule
 Note that the sync mode is an attribute of the root application
 module.  If one calls getSyncMode or setSyncMode
 on a nested application module, it is routed to the root
 application module.  Also, note that pending changes are
 managed at the root application module.  When the changes
 are flushed from the client to the middle tier, all changes
 pending under the root application module are flushed.
 
getSyncMode in interface ApplicationModuleApplicationModule.setSyncMode(int mode), 
ApplicationModule.SYNC_LAZY, 
ApplicationModule.SYNC_IMMEDIATEpublic ViewObject createViewObject(java.lang.String voName, java.lang.String defName)
ApplicationModuledefName parameter.
 Example code:
    ViewObject vo = am.createViewObject("MyVO", "package1.DeptView");
 
 createViewObject in interface ApplicationModulevoName - the name to be assigned to the view object.
               If null, a system generated
               name is assigned.defName - the name of the view definition from which the new
                view object is to be created.  It must
                be a fully qualified name (including the package name).public ViewObject createViewObjectFromQueryClauses(java.lang.String voName, java.lang.String eoName, java.lang.String selectClause, java.lang.String fromClause, java.lang.String whereClause, java.lang.String orderByClause)
ApplicationModule
 For example, suppose we have an entity object named
 Emp in a package named package1.
 The following code block creates a view object using
 this method:
 
    ViewObject vo = am.createViewObjectFromQueryClauses("MyVO",
         "package1.Emp",      // Fully qualified EO name
         "E.ENAME as EmpName, E.EMPNO as EmpNo",  // select clause
         "EMP E",             // from clause
         "E.DEPTNO = 10",     // where clause
          null);              // order by clause
 
 Internally, this methods create a temporary view definition from the entity object and sets the select, from, where, and order-by clauses of the view definition. Then, it uses that view definition to create the view object.
createViewObjectFromQueryClauses in interface ApplicationModulevoName - the name to be assigned the view object.
               If null, a system generated
               name is assigned.eoName - the name of the entity object from which the
               new view object is to be derived.selectClause - a SQL statement SELECT clause.
                     The name or alias of each column should match
                     the name of the corresponding entity object's
                     attribute.  In the above example code,
                     "ENAME" and "EMPNO" are database column names,
                     and "EmpName" and "EmpNo" are entity object's
                     attribute names.  If null, a default
                     SELECT clause will be generated from the entity
                     definition (selecting all entity attributes that
                     are mapped to database query columns).fromClause - a SQL statement FROM clause.  If null, a
                   default FROM clause will be generated from the entity
                   definition.whereClause - a SQL statement WHERE clause.  If null,
                    no where clause is specified, i.e., all rows from
                    the database table/view are retrieved.orderByClause - a SQL statement ORDER-BY clause.  If null
                      no order-by clause is established.public ViewObject createViewObjectOnEntity(java.lang.String voName, java.lang.String eoName)
createViewObjectOnEntity in interface ApplicationModulepublic ViewObject createViewObjectOnRowSet(java.lang.String voName, RowSet rs)
createViewObjectOnRowSet in interface ApplicationModulepublic ViewObject createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement)
ApplicationModuleExample code:
    ViewObject vo = am.createViewObjectFromQueryStmt("MyVO",
         "SELECT EMP.ENAME as EmpName, EMP.MGR as EmpMgr FROM EMP");
 
 In this example, the resulting view object will have two attributes, named EmpName and EmpMgr.
Internally, this method create a temporary view definition with no entity object base and maps database columns to attribute definitions. Then, it uses that view definition to create the view object.
createViewObjectFromQueryStmt in interface ApplicationModulevoName - the name to be assigned the view object.
               If null, a system generated
               name is assigned.sqlStatement - the SQL query statement for the view object.public ViewObject createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement, java.lang.String voImplClassName)
ApplicationModuleApplicationModule.createViewObjectFromQueryStmt(String, String).
 Example code:
    ViewObject vo = am.createViewObjectFromQueryStmt("MyVO",
         "SELECT EMP.ENAME as EmpName, EMP.MGR as EmpMgr FROM EMP", "MyEmpVOImpl");
 
 
 In this example the ViewObject returned is an instance of MyEmpVOImpl. MyEmpVOImpl must
 extend the oracle.jbo.ViewObjectImpl class.
createViewObjectFromQueryStmt in interface ApplicationModulepublic ViewObject findViewObject(java.lang.String voName)
ApplicationModulevoName) may or may not be qualified with the name
 of the containing application module.  If it is, the view object
 name is said to be an AM-qualified view object name.  If not, the name
 is said to be an unqualified view object name.
 
 An AM-qualified name is a multi-part name (separated by dots).
 The last part of the name is the view object name (view object
 part of the name).  All preceding parts consistitute the name of
 the application module that contains the view object.  For an AM-qualified
 name, findViewObject() first locates the containing application
 module using the application module name.  In fact, it uses
 ApplicationModule.findApplicationModule(String) to find the application
 module.  Thus, the application module name in an AM-qualified view object
 name may be relative or absolute application module name.
 See findApplicationModule() discussions on absolute
 and relative application module names.  Once
 the application module is found, the view object part is used to
 find the view object in that application module.
 
If the view object name is unqualified, the search for the view object is made on this application module.
For example, suppose we have the following containership of nested application modules and view objects:
    Root (root Application Module)
       ChildAM1
          ViewObjectA
          GrandChildAM1_1
             ViewObjectB
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
                ViewObjectC
       ChildAM2
          GrandChildAM2_1
             ViewObjectD
 
 ChildAM1.findViewObject("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC") will succeed (using relative application module name).
ChildAM2.findViewObject("Root.ChildAM1.GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC") will succeed (using absolute application module name) and return the same view object as ChildAM1.findViewObject("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC").
Both these are AM-qualified name cases.
GrandChildAM2_1.findViewObject("ViewObjectD") will succeed. This is is an unqualified name case.
For view object searching, findViewObject() makes no distinction between view objects included the application module during design time and those created programmatically during runtime.
Example code:
    ViewObject vo = am.findViewObject("MyVO");
 
 findViewObject in interface ApplicationModulevoName - the name of the view object.null if the view object
         is not found.ApplicationModule.findApplicationModule(String), 
ApplicationModule.findViewLink(String)public WSViewObjectImpl findWSViewObject(java.lang.String voName)
public java.lang.String[] getViewObjectNames()
ApplicationModuleExample code:
    String[] voNames = am.getViewObjectNames();
    // If you want to retrieve all currently loaded view objects
    ViewObject[] vos = new ViewObject[voNames.length];
    for (int i = 0; i < voNames.length; i++)
    {
       vos[i] = am.findViewObject(voNames[i]);
    }
 
 
 If you need names of view objects that are not yet loaded,
 use ApplicationModule.getViewObjectNames(boolean, boolean)
getViewObjectNames in interface ApplicationModuleApplicationModule.findViewObject(String)public java.lang.String[] getViewObjectNames(boolean inclLoadedOnes,
                                    boolean inclNotLoadedOnes)
ApplicationModuleThis method allows the user to control whether the returning names are those of loaded (instantiated) view objects, or those of not yet loaded (uninstantiated) view objects, or both. Not yet loaded view objects would appear only if lazy loading is turned on.
 Note that ApplicationModule.getViewObjectNames()getViewObjectNames(true, false).
 
 If this method is called with loadedOnes = true and
 fromDef = true, both loaded and not-yet-loaded
 view object names are returned.  No duplicate name is returned.
 Note that loaded view objects include dynamically created ones.
 
getViewObjectNames in interface ApplicationModuleinclLoadedOnes - if true, loaded ones are
                   returned.inclNotLoadedOnes - if true, names of the view objects from the
                application module definition are returned.  Some of
                these VOs could have already been loaded and some may
                have not yet been loaded.public java.lang.String[] getWSViewObjectNames()
public ViewLink createViewLink(java.lang.String vlName, java.lang.String defName, ViewObject master, ViewObject detail)
ApplicationModuledefName parameter.
 
 master and detail identifies two
 view objects that will linked by this new view link.
 
For example, assume that during design time, the user used the design time view object Wizard to create two view objects, DeptView and EmpView inside of a package named package1. Then, assume that the user invoked the view link wizard to create a view link definition (in the same package) named DeptEmpViewLink, that correlates the DeptNo attribute of DeptView to the DeptNo attribute of EmpView.
 Given these, the user can use the code block like the following to
 create in this application module (represented by am)
 two view objects and a view link programmatically (during runtime):
 
    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");
    ViewLink vl = am.createViewLink("MyDeptEmpLink", "package1.DeptEmpViewLink",
                                    voDept, voEmp);
 
 This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.
 This method verifies that the view objects passed in match
 the view link definition.  Specifically, in the above example,
 createViewLink() checks to ensure that the master (voDept)
 is an instance of package1.DeptView and that the detail
 (voEmp) is an instance of package1.EmpView.
 If match fails, an error (InvalidParamException) is reported,
 as the user tried to set up a view link between two view objects where the View
 Link definition does not match the view link definitions of master and
 detail.
 
One exception to this match rule is that createViewLink() allows the user to reverse the view link direction. Thus, in the above example, the following would have succeeded:
    ViewLink vl = am.createViewLink("MyEmpDeptLink", "package1.DeptEmpViewLink",
                                    voEmp, voDept);
 
 Note that in the above code block, voEmp is the master and voDept is the detail. The view link definition is used in the reverse direction.
createViewLink in interface ApplicationModulevlName - the name to be assigned to the view link.
               If null, a system generated
               name is assigned.defName - the name of the link definition from which the new
                view link is to be created.  It must
                be a fully qualified name (including the package name).master - the view object that is to play the role of master.detail - the view object that is to play the role of detail.ApplicationModule.createViewObject(String, String)public ViewLink createViewLinkFromEntityAssocName(java.lang.String vlName, java.lang.String entityAssocName, ViewObject master, ViewObject detail)
ApplicationModuleFor example, suppose we have two entity objects in package package1: Dept and Emp. An entity association DeptEmpAssoc is created between the two entity objects relating the Deptno attribute. Two view objects are defined on these entity objects, DeptView and EmpView.
The following code creates two view objects in this application module and link them, using DeptEmpAssoc:
    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");
    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "package1.DeptEmpAssoc",
                        voDept, voEmp);
 
 This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.
Internally, this method creates a temporary view link definition from the entity association and uses it to create the view link.
 This method verifies that the view objects passed in match
 the entity association definition.  Specifically, in the above example,
 createViewLinkFromEntityAssocName() checks to ensure that
 the master (voDept) uses the Dept entity object
 as one of its entity bases and the detail (voEmp) uses the
 Emp entity object as one of its entity bases.
 If match fails, an error (InvalidParamException) is reported,
 as the user tried to set up a view link between two view objects where the
 entity association is unable to relate the two view objects.
 
 The primary difference between
 ApplicationModule.createViewLink(String, String, ViewObject, ViewObject)
 and
 createViewLinkFromEntityAssocName is that the former requires
 the view link definition name, and the latter requires the entity
 association name.
 
createViewLinkFromEntityAssocName in interface ApplicationModulevlName - the name to be assigned to the view link.
               If null, a system generated
               name is assigned.entityAssocName - the name of the entity association from which the
                        new view link is to be derived.  It must
                        be a fully qualified name (including the package name).master - the view object that is to play the role of master.detail - the view object that is to play the role of detail.ApplicationModule.createViewObject(String, String)public ViewLink createViewLinkBetweenViewObjects(java.lang.String vlName, java.lang.String accessorName, ViewObject master, AttributeDef[] srcAttrs, ViewObject detail, AttributeDef[] destAttrs, java.lang.String assocClause)
ApplicationModule
For example, suppose we have two view objects in package package1: DeptView and EmpView. Each of them has an attribute named Deptno.
The following code creates two view objects in this application module and link them by the Deptno attribute:
    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");
    AttributeDef[] deptLinkAttrs = new AttributeDef[] { voDept.findAttributeDef("Deptno") };
    AttributeDef[] empLinkAttrs = new AttributeDef[] { voEmp.findAttributeDef("Deptno") };
    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "Employees",
                        voDept, deptLinkAttrs,
                        voEmp, empLinkAttrs,
                        null);
 
 This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.
 Using the Association Clause
 
 This view link will generate a SQL clause like EMP.DEPTNO=?
 on voEmp.  The Deptno value of the current row in voDept
 (master) is bound into the bind variable ('?').  This results in limiting
 query on voEmp to employees whose Deptno equals the current Dept's
 Deptno.
 
 By supplying a non-null association clause (the last parameter),
 the user can override the default SQL clause and replace it with his.
 For example, if he wishes to include only employees whose JOB is ANALYST, he
 can supply the following assocClause:
 EMP.DEPTNO=? AND EMP.JOB='ANALYST'.
 
 Using the Accessor Name
 
 If the user supplies a non-null accessorName (the second parameter), a
 dynamic attribute is added to master view object which allows
 the user retrieve related rows from a master row.
 
In the above code example, a dynamic attribute "Employees" is added to voDept, such that if the user retrieve that attribute on a row the came from voDept, it will return a row set of Emp's that are related to that row.
The code example below retrieves all rows from voDept and for each Dept row, retrieves its employees by using the "Employees" attribute and prints their names.
    Row deptRow;
    while ((deptRow = voDept.next()) != null)
    {
       System.out.println("Dept: " + deptRow.getAttribute("Dname"));
       RowSet emps = (RowSet) deptRow.getAttribute("Employees");
       Row empRow;
       while ((empRow = emps.next()) != null)
       {
          System.out.println("  Emp: " + empRow.getAttribute("Ename"));
       }
    }
 
 createViewLinkBetweenViewObjects in interface ApplicationModulevlName - the name to be assigned to the view link.
               If null, a system generated
               name is assigned.accessorName - the name to be given to the dynamic attribute
                     to be added to master view object.
                     Given a row from the master view object, the
                     user can retrieve the attribute of this
                     name to get a row set of related rows from
                     the detail view object.  See the above discussions
                     for more info.  If null, no dynamic
                     attribute is added.master - the view object that is to play the role of master.srcAttrs - an array of attributes from master view object to be
                 related to detail.detail - the view object that is to play the role of detail.destAttrs - an array of attributes from detail view object to be
                  related to master.assocClause - a custom association clause.  See the above
                    discussions for more info.  If null,
                    system generated SQL clause will be used.ApplicationModule.createViewObject(String, String), 
StructureDef.findAttributeDef(String), 
RowIterator.next(), 
AttributeList.getAttribute(String)public ViewLink findViewLink(java.lang.String vlName)
ApplicationModulevlName) may or may not be qualified with the name
 of the containing application module.  If it is, the view link
 name is said to be an AM-qualified view link name.  If not, the name
 is said to be an unqualified view link name.
 
 An AM-qualified name is a multi-part name (separated by dots).
 The last part of the name is the view link name (view link
 part of the name).  All preceding parts consistitute the name of
 the application module that contains the view link.  For an AM-qualified
 name, findViewLink() first locates the containing application
 module using the application module name.  In fact, it uses
 ApplicationModule.findApplicationModule(String) to find the application
 module.  Thus, the application module name in an AM-qualified view link
 name may be relative or absolute application module name.
 See findApplicationModule() discussions on absolute
 and relative application module names.  Once
 the application module is found, the view link part is used to
 find the view link in that application module.
 
If the view link name is unqualified, the search for the view link is made on this application module.
For example, suppose we have the following containership of nested application modules and view links:
    Root (root Application Module)
       ChildAM1
          ViewLinkA
          GrandChildAM1_1
             ViewLinkB
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
                ViewLinkC
       ChildAM2
          GrandChildAM2_1
             ViewLinkD
 
 ChildAM1.findViewLink("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC") will succeed (using relative application module name).
ChildAM2.findViewLink("Root.ChildAM1.GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC") will succeed (using absolute application module name) and return the same view link as ChildAM1.findViewLink("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC").
Both these are AM-qualified name cases.
GrandChildAM2_1.findViewLink("ViewLinkD") will succeed. This is is an unqualified name case.
For view link searching, findViewLink() makes no distinction between view links included the application module during design time and those created programmatically during runtime.
Example code:
    ViewLink vl = am.findViewLink("MyVL");
 
 findViewLink in interface ApplicationModulevlName - the name of the view link.null if the view link
         is not found.ApplicationModule.findApplicationModule(String), 
ApplicationModule.findViewObject(String)public WSViewLinkImpl findWSViewLink(java.lang.String vlName)
public java.lang.String[] getViewLinkNames()
ApplicationModuleExample code:
    String[] vlNames = am.getViewLinkNames();
    // If you want to retrieve all currently loaded view links
    ViewLink[] vls = new ViewLink[vlNames.length];
    for (int i = 0; i < vlNames.length; i++)
    {
       vls[i] = am.findViewLink(vlNames[i]);
    }
 
 
 If you need names of view objects that are not yet loaded,
 use ApplicationModule.getViewLinkNames(boolean, boolean)
getViewLinkNames in interface ApplicationModuleApplicationModule.findViewLink(String)public java.lang.String[] getViewLinkNames(boolean inclLoadedOnes,
                                  boolean inclNotLoadedOnes)
ApplicationModuleThis method allows the user to control whether the returning names are those of loaded (instantiated) view links, or those of not yet loaded (uninstantiated) view links, or both. Not yet loaded view links would appear only if lazy loading is turned on.
 Note that ApplicationModule.getViewLinkNames()getViewLinkNames(true, false).
 
 If this method is called with loadedOnes = true and
 fromDef = true, both loaded and not-yet-loaded
 view link names are returned.  No duplicate name is returned.
 Note that loaded view links include dynamically created ones.
 
getViewLinkNames in interface ApplicationModuleinclLoadedOnes - if true, loaded ones are
                   returned.inclNotLoadedOnes - if true, names of the view links from the
                application module definition are returned.  Some of
                these VLs could have already been loaded and some may
                have not yet been loaded.public java.lang.String[] getWSViewLinkNames()
public ComponentObject createComponentObject(java.lang.String coName, java.lang.String coDefName)
ApplicationModuledefName parameter.
 Example code:
    ComponentObject vo = am.createComponentObject("MyCO", "package1.MyComponentDef");
 
 
 A component object is a generic object that an application module
 can contain.  A Comonent object is any object that implements the
 ComponentObject interface.  In particular,
 ViewObject and ViewLink implement
 the ComponentObject interface.
 
Thus, this method enables the user to build a custom ComponentObject and have it be managed by application module. Specificially, he must first implement a Java class that implements ComponentObject.
Then, as is the case with view objects and view links, he must build a component object definition (an XML file) reachable from the class path. (Note that for view objects and view links, BC4J design time provides tools to produce these definition files. For custom component object, the user must provide a custom tool to produce definition files or provide finished definition files himself.)
createComponentObject in interface ApplicationModulecoName - the name to be assigned to the component object.
               If null, a system generated
               name is assigned.coDefName - the name of the component object definition from which the new
                component object is to be created.  It must
                be a fully qualified name (including the package name).public ComponentObject findComponentObject(java.lang.String coName)
ApplicationModuleApplicationModule.createComponentObject(String, String)
 for explanation of BC4J's support for custom component objects.
 
 See ApplicationModule.findViewObject(String) for explanation on AM-qualified
 names and unqualified names.
 
findComponentObject in interface ApplicationModulecoName - the name of the component object.null if the component object
         is not found.ApplicationModule.findApplicationModule(String)public WSComponentObjectImpl findWSComponentObject(java.lang.String coName)
public boolean isRoot()
ApplicationModuleisRoot in interface ApplicationModulepublic WSApplicationModuleImpl getRootWSApplicationModule()
public Transaction getTransaction()
ApplicationModuleIf the user creates two root application modules, they normally do not share the transaction. To share a transaction acroos root application modules, the user would need to define a global transaction through JTA and have both application modules participate in it.
getTransaction in interface ApplicationModulepublic Session getSession()
ApplicationModuleIf the user creates two root application modules, each has its own session.
 Note that this is the same session
 that is passed to the ApplicationModuleImpl.activate(Session) call.
 
getSession in interface ApplicationModuleApplicationModuleImpl.activate(Session)public java.lang.Object getSyncLock()
ApplicationModuleThis locking object should be used to synchronize multiple calls into BC4J. The client application code rarely needs to worry about synchronization. It is the middle tier (the server) code that needs to synchronize calls into the middle tier to serialize updates to shared middle tier objects.
Here is an example of how to synchronize access using this method:
    synchronized(am.getSyncLock())
    {
       // Code that needs to execute serially.
    }
 
 getSyncLock in interface ApplicationModulepublic void clearVOCaches(java.lang.String entityName,
                 boolean recurse)
ApplicationModuleentityName. This
 method finds all view objects that use the entity, then calls
 ViewObject.clearCache() on each view object.
 If entityName is null, then the caches of all view objects in the application module are cleared. If recurse is true, it recurses into nested application modules.
clearVOCaches in interface ApplicationModuleentityName - fully qualified name of the entity object.
                   If null all view object caches
                   are cleared.recurse - a flag indicating whether to recurse into nested
                application modules.public RowSetIterator findRSIForEntity(RowSetIterator[] rsis, int eRowHandle)
ApplicationModuleRowSetIterator associated with the
 specified entity row handle.  This method is provided to handle
 errors that occur during entity post cycle.
 
 If an error occurs while an entity
 is being posted to database, the system throws a
 DMLException. Inside the DMLException
 instance is an opaque handle (an integer) identifying the
 entity (an instance of EntityImpl)
 that caused the error.
 
For example, the DMLException could have been thrown because the row violated a database constraint. The client might want to give the user a chance to correct the problem by displaying the the view row that uses this entity.
To do this, the client would "gather" all row set iterators that can be used to report and fix the problem. It would then call this method, passing in the array of row set iterators and the entity row handle returned by DMLException.
Among the row set iterator in the array, findRSIForEntity will pick the "best" candidate and return it to the client. The client then can use the row set iterator to report the problem and give the user a chance to fix the problem.
findRSIForEntity in interface ApplicationModulersis - an array of RowSetIterator's to look through.eRowHandle - the entity row handle.RowSetIterator.DMLException, 
RowSetIterator, 
DMLExceptionpublic java.lang.String getListBindingName(RowSetIterator rsi, Key rowKey, java.lang.String attrName, java.lang.String lbName)
getListBindingName in interface ApplicationModulepublic RowSetIterator getListBindingRSI(RowSetIterator rsi, Key rowKey, java.lang.String attrName, java.lang.String lbName)
getListBindingRSI in interface ApplicationModulepublic RowSetIterator getPreferredListRSI(RowSetIterator rsi, Key rowKey, java.lang.String attrName, java.lang.String lbName)
getPreferredListRSI in interface ApplicationModulepublic ViewObject findViewObjectWithParameters(java.lang.String voname, VariableManager params, boolean executeIfNeeded)
ApplicationModulefindViewObjectWithParameters in interface ApplicationModulepublic ViewObject findViewObjectUsingEntity(ViewObject[] vos, java.lang.String entityName, java.lang.String[] attrNames)
ApplicationModulefindViewObjectUsingEntity in interface ApplicationModulevos - an array of possible view objects.entityName - fully qualified name of the entity object.
                   Should not be null.attrNames - if empty, i.e., null or an array
                 of length 0, then the attribute matching
                 rule will be skipped (see the above discussion).
                 If not empty, it should have only one element
                 and that element should be the name of an
                 attribute of the entity.  The attribute matching
                 rule will apply.  If a matching view object is found,
                 attrName[0] upon return should have the name
                 of a view object mapped to the entity attribute.public java.lang.Object[] transformExceptionParams(ViewObject[] vos, java.lang.String entityDefName, java.lang.String className, java.lang.Object[] params)
ApplicationModuletransformExceptionParams in interface ApplicationModulevos - an array of possible view objects.entityDefName - fully qualified name of the entity object.
                   Should not be null.className - Qualified classname for the Exception which is being mappedparams - Parameters from the Exception that is to be transformed into view object 
               equivalents.public JboExceptionHandler getExceptionHandler()
getExceptionHandler in interface ApplicationModulepublic void setExceptionHandler(JboExceptionHandler hndlr)
ApplicationModuleJboExceptionHandler
 interface.
 
 JboExceptionHandler handle exceptions (java.lang.Exception)
 and warnings (JboWarning).  In 2 tier mode,
 the handler will only see warnings but no exception.  In 2 tier mode,
 Exceptions are thrown through the normal Java throw mechanism.
 They should be handled through catch blocks.
 For warnings, no throw/catch mechanism is available.  The
 handler must process them.
 
In 3 tier mode, the handler may have to process exceptions in addition to warnings. When a method call is marshalled from the client tier into the middle tier, the middle tier processing of the method may result in more than one exceptions. All these exceptions are caught by the marshalling code and brought back to the client tier. As Java's throw mechanism allows throwing of only one exception, these multiple exceptions cannot be processed through Java throw. Thus, for each of these exceptions, a call is made to handler's handleException(), so that the handler can process it.
setExceptionHandler in interface ApplicationModulehndlr - an exception handler.public void addWarning(JboWarning warn)
ApplicationModule
 Adds a warning message.  In 2 tier mode, the warning is passed
 to this method is sent to the exception handler immediately
 if an exception handler is present (exception handler is
 specified through a call to ApplicationModule.setExceptionHandler(JboExceptionHandler)).
 This is done through a call to
 JboExceptionHandler.handleWarning(JboWarning).
 
 In 3 tier mode, the warnings that came to this application module
 through calls to addWarning() in the middle tier are "chained"
 until the middle tier processing completes.  They are brought to
 the client at the end of middle tier processing, and, for each
 warning, a call is made to 
 JboExceptionHandler.handleWarning(JboWarning)
 if an exception handler is present.
addWarning in interface ApplicationModuleaddWarning in interface WarningContainerwarn - warning message.public ClientDocument getStyles(java.lang.String name)
ApplicationModuleThis method retrieves the content of an XML document specified by name and returns it as a ClientDocument. It locates the XML file through the following logic:
 ClientDocument enables the user to manipulate an arbitrary
 tree of an XML style document.  Thus, the user can retrieve a 
 ClientDocument using this method and modify parts of the
 tree and write it back out using ApplicationModule.setStyles(String, ClientDocument).
 
getStyles in interface ApplicationModulename - the XML file name.ClientDocument.ClientDocumentpublic void setStyles(java.lang.String name,
             ClientDocument clientDocument)
ApplicationModuleThis method saves the content of the document (the clientDocument parameter) in an XML file specified by name. It locates the XML file through the following logic:
ClientDocument enables the user to build an arbitrary tree of an XML style document. Thus, this method can be used to programmatically build and save an XML file.
setStyles in interface ApplicationModulename - the XML file name.clientDocument - the ClientDocument to be saved.ClientDocumentpublic int reserveSnapshotId(int flags)
ApplicationModuleReserves a unique indentifier which may later be specified when passivating AM state as the identifier to be used for re-establishing AM state.
 If the PASSIVATE_TRANSIENT_FLAG has not been set then this method
 will return a passivation id from one of the persistent Serializers (File
 and Database).  This method will then reserve a stack snapshot id for
 that persistent snapshot.  The reserved stack id may be acquired by
 invoking ApplicationModule.getMostRecentStackId().
 
 
If the PASSIVATE_TRANSIENT_FLAG has been set then this method will return a stack id. The stack id is unique for a session transaction only. This may need to be extended to provide a UUID so that applications do not inadvertantly try to undo state across transaction boundaries.
This method may be invoked to obtain a unique snapshot identifier before a snapshot is actually acquired. An example use case is an HTTP servlet that must encode all URLs with the snapshot id before the snapshot is acquired.
reserveSnapshotId in interface ApplicationModuleflags - a bit map defining passivation flags.ApplicationModule.passivateState(int, byte[], int).public int getMostRecentStackId()
ApplicationModuleAcquire the snapshot id of the most recent stack snapshot. This method may be used by clients to acquire the stack snapshot id of a persistent snapshot.
 Please see ApplicationModule.passivateState(byte[]) for more information
 regarding stack passivation.
getMostRecentStackId in interface ApplicationModulepublic int reservePassivationId()
ApplicationModulereservePassivationId in interface ApplicationModulepublic int passivateState(int id,
                 byte[] clientData)
ApplicationModulepassivateState in interface ApplicationModulepublic int passivateState(byte[] clientData)
passivateState in interface ApplicationModulepublic int passivateState(int id,
                 byte[] clientData,
                 int flags)
ApplicationModuleSerializes the current state of this application module's session, along with all changes cached, to a byte array and returns a unique identifier with which to re-establish the state.
 This method accepts an id which represents the unique identifier that
 should be used to re-establish the application module state.  The id
 must have been generated by invoking ApplicationModule.reserveSnapshotId(int).
 
The same snapshot type bit which was specified when the snapshot id was reserved should be specified when this method is invoked. For example, if reserveSnapshotId was invoked with the PASSIVATE_TRANSIENT_FLAG set then this method should be invoked with the PASSIVATE_TRANSIENT_FLAG set. Failing to do so may result in invalid snapshot id exceptions.
  
 For more information regarding passivation please see
 ApplicationModule.passivateState(byte[], int).
 
passivateState in interface ApplicationModuleid - a reserved passivation idclientData - cached changes, or any information that a client might
 want to store.flags - a bit map defining passivation flags.ApplicationModule.reservePassivationId()public int passivateState(byte[] clientData,
                 int flags)
ApplicationModuleCreates a snapshot of the current state of this application module's session. If the PASSIVATE_TRANSIENT_FLAG is not set then the snapshot bytes will be serialized to a persistent store (database or file). If the PASSIVATE_TRANSIENT_FLAG bit is set then the snapshot bytes will be pushed to the application module snapshot stack. The method will then return a unique identifier which may be used to activate the state. Please note that the same snapshot type bit should be used to activate the state as was used to passivate the state. Failing to do so could result in the snapshot record not being located.
This method always works from the top-level application module. If you have nested application modules and you call this method on a inner application module, it will still work from the top-level module.
 In contrast to ApplicationModule.activateState(int, SessionData, int), which deserializes
 a session-state from the persistent store, calling
 passivateState, does not affect the transaction state.
 
The cached changes, or clientData, can be any information that a client might want to store. For example, a JSP client could store the additional client-state information in this byte array so that when the JSP client becomes active and connects to an application module later, it could get its passivated state from the application module. This would reduce the amount of state information stored at the client side to a bare minimum (typically just an application module persistence ID).
A value of null for clientData indicates that the state will be stored, but there is no client data to be preserved.
 This method preserves currency. When ApplicationModule.activateState(int, SessionData, int) is
 called, the active row is returned.
 
For example, the following code snippet inserts a new row in a view object, then calls passivateState to save the application module state. The transaction is rolled back and activateState is called. The value of getCurrentRow called before the passivateState should match the the value of getCurrentRow called after activateState.
 // create a view object "depts"
 ViewObject depts = appModule.createViewObject("myDeptView", "myDeptViewDef");
 // insert a new row into depts
 Row r = depts.createRow();
 r.setAttribute("DeptNum","56");
 depts.insertRow(r);
 Row afterInsert = depts.getCurrentRow();
 // Passivate the application module state
 int id = appModule.passivateState(null);
 // rollback the transaction
 appModule.getTransaction.rollback();
 // move the cursor to the last row -- just to make it interesting
 depts.last();
 // now activate the application module state
 // currency should be on the new row inserted.
 appModule.activateState(id, SessionData, int);
 Row afterActivate = depts.getCurrentRow();
 
 The values afterInsert and afterActivate should be the same.
passivateState in interface ApplicationModuleclientData - cached changes, or any information that a client might
 want to store.flags - a bit map defining passivation flags.public java.lang.String passivateStateForUndo(java.lang.String id,
                                     byte[] clientData,
                                     int flags)
ApplicationModuleapplication module state that is passivated using this method will have transaction scope only -- the passivated state will be removed when a transaction commit/rollback occurs.
application module state snapshots that are created using this method will be pushed to an LIFO stack. This stack is defined as part of the application module transaction state and as such will be maintained by application module passivation/activation.
The application developer may specify their own snapshot id by passing an id in for the request. If no id has been specified then an id will be generated by the system and returned. If a snapshot already exists for this transaction with the specified id then the old snapshot will be removed from the snapshot stack.
 The application developer may control whether a persistent snapshot
 (on-disk) or a transient snapshot (in-memory) is taken with the
 BC4J session property, PropertyConstants.ENV_SNAPSHOT_STORE_UNDO.
 
 A value of PropertyConstants.SNAPSHOT_STORE_PERSISTENT
 (default) directs the algorithm to create a persistent snapshot (on-disk)
 for this undo request.  The location of the persistent snapshot
 may further be controlled by the BC4J propery PropertyConstants.ENV_PASSIVATION_STORE
 which accepts values of {file,database}.
 
  A value of PropertyConstants.SNAPSHOT_STORE_TRANSIENT
 directs the algorithm to create a transient snapshot (in-memory).
 Transient snapshots are not guaranteed to be maintained in the event of
 system failure.
 
 Setting the flags parameter value to ApplicationModule.PASSIVATE_DEFER_FLAG
 allows the snapshot creation to be deferred until the application module
 is checked in.  For typical web-based applications, this means that the
 snapshot would be created at the end of the request when the application
 module checkin is invoked.  
 
Most applications using the application module pool are highly encouraged to use this flag value for performance and memory usage optimization. Deferring the snapshot creation allows one snapshot to be used for both transaction undo and failover support.
Deferred passivation should not be requested if it is necessary to capture the application module state at the time of the undo request -- a deferred undo request does not guarantee that the passivated state equals the application module state at the time of the undo request.
passivateStateForUndo in interface ApplicationModuleid - the id which is to be used to identify this undo record.
    The id should be unique within a transaction.  If an id is not
    specified then an id will be generated by the system and returned.clientData - a byte array representing any clientData which the
    invoker wishes to associate with the undo record.flags - an int representing passivateStateForUndo flags.  Valid
    flags are:
 ApplicationModule.PASSIVATE_DEFER_FLAG see the discussion above for more information regarding the use of this flag.
In order to specify default behaviour the application developer may pass 0 for the flags parameter. Default behaviour is defined as immediate passivation.
public byte[] activateState(int id,
                   boolean remove,
                   SessionData info)
activateState in interface ApplicationModulepublic byte[] activateState(int id,
                   boolean remove)
activateState in interface ApplicationModulepublic byte[] activateState(int id,
                   SessionData info,
                   int flags)
ApplicationModuleDeserializes a session-state from the persistent store based on the given id. This method always works from the top-level application module. If you have nested application modules and you call this method on a inner application module, it will still work from the top-level module.
When the PERSISTENT_SNAPSHOT bit is set then this method will attempt to locate the snapshot bytes in a persistent store (database or file). If the PERSISTENT_SNAPSHOT bit is not set then this method will locate the snapshot bytes on the stack.
 When this method is called, the rows that are updated are locked; new rows
 are inserted into the transaction cache and posted. This is in contrast
 to ApplicationModule.passivateState(byte[], int), which does not affect the
 transaction state.
 
 The activateState method preserves currency. When it is
 called, it will return the row that was active when
 ApplicationModule.passivateState(byte[], int) was called.
 For an example usage of activateState, see
 ApplicationModule.passivateState(byte[], int).
 
If the REMOVE_SNAPSHOT bit is set in the flags then the activation framework will remove the snapshot from the persistent store after activation.
It is up to the developer to devise a clean-up strategy for the redundant store.
activateState in interface ApplicationModuleid - a unique integer identifier associated with an instance of the
 application module.ApplicationModule.passivateState(byte[], int) method.public byte[] activateStateForUndo(java.lang.String id,
                          int flags)
ApplicationModule
 Activates an application module state which was created using
 ApplicationModule.passivateStateForUndo(String, byte[], int).
 
If the id is not on the undo stack then an exception will be thrown indicating that it is an invalid undo id.
Invoking this method will remove all those undo records that are above (more recent) than the specified undo record.
activateStateForUndo in interface ApplicationModuleid - the id of an undo record that was created using ApplicationModule.passivateStateForUndo(String, byte[], int)flags - Valid flags are:
 N/A -- The flags are currently unused. Please pass 0.
public boolean isValidIdForUndo(java.lang.String id)
ApplicationModuleApplicationModule.passivateStateForUndo(String, byte[], int)
 is still valid.
 An id may become invalid if a transaction boundary (commit/rollback) has occured since the id was created.
isValidIdForUndo in interface ApplicationModuleid - the id of an undo record that was created using ApplicationModule.passivateStateForUndo(String id, byte[] clientData, int flags)public ApplicationPoolSvcMsgContext doPoolMessage(ApplicationPoolSvcMsgContext ctx)
ApplicationModuledoPoolMessage in interface ApplicationModulepublic void prepareSession(SessionData info)
ApplicationModuleprepareSession in interface ApplicationModulepublic void resetState(boolean reload)
resetState in interface ApplicationModulepublic void resetState(int flags)
ApplicationModule
 Applications should override/extend ApplicationModuleImpl.reset()
 to reset custom application module state.  reset() is invoked by the
 internal resetState before resetState begins cleaning up
 internal application module state.
 
Flag usage:
RESET_RELOAD_FLAG directs resetState to eagerly reload the application module compoonents.
RESET_ROLLBACK_FLAG directs resetState to rollback the application module.
RESET_INTERNAL_FLAG directs resetState to perform an internal reset only. The ApplicationPool uses this to reset a managed state application module while also managing the previous session's state. For example, when RESET_INTERNAL has been specified the reset will not remove the persistent snapshot records on the snapshot stack.
Resets the non-transaction state of an application module. For example:
appModule.resetState(false);
resetState in interface ApplicationModulepublic void removeState(int id)
ApplicationModuleRemoves the application module's session-state, and any cached change information, from the persistent store based on the given id. For example:
appModule.removeState(id);
removeState in interface ApplicationModuleid - an unique integer identifier associated with an instance of the
 application module.public void setStoreForPassiveState(byte storageType)
ApplicationModuleDetermines where the application module will store serialized versions of its session-state, plus any cached changes. This information can be stored to the database, to a file, or to memory, based on the value of the storageType parameter. The storageType can be set to:
ApplicationModule.PASSIVATE_TO_DATABASE (default target)ApplicationModule.PASSIVATE_TO_FILEApplicationModule.PASSIVATE_TO_MEMORY
 This method should be called before calling ApplicationModule.passivateState(byte[]).
 Note that once an application module has serialized
 its state, it cannot be asked to change its store. This method will throw
 an JboException if this application module has already
 stored its state earlier.
 
For example, the following code will set the storage to database, file, or memory, based on the value of the str parameter. Database is the default target:
 String str =
    oracle.jbo.common.JboEnvUtil.getProperty("jbo.test.passivateStateTo");
 if (str != null)
 {
    if (str.equals("file"))
    {
      appModule.setStoreForPassiveState(ApplicationModule.PASSIVATE_TO_FILE);
    }
    else
    if (str.equals("memory"))
    {
      appModule.setStoreForPassiveState(ApplicationModule.PASSIVATE_TO_MEMORY);
    }
 
 setStoreForPassiveState in interface ApplicationModulestorageType - where the application module state is stored. Can be one
 of ApplicationModule.PASSIVATE_TO_DATABASE (default target),
 ApplicationModule.PASSIVATE_TO_FILE, or ApplicationModule.PASSIVATE_TO_MEMORY.ApplicationModule.passivateState(byte[])public void prepareAccessorViewObjects(ViewObject voObj, Row voRow, java.lang.String[] accNames, AccessorHierarchyDefInterface[] typeBindings)
prepareAccessorViewObjects in interface ApplicationModulevoObj - ViewObject on which to prepare accessor ViewObjects on.voRow - Row in this ViewObject that may be used to prepare accessor
 ViewObjects.accNames - An array of accessor names in the given view object row.typeBindings - A set of hierarchical type binding rules that contains
 structureDefName and corresponding set of attributes to activate.public void prepareViewObjects(java.lang.String[] voNames,
                      java.lang.String[][] voAttrNames,
                      LocaleContext locale)
ApplicationModuleprepareViewObjects in interface ApplicationModulevoNames - An array of view object names in this application modulevoAttrNames - For each view object name, a list of attribute names for which
 the custom properties need to be brought over to the client side.
 
 For internal framework (binding code) use only. Apps should use VO level methods to reset and select attributes.ViewObjectImpl#resetSelectedAttributeDefs(), 
ViewObjectImpl#selectAttributeDefs(String[])public void fetchAttributeProperties(java.lang.String[] voNames,
                            java.lang.String[][] voAttrNames,
                            LocaleContext locale)
ApplicationModuleFor clients like JClient applications, this method helps in downloading all the attribute properties over to the client side in one roundtrip so that startup of these applications are more performant. Calls to properties methods like getFormat(), getLabel(), etc. on the Attribute definition then, does not go over the network boundary for the attributes that are included in the parameter list.
fetchAttributeProperties in interface ApplicationModulevoNames - An array of view object names in this application modulevoAttrNames - For each view object name, a list of attribute names for which
 the custom properties need to be brought over to the client side.public void applyVOSortCriteria(ViewObject vo, SortCriteria[] sortBy)
public java.lang.String getDefName()
ComponentObjectgetDefName in interface ComponentObjectpublic java.lang.String getDefFullName()
ComponentObjectgetDefFullName in interface ComponentObjectpublic java.lang.String getName()
VariableManagerOwnergetName in interface ComponentObjectgetName in interface VariableManagerOwnergetName in class WSObjectpublic java.lang.String getFullName()
ComponentObjectgetFullName in interface ComponentObjectgetFullName in class WSObjectpublic void remove()
ComponentObjectremove in interface ComponentObjectpublic void closeWSApplicationModule()
public java.lang.Object getProperty(java.lang.String hintName)
PropertiesgetProperty in interface PropertieshintName - Property name.null.public java.lang.Object getProperty(java.lang.String hintName,
                           LocaleContext locale)
getProperty in interface Propertiespublic java.lang.String getLabel(LocaleContext locale)
GenericHintsgetLabel in interface GenericHintspublic java.lang.String getLabelPlural(LocaleContext locale)
GenericHintsgetLabelPlural in interface GenericHintspublic java.lang.String getTooltip(LocaleContext locale)
GenericHintsgetTooltip in interface GenericHintspublic java.lang.String getDefinitionState(LocaleContext locale)
GenericHintsgetDefinitionState in interface GenericHintspublic java.lang.String getHintValue(LocaleContext locale, java.lang.String sHintName)
GenericHintsgetHintValue in interface GenericHintspublic java.lang.Object refreshProperty(java.lang.String hintName)
PropertiesgetProperty.refreshProperty in interface PropertieshintName - Property name.null.public java.util.Hashtable getProperties()
PropertiesgetProperties in interface Propertiespublic void resolve(ApplicationModule am)
public WSApplicationModuleMarshaller getWSApplicationModuleMarshaller()
public java.lang.Object get(java.lang.Object keyObj)
public java.lang.String getVersion()
SessiongetVersion in interface Sessionpublic java.util.Locale getLocale()
SessionLocale used for localizing error messages.public void setLocale(java.util.Locale locale)
SessionLocale for localizing error messages.public java.lang.String[] getPackageNames()
SessiongetPackageNames in interface Sessionpublic java.lang.String[] getApplicationModuleDefNames(java.lang.String packageName)
SessiongetApplicationModuleDefNames in interface SessionpackageName - the name of the package.ApplicationModule definition names.public java.lang.String[] getAllApplicationModuleDefNames()
SessiongetAllApplicationModuleDefNames in interface SessionApplicationModule definition names.public java.lang.String[] getViewDefNames(java.lang.String packageName)
SessiongetViewDefNames in interface SessionpackageName - the name of the package.ViewDef names.public java.lang.String[] getAllViewDefNames()
SessiongetAllViewDefNames in interface SessionViewDef names.public java.lang.String[] getEntityDefNames(java.lang.String packageName)
SessiongetEntityDefNames in interface SessionpackageName - the name of the package.EntityDef names.public java.lang.String[] getAllEntityDefNames()
SessiongetAllEntityDefNames in interface SessionEntityDef names.public java.lang.String[] getEntityAssociationDefNames(java.lang.String packageName)
SessiongetEntityAssociationDefNames in interface SessionpackageName - the name of the package.EntityAssociationDef names.public java.lang.String[] getAllEntityAssociationDefNames()
SessiongetAllEntityAssociationDefNames in interface SessionEntityAssociationDef names.public java.lang.String[] getViewLinkDefNames(java.lang.String packageName)
SessiongetViewLinkDefNames in interface SessionpackageName - the name of the package.ViewLinkDef names.public java.lang.String[] getAllViewLinkDefNames()
SessiongetAllViewLinkDefNames in interface SessionViewLinkDef names.public void loadPackage(java.lang.String packageName)
SessionloadPackage in interface SessionpackageName - a fully qualified package name.public java.util.Hashtable getEnvironment()
SessionPropertyMetadata.  Applications 
 should store custom session context in the Session userdata.getEnvironment in interface SessionSession.getUserData()public LocaleContext getLocaleContext()
SessiongetLocaleContext in interface Sessionpublic RowSet executeQueryOnViewObjects(java.lang.String query)
executeQueryOnViewObjects in interface ApplicationModulepublic java.util.Hashtable getUserData()
SessionApplicationModuleImpl.prepareSession(Session).getUserData in interface Sessionpublic ApplicationModule findSharedApplicationModule(java.lang.String appModuleName)
SessionfindSharedApplicationModule in interface Sessionpublic void invalidateSession()
SessioninvalidateSession in interface Sessionpublic java.lang.String[] getUserRoles()
SessiongetUserRoles in interface Sessionpublic boolean isUserInRole(java.lang.String role)
isUserInRole in interface Sessionrole - the name of the role.public boolean isClient()
Sessionpublic ApplicationModule getCustomApplicationModule()
public java.lang.Object invokeExportedMethod(java.lang.String methodName,
                                    java.lang.String[] argTypes,
                                    java.lang.Object[] args)
invokeExportedMethod in interface Exportablepublic ViewObject findCustomViewObject(java.lang.String voName, java.lang.String voType)
public ViewObject findCustomViewObject(WSViewObjectImpl wsvo, java.lang.String voType)
public int getReleaseLevel()
ApplicationModuleFor example, the ADF/BC DataControl will invoke getReleaseLevel() to determine if this application module may be released to the ApplicationPool in SHARED_MANAGED_RELEASE_MODE or if the application module may be released in RESERVED_UNMANAGED_RELEASE_MODE.
Two release levels are currently supported:
RELEASE_LEVEL_MANAGED Default. Indicates that the application module is in a state that may be managed by BC4J state management service.
For more information about the BC4J state management service please see the passivation documentation.
RELEASE_LEVEL_RESERVED Indicates that the application module may not be managed by the BC4J state management service. Application modules may specify this release level if they reference session/txn state that may not be recreated by passivation/activation.
Common examples of state that is not currently managed by the state management service are posted database changes and database locks. Other custom examples may exist.
Care should be taken that the default RELEASE_LEVEL_MANAGED level is used for most releases. Using a RELEASE_LEVEL_RESERVED level throughout an application could result in scalability issues as application modules accumulate with the accumulation of new sessions.
If both flags have been specified then RELEASE_LEVEL_RESERVED will take precedence.
getReleaseLevel in interface ApplicationModulepublic void setReleaseLevel(int releaseLevel)
setReleaseLevel in interface ApplicationModuleApplicationModule.getReleaseLevel()public ViewDef createCompositeViewDef(java.lang.String name, java.lang.String fullName)
createCompositeViewDef in interface ApplicationModulepublic void beginRequest(java.util.HashMap ctx)
public void endRequest(java.util.HashMap ctx)
public java.lang.Class getMessageBundleClass()
getMessageBundleClass in interface VariableManagerOwnerBasepublic ResourceBundleDef getResourceBundleDef()
getResourceBundleDef in interface VariableManagerOwnerBasepublic void processChangeNotifications()
processChangeNotifications in interface ApplicationModule