Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/DesignDocs/248748
Contents
- 1 Design Specification: WebLogic 10.3 JMX MBean Support
- 1.1 Document History
- 1.2 Project overview
- 1.3 Requirements
- 1.4 Design / Functionality
- 1.4.1 Design Issue 1: getModuleName() Application Name from WebLogic
- 1.4.1.1 Alternative 1: Pass module name via weblogic.moduleName property
- 1.4.1.2 Pros
- 1.4.1.3 Cons
- 1.4.1.4 Alternative 2: Pass module name via WebLogic specific container context API
- 1.4.1.5 Pros
- 1.4.1.6 Cons
- 1.4.1.7 Alternative 3: Pass module name via Reflective call to the WebLogic context
- 1.4.1.8 Pros
- 1.4.1.9 Cons
- 1.4.1.10 Decision
- 1.4.2 Design Issue 2: rename all fuctions in standard MBean format get/setUpperCase()
- 1.4.1 Design Issue 1: getModuleName() Application Name from WebLogic
- 1.5 API
- 1.6 UML Class Diagram
- 1.7 GUI
- 1.8 Open Issues
Design Specification: WebLogic 10.3 JMX MBean Support
JMX MBean Tutorial for WebLogic
JPA EAR WebLogic 10.3 J2EE application and J2SE table populator Eclipse project zip files
Document History
Date | Author | Version Description & Notes |
---|---|---|
2008-09-26 | Michael O | 0.1 Starting Draft for WebLogic 10.3 version of ER 248748 |
2008-09-23 | Michael O | 0.2 Phase 1 ready for review - ClassSummaryDetailsArray functional ER 248748 |
Project overview
We require specific attributes available outside of the generic MBeans in http://bugs.eclipse.org/235168 ER 235168]. This enhancement request has 2 possible phases - we are only working on phase 1 at this time - port OC4J functions to WebLogic.
- 1) Add functions originally only available on the OC4J server platform
- 2) Add functions new to WebLogic 10
Requirements
- Add the following functions to a WebLogic version of our RuntimeServices Mbean - to be reviewed.
- We want to cross-reference this new list with the exclusion list in the 1.0 implementation.
- Some of the attributes prefixed with print have generic analogs using get already.
- Some of the attributes contain an internal current keyword that is removed.
- Some of these public functions may not make it to the public interface
Interface Addition Candidates
- public String getSessionName()
- public String getSessionType()
- public ArrayList <ClassSummaryDetail> getClassSummaryDetailsArray()
- public Object[][] getClassSummaryDetails()
- public String getModuleName()
- public String getDeployedEclipseLinkLogLevel()
- public String getDeployedEclipseLogLevel(String category)
- public String getCurrentEclipseLogLevel()
- public String getCurrentEclipseLogLevel(String category)
- public synchronized void setCurrentEclipseLogLevel(String newLevel)
- public synchronized String getProfilingType()
- public synchronized void setProfilingType(String profileType)
- public void setUsesEclipseProfiling()
- public void setUsesDMSProfiling() - removed
- public Boolean getusesEclipseProfiling() - are we still removing this - it currently exists?
- public Boolean getUsesDMSProfiling() - removed
- public void setUseNoProfiling()
- public synchronized void setshouldLogPerformanceProfiler(Boolean shouldLogPerformanceProfiler) - removed
- public Boolean getshouldLogPerformanceProfiler() - removed
- public Boolean getShouldBindAllParameters()
- public Integer getStringBindingSize()
- public Long getTimeConnectionEstablished()
- public Boolean getUsesJDBCBatchWriting()
- public Boolean getUsesByteArrayBinding()
- public Boolean getUsesNativeSQL()
- public Boolean getUsesStreamsForBinding()
- public Boolean getShouldCacheAllStatements()
- public Integer getStatementCacheSize()
- public synchronized void clearStatementCache()
- public Integer getSequencePreallocationSize()
- public void printAvailableConnectionPools()
- public Integer getMaxSizeForPool(String poolName)
- public Integer getMinSizeForPool(String poolName)
- public void printClassesInSession()
- public void printObjectsInIdentityMap(String className) throws ClassNotFoundException
- public void printAllIdentityMapTypes()
- public void printObjectsInIdentityMaps()
- public Integer getNumberOfObjectsInAllIdentityMaps()
- public Integer getNumberOfPersistentClasses()
- public void printIdentityMapLocks()
- public void printIdentityMapLocks(String registeredClassName)
- public void printProfileSummary()
- public void printProfileSummaryByClass()
- public void printProfileSummaryByQuery()
- public String getLogType()
- public String getDatabasePlatform()
- public synchronized String getConnectionPoolType()
- public synchronized String getDriver()
- public String getLogFilename()
- public synchronized String getdeployedProfileWeight() - removed - superclassed by getProfileWeight()
- public synchronized String getcurrentProfileWeight() - removed - superclassed by getProfileWeight()
- public synchronized void setcurrentProfileWeight(String weight) - removed - superclassed by getProfileWeight()
- public synchronized void initializeAllIdentityMaps()
- public synchronized void initializeIdentityMaps(String[] classNames) throws
ClassNotFoundException
- public synchronized void initializeIdentityMap(String className) throws
ClassNotFoundException
- public synchronized void invalidateAllIdentityMaps() {
- public synchronized void invalidateIdentityMaps(String[] classNamesParam, Boolean
recurse) throws ClassNotFoundException {
- public synchronized void invalidateIdentityMap(String className) throws
ClassNotFoundException
- public synchronized void invalidateIdentityMap(String className, Boolean recurse) throws ClassNotFoundException
- public Boolean getcacheSynchEnabled() - removed
- public Boolean getcacheSynchAsynchronous() - removed
Design / Functionality
Design Issue 1: getModuleName() Application Name from WebLogic
The getModuleName() function is required to return the application name of the owner of the current session. This function name will be determined from either the EJB, War or MDB application. There are currently 3 methods we can use to determine this function name.
Alternative 1: Pass module name via weblogic.moduleName property
Pros
- No introduction of a weblogic.jar dependency in EclipseLink
Cons
- Each application must supply the moduleName in persistence.xml or sessions.xml
Alternative 2: Pass module name via WebLogic specific container context API
Pros
Cons
- Introduction of a dependency on weblogic.jar from EclipseLink
Alternative 3: Pass module name via Reflective call to the WebLogic context
Pros
- No introduction of a weblogic.jar dependency in EclipseLink
Cons
Decision
Alternative 2 is unacceptable for now.
Design Issue 2: rename all fuctions in standard MBean format get/setUpperCase()
All functions must be in the format get/setUppercase() not get/setlowerCase() - some of the functions ported from OC4J are not in the correct format, therefore the interface and implementation will be modified to standard MBean naming format.
API
No new jar dependencies.
The JMX API is included in J2SE 1.5 (new to J2SE 1.5 from J2EE 1.4) - the interfaces from this JMX API is used even though the implementation uses weblogic specific weblogic.management API during runtime.
There is a JMX server now in the 1.5 SE JRE
JMX used to be in J2EE 1.4
UML Class Diagram
GUI
<JAVA_HOME>/bin/JConsole client
You should see the following single EclipseLink MBean off the root of the JNDI tree. In this example there is one EAR deployed to WebLogic - with its own set of MBeans based on the login session.
Open Issues
Issue # | Owner | Description / Notes |
---|---|---|
I1 | mobrien | open: 248748 Add WebLogic specific getModuleName() Function |