|
Oracle ADF Model and Business Components API Reference 10.1.2 B14022-02 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object
oracle.jbo.common.PropertiesHelper
oracle.jbo.client.remote.ApplicationModuleImpl
Abstract application module proxy. Defines the platfrom independent remote interface for concrete (platform dependent) subclasses.
| Field Summary | |
protected boolean |
mRemoved |
| Fields inherited from class oracle.jbo.common.PropertiesHelper |
mProperties |
| Fields inherited from interface oracle.jbo.Transaction |
LOCK_NONE, LOCK_OPTIMISTIC, LOCK_OPTUPDATE, LOCK_PESSIMISTIC |
| Fields inherited from interface oracle.jbo.Session |
JBO_SESSION_COOKIE, JBO_SESSION_LOCALE |
| Fields inherited from interface oracle.jbo.common.ws.WSApplicationModuleMarshaller |
ACTIVATION_AFTER_LOSS_OF_AFFINITY, ACTIVATION_AFTER_RESTART, ACTIVATION_NONE, SYNC_INT_BATCH, SYNC_INT_BATCH_DO_WORK |
| Constructor Summary | |
ApplicationModuleImpl() |
|
| Method Summary | |
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 ApplicationModule undo record. |
void |
addClientPostListener(ClientPostListener l) |
void |
addResponse(java.io.Serializable res) |
void |
addTransactionStateListener(TransactionStateListener target)Add this TransactionListener to the list and notify all such listeners whenever commit and rollback occurs in this transaction. |
void |
addViewClearCacheListener(ViewClearCacheListener target) |
void |
addWarning(JboWarning warn)Adds a warning message. |
void |
afterActivation(int activationMode) |
void |
applyChangeSet(int id)Applies the changes committed by another transaction in order to synchronize caches between root Application Module instances. |
void |
beforePassivateState() |
void |
bindToWorkingSet(WSApplicationModuleImpl wsAM) |
void |
clearEntityCache(java.lang.String entityName)Clears the cache of the specified Entity Object. |
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 |
closeLob(int rsId, int rowId, java.lang.String attrId, boolean forInput, boolean isCharStream) |
void |
commit()Execute a commit of the server to the database. |
int |
commitAndSaveChangeSet()Commits the transaction and writes updated EntityImpls to the persistent store. |
void |
connect(java.lang.String url)Make a physical connection to a database server. |
void |
connect(java.lang.String url, java.util.Properties info)Make a physical connection to a database server. |
void |
connect(java.lang.String url, java.lang.String user, java.lang.String password)Make a physical connection to a database server. |
void |
connectToDataSource(java.util.Hashtable initialContextEnv, java.lang.String dataSourceName, boolean isXABased)Looks up a datasource from a jndi tree and acquires the jdbc connection from the looked up datasource using the javax.sql.Datasource.getConnection(String user, String passwd) method. |
void |
connectToDataSource(java.util.Hashtable initialContextEnv, java.lang.String dataSourceName, java.lang.String user, java.lang.String passwd, boolean isXABased)Looks up a datasource from a jndi tree and acquires the jdbc connection from the looked up datasource using the javax.sql.Datasource.getConnection(String user, String passwd) method. |
void |
connectToDataSource(java.lang.String nsUrl, java.lang.String nsUser, java.lang.String nsPasswd, java.lang.String dataSourceName)Looks up a datasource from Oracle 8i namespace using the jdbc_access protocol and acquires the default jdbc connection from the looked up datasource using the javax.sql.Datasource.getConnection() method. |
void |
connectToDataSource(java.lang.String nsUrl, java.lang.String nsUser, java.lang.String nsPasswd, java.lang.String dataSourceName, java.lang.String user, java.lang.String password)Looks up a datasource from Oracle 8i namespace using the jdbc_access protocol and acquires the jdbc connection from the looked up datasource using the javax.sql.Datasource.getConnection(String user, String password) method. |
ApplicationModule |
createApplicationModule(java.lang.String amName, java.lang.String defName)Create a ApplicationModule using its class name and specify its name |
ComponentObject |
createComponentObject(java.lang.String coName, java.lang.String cDefName)Create a ComponentUsage using the name of a ComponentObject class. |
protected RowSet |
createDetailRowSet(int rsiId, java.lang.String rsName, java.lang.String vlDefName)Create a detail RowSet (ViewObject) using the name of a ViewObject class. |
static ApplicationModuleImpl |
createInstance(ResponseValues amInfo) |
protected ApplicationModuleImpl |
createProxyApplicationModule(ResponseValues handle) |
java.lang.Object |
createRef(java.lang.String structName, byte[] data)Internal: Applications should not use this method. |
ViewLink |
createViewLink(java.lang.String viewLinkName, java.lang.String viewLinkDefName, ViewObject master, ViewObject detail)Creates a View Link in this Application Module from the View Link definition. |
ViewLink |
createViewLinkBetweenViewObjects(java.lang.String viewLinkName, 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 viewLinkName, 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 vDefName)Create a ViewUsage using the name of a ViewObject class. |
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 an View Object in this Application Module from an Entity Object and additional SQL clauses. |
ViewObject |
createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement)Create a ViewUsage using a SQL statement. |
ApplicationModule |
createWorkerApplicationModule(java.lang.Object sessionCookie) |
void |
detach() |
void |
disconnect()Performe clean-up when client is disconnecting by dereferencing the remote instances. |
void |
disconnect(boolean retainState)Closes the JDBC connection object. |
ServiceMessage |
doMessage(ServiceMessage svcMsg) |
ApplicationPoolSvcMsgContext |
doPoolMessage(ApplicationPoolSvcMsgContext ctx)Internal use only. |
void |
doPostChanges() |
java.lang.String |
dumpQueryResult(java.lang.String query, java.lang.String dumpClassName, java.lang.String[] data)Writes the result of the query to a (potentially very long) string. |
int |
executeCommand(java.lang.String command)Executes a SQL command using a JDBC Statement under the current transaction. |
void |
fetchAttributeProperties(java.lang.String[] voNames, java.lang.String[][] attrNames, LocaleContext locale)Fetches all custom properties for the given list of attributes for the named ViewObjects in this application module over to the remote client objects in one network roundtrip. |
ApplicationModule |
findApplicationModule(java.lang.String amName)Get an ApplicationModule using its name. |
ComponentObject |
findComponentObject(java.lang.String coName)Finds the named Component Object. |
DataCollector |
findOrCreateDataCollector(java.lang.Object obj) |
RowSetIterator |
findRSIForEntity(RowSetIterator[] rsis, int eRowHandle)Finds the RowSetIterator associated with the specified Entity row handle. |
ViewLink |
findViewLink(java.lang.String viewLinkName)Finds the named View Link. |
ViewObject |
findViewObject(java.lang.String voName)Finds the named View Object. |
ViewObject |
findViewObjectUsingEntity(ViewObject[] vos, java.lang.String entityDefName, java.lang.String[] attrNames)Given an array of View Objects (the vos parameter), finds the first matching View Object. |
void |
finishedPiggybacking() |
void |
finishedProcessingPiggyback(java.lang.Exception[] exArr) |
void |
finishSyncWorkingSet(WSApplicationModuleImpl wsAM, boolean isEndOfSvcMsg) |
java.lang.String[] |
getAllApplicationModuleDefNames()Return the name of the ApplicationModule class and all the nested ApplicationModule |
java.lang.String[] |
getAllEntityAssociationDefNames()Gets the names of the entity association definitions defined in all packages. |
java.lang.String[] |
getAllEntityDefNames()Return the names of the EntityObject available in all nested packages. |
java.lang.String[] |
getAllViewDefNames()Return the names of the ViewObject available in all nested packages. |
java.lang.String[] |
getAllViewLinkDefNames()Gets the names of the View Link definitions defined in all packages. |
protected ResponseValues |
getAMFullRef(ResponseValues handle) |
java.lang.String[] |
getApplicationModuleDefNames(java.lang.String packName)Return the names of the ApplicationModule class. |
java.lang.String[] |
getApplicationModuleNames()Return the names of the ApplicationModules. |
java.lang.String[] |
getApplicationModuleNames(boolean inclLoadedOnes, boolean inclNotLoadedOnes)Returns an array of names of the nested Application Modules in this Application Module. |
AppModuleRequestHandler |
getAppModuleRequestHandler() |
java.lang.String |
getClientProxyInterfaceName() |
ConnectionMetadata |
getConnectionMetadata()Returns a metdata structure that describes the transaction's JDBC connection. |
WSApplicationModuleImpl |
getCurrentWorkingSet() |
java.lang.String |
getDefFullName()Retrieve the application module definition's full name. |
java.lang.String |
getDefName()Retrieve the application module definition name. |
protected RowSet[] |
getDetailRowSets(int rsiId) |
java.lang.Object |
getDomainValue(java.lang.String className, java.lang.String[] argTypes, java.lang.Object[] argValues) |
java.lang.String[] |
getEntityAssociationDefNames(java.lang.String packName)Gets the names of the entity association definitions defined in a package. |
java.lang.String[] |
getEntityDefNames(java.lang.String packName)Return the names of the EntityObject available in the root package. |
java.util.Hashtable |
getEnvironment()Returns the BC4J context for the session. |
long |
getEstimatedRowCount(int rsId) |
JboExceptionHandler |
getExceptionHandler() |
int |
getFetchedRowCount(int rsiId) |
java.lang.String |
getFullName()Retrieves the fully-qualified name of this component. |
int |
getIterMode(int rsiId) |
java.util.Locale |
getLocale()Get the current Locale |
LocaleContext |
getLocaleContext()retrieves the locale context for the session |
int |
getLockingMode()Returns the preferred locking mode for this Transaction. |
java.lang.String |
getMarshalledTypeName(java.lang.Object obj) |
int |
getMaxFetchSize(int voId) |
int |
getMostRecentStackId()Internal: Applications should not use this method. |
java.lang.String |
getName()Retrieve the name of the particular instance of an object (instance name) |
ObjectMarshaller |
getObjectMarshaller() |
java.lang.String[] |
getPackageNames()Gets names of the packages that make up this middle tier application. |
java.lang.Object |
getParent() |
protected byte[] |
getPiggyback() |
java.util.Hashtable |
getProperties()Override PropertyHelper.getProperties |
java.lang.String |
getQueryOptimizerHint(int voId) |
int |
getReleaseLevel()Returns the release level that should be employed by clients of this ApplicationModule. |
AbstractAppModuleRequestHandler |
getRemoteAppModuleRequestHandler() |
int |
getRemoteId() |
int |
getRemoteObjectId(java.lang.Object obj) |
java.lang.String |
getResponseName() |
ApplicationModuleImpl |
getRootAM() |
byte |
getROTEntryType() |
int |
getRowCount(int rsId) |
protected RowSetIterator[] |
getRowSetIterators(int rsId) |
protected RowSet[] |
getRowSets(int voId) |
protected ServiceMessage |
getServiceMessage() |
Session |
getSession()Gets the Application Module's session. |
ClientDocument |
getStyles(java.lang.String name)Gets the Style Definitions from 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. |
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()Get the version |
java.lang.String[] |
getViewDefNames(java.lang.String packName)Return the names of the ViewObject available in the root package. |
java.lang.String[] |
getViewLinkDefNames(java.lang.String packName)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. |
protected int |
getViewObjectId(ViewObject vo) |
java.lang.String[] |
getViewObjectNames()Return the names of the ViewUsages (static and dynamic) defined in this applicationModule. |
java.lang.String[] |
getViewObjectNames(boolean inclLoadedOnes, boolean inclNotLoadedOnes)Returns an array of names of the View Objects in this Application Module. |
void |
handleException(java.lang.Exception ex, boolean lastEntryInPiggyback)Catches an exception thrown by the middle tier. |
void |
handleWarning(JboWarning warn)Catches a warning thrown by the middle tier. |
boolean |
hasPendingDataPosts() |
protected void |
init() |
protected void |
init(java.util.Hashtable env) |
java.lang.Object |
invokeDomainMethod(Row row, java.lang.String attrId, boolean bringBackDomain, java.lang.String methodName, java.lang.String[] clzNames, java.lang.Object[] args) |
java.lang.Object |
invokeMethod(java.lang.Object target, java.lang.String methodName, java.lang.String[] argTypeNames, java.lang.Object[] args) |
boolean |
isBoundToWorkingSet() |
boolean |
isBundledExceptionMode() |
boolean |
isClearCacheOnCommit()Returns the flag indicating whether all Entity Object caches will be cleared after the transaction is committed. |
boolean |
isClearCacheOnRollback()Returns the flag indicating whether all Entity Object caches will be cleared after the transaction is rolled back. |
boolean |
isClient()Returns whether this session is running as a client in 3 tier or not. |
boolean |
isConnected()Checks if the transaction is connected to the database. |
boolean |
isCustomMarshalled(java.lang.Object obj) |
boolean |
isDetached() |
boolean |
isDirty()Checks if any data within this Application Module has been modified but not yet committed. |
protected static boolean |
isEmpty(java.lang.String s) |
static boolean |
isIgnoreCustomProxies() |
boolean |
isInWorkingSet() |
boolean |
isLocal() |
boolean |
isMarshalledLocally() |
boolean |
isRemoved() |
boolean |
isRoot()Returns true if this Application Module is a root Application Module. |
boolean |
isRowValidation(int rsiId) |
boolean |
isUserInRole(java.lang.String role) |
boolean |
isValidIdForUndo(java.lang.String id)Determines if an id created using passivateStateForUndo(String, byte[], int) is still valid. |
void |
loadPackage(java.lang.String packageName)Loads a package that may be browsed for defined objects. |
java.lang.Object |
marshal(java.lang.Object obj) |
java.lang.Object |
marshalForActivate(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 ApplicationModule undo record. |
void |
postChanges()Synchronizes the changes in the middle-tier transaction-cache with the database. |
void |
prepareSession(SessionData info)Internal: Applications should not use this method. |
void |
processJboException(JboException ex) |
protected void |
processPiggyback(byte[] pb) |
protected com.sun.java.util.collections.ArrayList |
processServiceMessage(ServiceMessage svcMsg) |
java.lang.Object |
readBlobStream(int rsId, int rowId, java.lang.String attrId, int offset, int length) |
java.lang.Object |
readLob(int rsId, int rowId, java.lang.String attrId, int offset, int length) |
java.lang.Object |
readLobInternal(int rsId, int rowId, java.lang.String attrId, int offset, int length, boolean isCharStream) |
protected java.lang.Object |
readMethodResponse(java.lang.String methodName, ServiceMessage sm) |
void |
readRowSetXML(int rsId, Element elem, int depthCount) |
void |
readRowXML(int rsiId, RowImpl row, Element elem, int depthCount) |
void |
reconnect()Re-establish the transaction JDBC connection using previously supplied database credentials. |
void |
reconnect(boolean force)Reconnect the application module to the database, if necessary, using previously supplied database credentials. |
java.lang.Object |
refreshProperty(java.lang.String hintName)Retrieves the specified property, if it exists. |
java.lang.Object |
refreshVOProperty(int voId, java.lang.String hintName) |
void |
remove()Deletes this component. |
void |
removeChangeSet(int id)Removes the change set that defines the changes to EntityImpls within a transaction. |
void |
removeClientPostListener(ClientPostListener l) |
void |
removeState(int id)Internal: Applications should not use this method. |
void |
removeTransactionStateListener(TransactionStateListener target)Remove this transaction listener (if it exists) from this transaction. |
void |
removeViewClearCacheListener(ViewClearCacheListener target) |
int |
reservePassivationId()Internal: Applications should not user this method. |
int |
reserveSnapshotId(int flags)Internal: Applications should not use this method. |
void |
resetMarshaller() |
void |
resetState(boolean reload) |
void |
resetState(int flags)Internal: Applications should not use this method. |
ResponseValues |
riGetApplicationModuleInfo() |
java.lang.Object |
riInvokeExportedMethod(java.lang.Object target, java.lang.String methodName, java.lang.String[] argTypes, java.lang.Object[] args) |
void |
riRemove() |
void |
rollback()Discards all modifications made in this transaction. |
ServiceMessage |
sendServiceMessage(ServiceMessage svcMsgIn) |
ServiceMessage |
sendWorkingSetRequests(java.lang.String reqName, WSApplicationModuleImpl wsAM, ServiceMessage msg) |
void |
setBoundToWorkingSet(boolean b) |
void |
setBundledExceptionMode(boolean flag)Set this transaction into bundled exception mode. |
void |
setClearCacheOnCommit(boolean val)Sets the value of the flag indicating whether all Entity Object caches will be cleared after the transaction is committed. |
void |
setClearCacheOnRollback(boolean val)Sets the value of the flag indicating whether all Entity Object caches will be cleared after the transaction is rolled back. |
void |
setDataModelRefresh(boolean b) |
void |
setExceptionHandler(JboExceptionHandler hndlr)Sets the exception handler for this Application Module. |
static void |
setIgnoreCustomProxies(boolean ignore) |
void |
setIterMode(int rsiId, int mode) |
void |
setLocale(java.util.Locale locale)Set a new Locale |
void |
setLockingMode(int mode)Sets the preferred locking mode for this Transaction. |
void |
setMaxFetchSize(int voId, int max) |
void |
setProperty(java.lang.String hintName, java.lang.Object hintValue) |
void |
setQueryOptimizerHint(int voId, java.lang.String hint) |
void |
setReleaseLevel(int releaseLevel) |
void |
setRemoteAppModuleRequestHandler(AbstractAppModuleRequestHandler reqHandler) |
void |
setRowValidation(int rsiId, boolean flag) |
void |
setStoreForPassiveState(byte storageType)Internal: Applications should not use this method. |
void |
setStyles(java.lang.String name, ClientDocument clientDocument)Saves the Style Definitions to the Middle Tier |
void |
setSyncMode(int mode)Sets the data synchronization mode between the client and the middle tier. |
void |
setVOProperty(int voId, java.lang.String hintName, java.lang.Object hintValue) |
void |
sync()Synchronise all the ResultSets defined in this ApplicationModule with the server. |
void |
syncMarshaller(ServiceMessage svcMsg) |
void |
syncWorkingSet(WSApplicationModuleImpl wsAM) |
protected java.lang.String |
toEmpty(java.lang.String s) |
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 ViewObject that this entity is used in and then transforms the parameters from a given JboException from their Entity layer equivalents to the ViewObject equivalents. |
void |
transPostPushback(int hdl)Internal: Applications should not use this method. |
void |
transPostRefresh(int refreshMode, int hdl) |
void |
transPostRemove(int hdl)Internal: Applications should not use this method. |
void |
transPostRevert(int hdl)Internal: Applications should not use this method. |
java.lang.Object |
unMarshal(java.lang.Object obj) |
void |
validate()Starts the validation cycle and validates all subscribers in the ValidationListener list. |
void |
writeClob(int rsId, int rowId, java.lang.String attrId, char[] data) |
void |
writeLob(int rsId, int rowId, java.lang.String attrId, byte[] data) |
Node |
writeRowSetXML(int rsId, int depthCount, long options) |
Node |
writeRowSetXMLWithMap(int rsId, long options, com.sun.java.util.collections.HashMap map) |
Node |
writeRowXML(int rsiId, RowImpl row, int depthCount, long options) |
Node |
writeRowXMLWithMap(int rsiId, RowImpl row, long options, com.sun.java.util.collections.HashMap map) |
| Methods inherited from class oracle.jbo.common.PropertiesHelper |
getProperty |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface oracle.jbo.Properties |
getProperty |
| Field Detail |
protected boolean mRemoved
| Constructor Detail |
public ApplicationModuleImpl()
| Method Detail |
public void setRemoteAppModuleRequestHandler(AbstractAppModuleRequestHandler reqHandler)
public AbstractAppModuleRequestHandler getRemoteAppModuleRequestHandler()
protected void init()
protected void init(java.util.Hashtable env)
public boolean isRemoved()
public boolean isLocal()
isLocal in interface AppModuleRequestHandlerpublic final 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 ApplicationModuleImpl getRootAM()
public java.lang.Object getParent()
getParent in interface ClientComponentObjectpublic java.lang.String[] getPackageNames()
SessiongetPackageNames in interface Session
public ApplicationModule createApplicationModule(java.lang.String amName,
java.lang.String defName)
createApplicationModule in interface ApplicationModuleamName - The name to assign to the ApplicationModuledefName - 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.protected static boolean isEmpty(java.lang.String s)
public ApplicationModule findApplicationModule(java.lang.String amName)
findApplicationModule in interface ApplicationModuleamName - The name of the ApplicationModulepublic java.lang.String[] getApplicationModuleDefNames(java.lang.String packName)
getApplicationModuleDefNames in interface SessionpackName - the name of the package.public java.lang.String[] getAllApplicationModuleDefNames()
getAllApplicationModuleDefNames in interface Sessionpublic java.lang.String[] getApplicationModuleNames()
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 ApplicationModules, or both. Not yet loaded Application Modules would appear only if lazy loading is turned on.
Note that is equivalent to 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 ApplicationModuleinclNotLoadedOnes - 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 void connect(java.lang.String url)
connect in interface Transactionurl - a database url of the form jdbc:subprotocol:subname.
public void connect(java.lang.String url,
java.util.Properties info)
connect in interface Transactionurl - a database url of the form jdbc:subprotocol:subname.info - a list of arbitrary string tag/value pairs to be used as connection arguments. Normally, at least "user" and "password" properties should be included.
public void connect(java.lang.String url,
java.lang.String user,
java.lang.String password)
connect in interface Transactionurl - a database url of the form jdbc:subprotocol:subname.user - the database user on whose behalf the connection is being made.password - the user's password.
public void connectToDataSource(java.lang.String nsUrl,
java.lang.String nsUser,
java.lang.String nsPasswd,
java.lang.String dataSourceName)
TransactionconnectToDataSource in interface TransactionnsUrl - Url to the jndi namespace where the datasource is boundnsUser - User name that is used to access the namespace.nsPasswd - nsUsers' passwd
public void connectToDataSource(java.lang.String nsUrl,
java.lang.String nsUser,
java.lang.String nsPasswd,
java.lang.String dataSourceName,
java.lang.String user,
java.lang.String password)
TransactionconnectToDataSource in interface TransactionnsUrl - Url to the jndi namespace where the datasource is boundnsUser - User name that is used to access the namespace.nsPasswd - nsUsers' passwduser - Username for which the connection is acquired from the datasourcepassword - User's password.
public void connectToDataSource(java.util.Hashtable initialContextEnv,
java.lang.String dataSourceName,
java.lang.String user,
java.lang.String passwd,
boolean isXABased)
TransactionconnectToDataSource in interface TransactioninitialContextEnv - Envirionment used the create initial context. May be null.user - Username for which the connection is acquired from the datasourcepasswd - User's password.isXABased - True if datasource is XADataSource implementation. If true, the tranasction is assumed to be controlled by an external transaction manager.
public void connectToDataSource(java.util.Hashtable initialContextEnv,
java.lang.String dataSourceName,
boolean isXABased)
TransactionconnectToDataSource in interface TransactioninitialContextEnv - Envirionment used the create initial context. May be null.isXABased - True if datasource is XADataSource implementation. If true, the tranasction is assumed to be controlled by an external transaction manager.public ConnectionMetadata getConnectionMetadata()
TransactiongetConnectionMetadata in interface Transactionpublic boolean isConnected()
TransactionisConnected in interface Transactionpublic void reconnect(boolean force)
Transactionreconnect in interface Transactionforce - force a reconnect, should usually be false.public void reconnect()
TransactionIf the application module was previously disconnected using disconnect(true) (retain application module state) then this method should only re-establish the transaction JDBC connection.
If the application module was previously disconnected using disconnect(false) (do not retain application module state) then this method should re-establish the transaction JDBC connection and reset the application module non-transactional state which may include child view usage and application module usage instances.
reconnect in interface Transactionpublic void disconnect()
disconnect in interface Transactionpublic void disconnect(boolean retainState)
TransactionIf disconnect is invoked with retainState equal to true then this transaction's JDBC connection will be closed but, the root application module will continue to reference this transaction and its state. The transaction state may include unposted database changes and cached result sets. In the middle tier, reconnect on the DBTransaction interface may be invoked to re-establish a JDBC connection for this transaction. If connection pooling is enabled for this middle tier instance this connection may represent a recycled connection.
The developer should take measures to ensure that the following requirements are met before attempting to disconnect a JDBC connection and retain application module state. All of these validations are not currently performed by the disconnection implementation because of performance considerations:
All non-forward only view objects should have fetched in all data
If pessimistic locking is enabled, all pending changes should be commited/rolled back.
All changes that have been posted to the database should be commited/rolled back.
disconnect in interface Transactionpublic void validate()
TransactionValidationListener list. Typically all top-level entities which were invalidated through the framework will be in this list. Listeners are removed as they are validated.
The advantage of calling validate() is that the data stays in the middle tier. Data is not posted to the database, thus avoiding the possible firing of database triggers or constraints.
validate in interface Transactionpublic void addClientPostListener(ClientPostListener l)
public void removeClientPostListener(ClientPostListener l)
public void postChanges()
TransactionThis method bypasses the validation cycle and can allow invalid data to be posted to the database. As a side effect of this method, database triggers or other constraints might be fired as a result of posting data. However, invalid changes cannot be committed, as the commit() method validates all changes before committing them.
Typically, applications should call this method if they must execute SQL operations or queries with the current cached-state of data, before validating the changes.
postChanges in interface TransactionTransaction.commit()public void doPostChanges()
public void transPostPushback(int hdl)
TransPostControltransPostPushback in interface TransPostControlpublic void transPostRemove(int hdl)
TransPostControltransPostRemove in interface TransPostControlpublic void transPostRevert(int hdl)
TransPostControltransPostRevert in interface TransPostControl
public void transPostRefresh(int refreshMode,
int hdl)
transPostRefresh in interface TransPostControlpublic boolean isDirty()
TransactionFor example, this method can be called when the user at the client attempts to close an application. If there is unsaved data, this method can return true. In response, the client can prompt the user to save before closing the application.
isDirty in interface Transactiontrue if the local data and the database differ.public void commit()
commit in interface TransactionTransactionListener.beforeCommit(TransactionEvent), TransactionListener.afterCommit(TransactionEvent), DBTransaction, Transaction.postChanges()public int commitAndSaveChangeSet()
TransactionThis method (along with applyChangeSet and removeChangeSet is used to synchronize the cache between root Application Module instances in an Application Module pool.
commitAndSaveChangeSet commits the transaction, but during the commit process, writes out "changed" EntityImpls to the persistent store. These changes are stored as a "change set". The change set can then be applied to other transactions (that is, to the Entity caches of other root Application Modules).
The integer value returned by this method identifies the change set that is stored in persistent store.
To apply the changes to another transaction (or Application Module cache), call Transaction.applyChangeSet(int) where int is the integer value returned by commitAndSaveChangeSet that represents the change set.
For example, assume you have two root Application Modules, named am1 and am2, in an Application Module pool.
// The line below commits the transaction in am1 and writes the change // set to persistent store (database table). The returning snapId // identifies the (persistent) change set. int snapId = am1.getTransaction().commitAndSaveChangeSet(); // Use that change set and apply the changes to the other Application // Module, am2. That is, apply changes from am1 to am2. am2.getTransaction().applyChangeSet(snapId); // When you are done with the change set, remove (free) it. am1.getTransaction().removeChangeSet(snapId);
commitAndSaveChangeSet in interface TransactionEntityImpl change set in persistent store.Transaction.applyChangeSet(int), Transaction.removeChangeSet(int)public void rollback()
Transaction
appMod.getTransaction().rollback();
When this method is invoked, beforeRollback events are posted to the listeners, the changes are discarded, afterRollback events are posted, and transient listeners are deleted from the transaction. For both events, non-transient listeners preceed transient listeners.
In the following example, a method named updateAttr has been implemented to update a row of a View Object vo with the value newAttrVal. If updateAttr succeeds (returns true), the code commits the transaction; otherwise, it rolls the transaction back:
// Assume that appMod has been declared and initialized elsewhere.
try { if (updateAttr(vo, newAttrVal)) {
// Commit changes to the database, making
// updated data available to other Application Modules.
appMod.getTransaction().commit();
System.out.println("\n Transaction committed. \n");
}
else {
appMod.getTransaction().rollback();
System.out.println("\n Transaction rolled back. \n");
}
} catch (Exception e) {
e.printStackTrace();
}
Note, if your Application Module is an EJB session bean, a new transaction is started for you automatically after calling rollback. You do not have to explicitly start a new transaction.
rollback in interface TransactionDBTransaction, TransactionListener.afterRollback(TransactionEvent), TransactionListener.beforeRollback(TransactionEvent)public ServiceMessage sendServiceMessage(ServiceMessage svcMsgIn)
sendServiceMessage in interface SvcMsgSenderpublic void sync()
sync in interface ApplicationModulepublic boolean isBoundToWorkingSet()
public void setBoundToWorkingSet(boolean b)
setBoundToWorkingSet in interface WSApplicationModuleMarshallerpublic 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()
ApplicationModuleNote 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 boolean isInWorkingSet()
isInWorkingSet in interface ObjectMarshallerpublic java.lang.String getVersion()
getVersion in interface Sessionpublic java.util.Locale getLocale()
getLocale in interface Sessionpublic void setLocale(java.util.Locale locale)
setLocale in interface Sessionlocale -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_MEMORYThis 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 ViewObject findViewObjectUsingEntity(ViewObject[] vos,
java.lang.String entityDefName,
java.lang.String[] attrNames)
ApplicationModulefindViewObjectUsingEntity in interface ApplicationModulevos - an array of possible View Objects.entityDefName - 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 ViewObject equivalents.public int reservePassivationId()
ApplicationModulereservePassivationId in interface ApplicationModulepublic 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.#passivateState(int, byte[], flags).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 #passivateToStack(byte[]) for more information regarding stack passivation.
getMostRecentStackId in interface ApplicationModulepublic void beforePassivateState()
public int passivateState(int id,
byte[] clientData)
ApplicationModulepassivateState in interface ApplicationModulepublic int passivateState(byte[] clientData)
passivateState in interface ApplicationModule
public 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.oracle.jbo.server.ApplicationModule#reservePassivationId()
public int passivateState(byte[] clientData,
int flags)
ApplicationModuleCreates a snapshot of the current state of thie ApplicationModule'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 ApplicationModule 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)
ApplicationModuleApplicationModule state that is passivated using this method will have transaction scope only -- the passivated state will be removed when a transaction commit/rollback occurs.
ApplicationModule state snapshots that are created using this method will be pushed to an LIFO stack. This stack is defined as part of the ApplicationModule transaction state and as such will be maintained by ApplicationModule 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 ApplicationModule state at the time of the undo request -- a deferred undo request does not guarantee that the passivated state equals the ApplicationModule 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)
activateState in interface ApplicationModule
public byte[] activateState(int id,
boolean remove,
SessionData info)
activateState in interface ApplicationModule
public 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(/tt> 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)
ApplicationModuleActivates an ApplicationModule 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)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 void prepareSession(SessionData info)
ApplicationModuleprepareSession 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 resetState(boolean reload)
resetState in interface ApplicationModulepublic void resetState(int flags)
ApplicationModuleApplications should override/extend ApplicationModuleImpl.reset() to reset custom ApplicationModule state. reset() is invoked by the internal resetState before resetState begins cleaning up internal ApplicationModuel state.
Flag usage:
RESET_RELOAD_FLAG directs resetState to eagerly reload the ApplicationModule compoonents.
RESET_ROLLBACK_FLAG directs resetState to rollback the ApplicationModule.
RESET_INTERNAL_FLAG directs resetState to perform an internal reset only. The ApplicationPool uses this to reset a managed state ApplicationModule 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 applyChangeSet(int id)
TransactionThis method (along with commitAndSaveChangeSet and removeChangeSet is used to synchronize the cache between root Application Module instances in an Application Module pool.
Call applyChangeSet to apply changes commited by another transaction. The integer id parameter (returned by commitAndSaveChangeSet) identifies the change set to be found in the persistent store.
After this call, this transaction's cache is synchronized with the changes from the change set.
For an example of how to use applyChangeSet, see commitAndSaveChangeSet.
applyChangeSet in interface Transactionid - an integer representing the change set to apply to the transaction.Transaction.commitAndSaveChangeSet(), Transaction.removeChangeSet(int)public void removeChangeSet(int id)
TransactionThis method (along with commitAndSaveChangeSet and applyChangeSet is used to synchronize the cache between root Application Module instances in an Application Module pool.
For an example of how to use removeChangeSet, see commitAndSaveChangeSet.
removeChangeSet in interface Transactionid - an integer representing the change set to remove from the persistent store.Transaction.commitAndSaveChangeSet(), Transaction.applyChangeSet(int)public ApplicationPoolSvcMsgContext doPoolMessage(ApplicationPoolSvcMsgContext ctx)
ApplicationModuledoPoolMessage in interface ApplicationModule
public void setStyles(java.lang.String name,
ClientDocument clientDocument)
setStyles in interface ApplicationModulename - The style Storage NameclientDocument - The ClientDocument that needs to be savedClientDocumentpublic ClientDocument getStyles(java.lang.String name)
getStyles in interface ApplicationModulename - The style Storage NameClientDocumentpublic java.lang.String[] getViewObjectNames()
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 is equivalent to 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 ApplicationModuleinclNotLoadedOnes - 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[] getViewDefNames(java.lang.String packName)
getViewDefNames in interface SessionpackName - the name of the package.public java.lang.String[] getAllViewDefNames()
getAllViewDefNames in interface Sessionpublic java.lang.String[] getEntityDefNames(java.lang.String packName)
getEntityDefNames in interface SessionpackName - the name of the package.public java.lang.String[] getAllEntityDefNames()
getAllEntityDefNames in interface Session
public ViewObject createViewObject(java.lang.String voName,
java.lang.String vDefName)
createViewObject in interface ApplicationModulevoName - name of the ViewObject classvDefName - the name of the View Object definition from which the new View Object is to be created. It must be a fully qualified name (including the package name).
public ComponentObject createComponentObject(java.lang.String coName,
java.lang.String cDefName)
createComponentObject in interface ApplicationModulecoName - name that will be given to the ComponentUsage
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)
ApplicationModuleFor 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 Object definition from the Entity Object and sets the select, from, where, and order-by clauses of the View Definition. Then, it uses that View Object definition to create the View Object.
createViewObjectFromQueryClauses in interface ApplicationModuleeoName - 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 must 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.fromClause - a SQL statement FROM clause.whereClause - a SQL statement WHERE clause. If null no where clause is established, 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 createViewObjectFromQueryStmt(java.lang.String voName,
java.lang.String sqlStatement)
createViewObjectFromQueryStmt in interface ApplicationModulesqlStatement - SQL statement of the ViewRowpublic int executeCommand(java.lang.String command)
TransactionThis method provides a way of bypassing the framework to query the database directly. Internally, the method passes the specified SQL command to a statement on the JDBC connection and executes it.
The following code example uses executeCommand. The SQL string is designed to update the EMP table. This example passes the string to executeCommand, then prints a message to report how many rows were actually updated.
public static void demoUpdateColumn(ApplicationModule appMod) {
String sqlStr = "UPDATE EMP " +
"SET MGR=7007 " +
"WHERE MGR=7698 ";
int n = appMod.getTransaction().executeCommand(sqlStr);
System.out.println("Updated " + n + " rows.");
}
Be careful when using executeCommand, because it will execute any valid SQL statement. For example, you could perform an operation like the following DDL command:
appMod.getTransaction().executeCommand("DROP TABLE MYTEMPTABLE");
A pending database transaction could be committed inadvertently due to the implicit commit performed by DDL operations, as well as having any row locks released.
executeCommand in interface Transactioncommand - a valid SQL statement.
public java.lang.String dumpQueryResult(java.lang.String query,
java.lang.String dumpClassName,
java.lang.String[] data)
TransactionThe following code example uses dumpQueryResult.
public static void demoSimpleFetch(ApplicationModule appMod) {
// Define and execute a simple SQL statement.
String sqlStr = "SELECT Emp.ename FROM EMP Emp ";
// dumpQueryResult is a utility method for testing queries.
String result = appMod.getTransaction().dumpQueryResult(sqlStr,
"oracle.jbo.server.QueryDumpTab",
null);
System.out.println(sqlStr);
System.out.println(result); }
dumpQueryResult in interface Transactionquery - the SQL query statement.dumpClassName - the class that dumps the result to a string.data - an array of data items.public long getEstimatedRowCount(int rsId)
public int getRowCount(int rsId)
public int getFetchedRowCount(int rsiId)
public java.lang.String[] getEntityAssociationDefNames(java.lang.String packName)
SessiongetEntityAssociationDefNames in interface SessionpackName - 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 packName)
SessiongetViewLinkDefNames in interface SessionpackName - the name of the package.ViewLinkDef names.public java.lang.String[] getAllViewLinkDefNames()
SessiongetAllViewLinkDefNames in interface SessionViewLinkDef names.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 is equivalent to 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 ApplicationModuleinclNotLoadedOnes - 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 ViewLink findViewLink(java.lang.String viewLinkName)
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 ApplicationModuleviewLinkName - the name of the View Link.null if the View Link is not found.ApplicationModule.findApplicationModule(String), ApplicationModule.findViewObject(String)
public ViewLink createViewLink(java.lang.String viewLinkName,
java.lang.String viewLinkDefName,
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 ApplicationModuleviewLinkName - the name to be assigned to the View Link. If null, a system generated name is assigned.viewLinkDefName - 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 viewLinkName,
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 ApplicationModuleviewLinkName - 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 viewLinkName,
java.lang.String accessorName,
ViewObject master,
AttributeDef[] srcAttrs,
ViewObject detail,
AttributeDef[] destAttrs,
java.lang.String assocClause)
ApplicationModuleFor example, suppose we have two Views 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 ApplicationModuleviewLinkName - 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 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 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 void remove()
ComponentObjectremove in interface ComponentObjectpublic java.lang.String getDefName()
getDefName in interface ComponentObjectpublic java.lang.String getDefFullName()
getDefFullName in interface ComponentObjectpublic java.lang.String getName()
getName in interface ClientComponentObjectpublic java.lang.String getFullName()
ComponentObjectgetFullName in interface ClientComponentObject
public void fetchAttributeProperties(java.lang.String[] voNames,
java.lang.String[][] attrNames,
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 ApplicationModulepublic java.util.Hashtable getProperties()
getProperties in interface PropertiesgetProperties in class PropertiesHelper
public void setProperty(java.lang.String hintName,
java.lang.Object hintValue)
setProperty in class PropertiesHelperpublic java.lang.Object refreshProperty(java.lang.String hintName)
PropertiesgetProperty.refreshProperty in interface PropertiesrefreshProperty in class PropertiesHelper
public Node writeRowSetXMLWithMap(int rsId,
long options,
com.sun.java.util.collections.HashMap map)
public Node writeRowXMLWithMap(int rsiId,
RowImpl row,
long options,
com.sun.java.util.collections.HashMap map)
public Node writeRowXML(int rsiId,
RowImpl row,
int depthCount,
long options)
public void readRowXML(int rsiId,
RowImpl row,
Element elem,
int depthCount)
public Node writeRowSetXML(int rsId,
int depthCount,
long options)
public void readRowSetXML(int rsId,
Element elem,
int depthCount)
protected RowSet[] getRowSets(int voId)
protected RowSetIterator[] getRowSetIterators(int rsId)
public ApplicationModule createWorkerApplicationModule(java.lang.Object sessionCookie)
createWorkerApplicationModule in interface WSApplicationModuleMarshallerpublic AppModuleRequestHandler getAppModuleRequestHandler()
getAppModuleRequestHandler in interface WSApplicationModuleMarshallerpublic void syncWorkingSet(WSApplicationModuleImpl wsAM)
syncWorkingSet in interface WSApplicationModuleMarshaller
public void finishSyncWorkingSet(WSApplicationModuleImpl wsAM,
boolean isEndOfSvcMsg)
finishSyncWorkingSet in interface WSApplicationModuleMarshaller
public ServiceMessage sendWorkingSetRequests(java.lang.String reqName,
WSApplicationModuleImpl wsAM,
ServiceMessage msg)
sendWorkingSetRequests in interface WSApplicationModuleMarshallerpublic java.lang.String getResponseName()
getResponseName in interface WSApplicationModuleMarshallerpublic int getRemoteObjectId(java.lang.Object obj)
getRemoteObjectId in interface WSApplicationModuleMarshallerpublic void addResponse(java.io.Serializable res)
addResponse in interface WSApplicationModuleMarshallerpublic void setDataModelRefresh(boolean b)
setDataModelRefresh in interface WSApplicationModuleMarshaller
public void setVOProperty(int voId,
java.lang.String hintName,
java.lang.Object hintValue)
public java.lang.Object refreshVOProperty(int voId,
java.lang.String hintName)
public void clearEntityCache(java.lang.String entityName)
TransactionclearEntityCache in interface TransactionentityName - the name of the entity whose cache is to be cleared. If null, caches for all entities are cleared.
public 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.protected void processPiggyback(byte[] pb)
protected com.sun.java.util.collections.ArrayList processServiceMessage(ServiceMessage svcMsg)
public void handleException(java.lang.Exception ex,
boolean lastEntryInPiggyback)
JboExceptionHandlerhandleException in interface JboExceptionHandlerex - an exception.lastEntryInPiggyback - true if ex is the last of a batch of exceptions and warnings generated by a transaction.public void handleWarning(JboWarning warn)
JboExceptionHandlerhandleWarning in interface JboExceptionHandlerwarn - a warning message.public void finishedProcessingPiggyback(java.lang.Exception[] exArr)
finishedProcessingPiggyback in interface JboExceptionHandlerpublic 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)
ApplicationModuleApplicationModule.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 ApplicationModulewarn - warning message.public boolean hasPendingDataPosts()
hasPendingDataPosts in interface WSApplicationModuleMarshallerpublic void setLockingMode(int mode)
TransactionChanging the locking mode affects only subsequent locks. Current locks are not affected.
setLockingMode in interface Transactionmode - one of LOCK_PESSIMISTIC, LOCK_OPTIMISTIC or LOCK_NONE.public int getLockingMode()
Transactionam.getTransaction().getLockingMode();The possible return values are:
If not set by setLockingMode, the locking mode defaults to LOCK_PESSIMISTIC.
getLockingMode in interface Transactionpublic void setBundledExceptionMode(boolean flag)
TransactionsetBundledExceptionMode in interface Transactionpublic final boolean isBundledExceptionMode()
isBundledExceptionMode in interface Transactionpublic void setClearCacheOnCommit(boolean val)
TransactionThe initial value of this flag is retrieved from the Application Module definition of the root Application Module (an XML attribute value named "ClearCacheOnCommit" in the Application Module definition's XML file). If the Application Module definition does not contain the initial value, the default value is false, i.e., the caches are kept after commit.
The user can override the value of this flag for this Transaction by calling this method. Calling this method does not affect the initial value in the Application Module definition.
setClearCacheOnCommit in interface Transactionval - the new value of the clear-cache-on-commit flag. true indicates that the Entity Object caches will be cleared after commit.Transaction.isClearCacheOnCommit()public boolean isClearCacheOnCommit()
TransactionAfter the transaction is committed, the value of this flag is used to determine whether the Entity Object caches are cleared or not. If this flag value is false, the cache contents are kept. In this case, the cache may contain data that is stale in that it does not match the newest data (changes made by another user and committed).
If this flag is true, the caches are cleared after the transaction is committed. When the user brings in data by traversing row collection, the latest data from the database will be brought into Entity caches.
isClearCacheOnCommit in interface TransactionRowSet.executeQuery(), Transaction.setClearCacheOnCommit(boolean val)public void setClearCacheOnRollback(boolean val)
TransactionThe initial value of this flag is retrieved from the Application Module definition of the root Application Module (an XML attribute value named "ClearCacheOnRollback" in the Application Module definition's XML file). If the Application Module definition does not contain the initial value, the default value is true, i.e., the caches are cleared after rollback.
The user can override the value of this flag for this Transaction by calling this method. Calling this method does not affect the initial value in the Application Module definition.
setClearCacheOnRollback in interface Transactionval - the new value of the clear-cache-on-roll-back flag. true indicates that the Entity Object caches will be cleared after rollback, and will be refreshed with new data from the database.Transaction.isClearCacheOnRollback()public boolean isClearCacheOnRollback()
TransactionAfter the transaction is rolled back, the value of this flag is used to determine whether the Entity Object caches are cleared or not. If this flag value is false, the cache contents are kept. In this case, the cache may contain data that is not in sync with database in that uncommitted changes made this by user (before the transaction was rolled back) will be kept.
If this flag is true, the caches are cleared after the transaction is rolled back. When the user brings in data by traversing row collection, the latest data from the database will be brought into Entity caches.
isClearCacheOnRollback in interface TransactionRowSet.executeQuery(), Transaction.setClearCacheOnRollback(boolean val)public void loadPackage(java.lang.String packageName)
SessionloadPackage in interface SessionpackageName - a fully qualified package name.
protected RowSet createDetailRowSet(int rsiId,
java.lang.String rsName,
java.lang.String vlDefName)
protected RowSet[] getDetailRowSets(int rsiId)
protected byte[] getPiggyback()
protected ServiceMessage getServiceMessage()
protected int getViewObjectId(ViewObject vo)
protected java.lang.String toEmpty(java.lang.String s)
public java.lang.Object marshal(java.lang.Object obj)
marshal in interface ObjectMarshallerpublic java.lang.Object marshalForActivate(java.lang.Object obj)
marshalForActivate in interface WSApplicationModuleMarshallerpublic java.lang.Object unMarshal(java.lang.Object obj)
unMarshal in interface ObjectMarshallerpublic boolean isCustomMarshalled(java.lang.Object obj)
isCustomMarshalled in interface ObjectMarshallerpublic java.lang.String getMarshalledTypeName(java.lang.Object obj)
getMarshalledTypeName in interface ObjectMarshallerpublic void processJboException(JboException ex)
public java.lang.Object getDomainValue(java.lang.String className,
java.lang.String[] argTypes,
java.lang.Object[] argValues)
public java.lang.Object invokeDomainMethod(Row row,
java.lang.String attrId,
boolean bringBackDomain,
java.lang.String methodName,
java.lang.String[] clzNames,
java.lang.Object[] args)
public java.lang.Object readBlobStream(int rsId,
int rowId,
java.lang.String attrId,
int offset,
int length)
public java.lang.Object readLob(int rsId,
int rowId,
java.lang.String attrId,
int offset,
int length)
public java.lang.Object readLobInternal(int rsId,
int rowId,
java.lang.String attrId,
int offset,
int length,
boolean isCharStream)
public void writeLob(int rsId,
int rowId,
java.lang.String attrId,
byte[] data)
public void writeClob(int rsId,
int rowId,
java.lang.String attrId,
char[] data)
public void closeLob(int rsId,
int rowId,
java.lang.String attrId,
boolean forInput,
boolean isCharStream)
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 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.util.Hashtable getEnvironment()
SessionPropertyMetadata. Applications should store custom session context in the Session userdata.getEnvironment in interface SessionSession.getUserData()public java.util.Hashtable getUserData()
SessiongetUserData in interface Sessionpublic boolean isRoot()
ApplicationModuleisRoot in interface ApplicationModulepublic void finishedPiggybacking()
finishedPiggybacking in interface ObjectMarshallerpublic ObjectMarshaller getObjectMarshaller()
getObjectMarshaller in interface WSApplicationModuleMarshaller
public java.lang.Object createRef(java.lang.String structName,
byte[] data)
TransactioncreateRef in interface Transactionpublic int getMaxFetchSize(int voId)
public void setMaxFetchSize(int voId,
int max)
public int getIterMode(int rsiId)
public void setIterMode(int rsiId,
int mode)
public void setRowValidation(int rsiId,
boolean flag)
public boolean isRowValidation(int rsiId)
public java.lang.String getQueryOptimizerHint(int voId)
public void setQueryOptimizerHint(int voId,
java.lang.String hint)
public int getRemoteId()
getRemoteId in interface ClientComponentObjectpublic byte getROTEntryType()
getROTEntryType in interface ClientComponentObjectpublic void addTransactionStateListener(TransactionStateListener target)
addTransactionStateListener in interface Transactionpublic void removeTransactionStateListener(TransactionStateListener target)
removeTransactionStateListener in interface Transactionpublic void addViewClearCacheListener(ViewClearCacheListener target)
addViewClearCacheListener in interface Transactionpublic void removeViewClearCacheListener(ViewClearCacheListener target)
removeViewClearCacheListener in interface Transactionpublic LocaleContext getLocaleContext()
SessiongetLocaleContext in interface Sessionpublic static void setIgnoreCustomProxies(boolean ignore)
public static boolean isIgnoreCustomProxies()
protected ResponseValues getAMFullRef(ResponseValues handle)
protected ApplicationModuleImpl createProxyApplicationModule(ResponseValues handle)
protected java.lang.Object readMethodResponse(java.lang.String methodName,
ServiceMessage sm)
public DataCollector findOrCreateDataCollector(java.lang.Object obj)
findOrCreateDataCollector in interface ObjectMarshallerpublic ResponseValues riGetApplicationModuleInfo()
riGetApplicationModuleInfo in interface AppModuleRequestHandlerpublic void riRemove()
riRemove in interface AppModuleRequestHandlerpublic ServiceMessage doMessage(ServiceMessage svcMsg)
doMessage in interface AppModuleRequestHandler
public java.lang.Object riInvokeExportedMethod(java.lang.Object target,
java.lang.String methodName,
java.lang.String[] argTypes,
java.lang.Object[] args)
public boolean isMarshalledLocally()
public void detach()
detach in interface WSApplicationModuleMarshallerpublic void afterActivation(int activationMode)
afterActivation in interface WSApplicationModuleMarshallerpublic boolean isDetached()
public 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()
SessionisClient in interface Session
public static ApplicationModuleImpl createInstance(ResponseValues amInfo)
throws ApplicationModuleCreateException
ApplicationModuleCreateExceptionpublic void bindToWorkingSet(WSApplicationModuleImpl wsAM)
bindToWorkingSet in interface WSApplicationModuleMarshallerpublic WSApplicationModuleImpl getCurrentWorkingSet()
getCurrentWorkingSet in interface WSApplicationModuleMarshallerpublic java.lang.String getClientProxyInterfaceName()
getClientProxyInterfaceName in interface WSApplicationModuleMarshaller
public java.lang.Object invokeMethod(java.lang.Object target,
java.lang.String methodName,
java.lang.String[] argTypeNames,
java.lang.Object[] args)
invokeMethod in interface WSApplicationModuleMarshallerpublic void syncMarshaller(ServiceMessage svcMsg)
syncMarshaller in interface WSApplicationModuleMarshallerpublic int getReleaseLevel()
ApplicationModuleFor example, the ADF/BC DataControl will invoke getReleaseLevel() to determine if this ApplicationModule may be released to the ApplicationPool in SHARED_MANAGED_RELEASE_MODE or if the ApplicationModule may be released in RESERVED_UNMANAGED_RELEASE_MODE.
Two release levels are currently supported:
RELEASE_LEVEL_MANAGED Default. Indicates that the ApplicationModule 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 ApplicationModule may not be managed by the BC4J state management service. ApplicationModules 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 ApplicationModules 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 ApplicationModule{@link #getReleaseLevel()}public void resetMarshaller()
resetMarshaller in interface ObjectMarshaller
|
Oracle ADF Model and Business Components API Reference 10.1.2 B14022-02 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
Copyright © 1997, 2005, Oracle. All rights reserved.