Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/DesignDocs/316513"

m (Analysis)
m (GlassFish JMX Integration)
Line 89: Line 89:
 
===WebSphere JMX Integration===
 
===WebSphere JMX Integration===
 
===GlassFish JMX Integration===
 
===GlassFish JMX Integration===
 +
*No work scheduled at this point of 20100622
  
 
==Design==
 
==Design==

Revision as of 15:17, 22 June 2010

Design Specification: Extend WebLogic 10.3 JMX MBean support to JBoss 5.1.0 and WebSphere 7 as generic API

Work in Queue

Completed Work

JPA EAR, EJB, WAR and SE (DDL Generation) WebLogic 10.3 J2EE application Eclipse projects in SVN - use to perform JMX MBean registration

Document History

Date Author Version Description & Notes
2010-06-10 Michael O'Brien 0.1 Starting Draft for Generic JMX MBean support to extend WebLogic 10.3 support to JBoss 5.1.0 EAP and WebSphere 7 for ER 316513
2010-06-22 Michael O'Brien 0.2 Develop/Document JBoss 5.1.0 EAP JMX registration code ER 316511

Project overview

Analysis

DI 1: Architecture for JMX Implementors

Option 1: Move everything generic up to ServerPlatformBase

  • This issue with this is that we will only have 3 of the 6 platforms JMX enabled - by moving JMX code too high up in the class hierarchy we introduce functionality that OC4J, SAP and SUNAS support but not within the current EclipseLink version.

Option 2: Create a new JMXServer Policy or Interface

Decision DI 1:

  • Currently option 2 - new JMX Policy

DI 2: Enabling JMX MBeans

  • The following properties will continue to enable registration for any capable application server.
  • No code changes required at this point.

WebLogic

rem set JAVA_OPTIONS=%JAVA_OPTIONS% -Declipselink.register.dev.mbean=true
rem set JAVA_OPTIONS=%JAVA_OPTIONS% -Declipselink.register.run.mbean=true

JBoss

  • jboss-eap-5.0/jboss/as/bin/run.bat:83
// after
set JAVA_OPTS=%JAVA_OPTS% "-Djava.library.path=%JBOSS_NATIVE_HOME%;%PATH%;%SYSTEMROOT%"
// add
set JAVA_OPTS=%JAVA_OPTS% -Declipselink.register.run.mbean=true

WebSphere

DI 3: MBean Registration and Deregistration

  • These steps are mostly the same for all servers
    • 1) Get JNDI context to lookup an 'MBeanServer
    • 2) Create a new ObjectName for the MBean
    • 3) Create a server specific MBean
    • 4) call registerMBean using the MBean and ObjectName
    • 5) discard the ObjectInstance return of registerMBean but cache the MBean*RuntimeServices MBean

WebLogic JMX Integration

JBoss JMX Integration

  • 20100622: This section details the JMX registration code for EclipseLink MBeans on JBoss 5.1.0 EAP
  • See jar signing and JMX prepending issues solved in bug# 305331 specific to the JBoss EAP edition that need to be covered off.

Modules

NEW: core:services.mbean.jboss.MBeanJBossRuntimeServices.java
NEW: core:services.mbean.jboss.MBeanJBossRuntimeServicesMBean.java
NEW: core:services.mbean.jboss.JBossRuntimeServices.java
MOD: core:services.mbean.weblogic.ClassSummaryDetail.java moved up to parent package
MOD: core:platform.server.jboss.JBossPlatform.java
MOD: core:services.mbean.weblogic.WebLogic_10_platform.java
  • Move the now generic system properties up to ServerPlatformBase
    /** This System property "eclipselink.register.dev.mbean" when set to true will enable registration/unregistration of the DevelopmentServices MBean */
    public static final String JMX_REGISTER_DEV_MBEAN_PROPERTY = "eclipselink.register.dev.mbean";
    /** This System property "eclipselink.register.run.mbean" when set to true will enable registration/unregistration of the RuntimeServices MBean */    
    public static final String JMX_REGISTER_RUN_MBEAN_PROPERTY = "eclipselink.register.run.mbean";

WebSphere JMX Integration

GlassFish JMX Integration

  • No work scheduled at this point of 20100622

Design

Design Issue NN:

Analysis NN:

Solution NN:

Implementation

Testing

JBoss Specific EAR Configuration

  • The following scenario specifies @Remote on the remote interface and @Stateless on the stateless session bean.
    • This results in the following JNDI name emitted by the server on EAR deploy
@Stateless(name="ApplicationService", mappedName="ApplicationService")
@Remote(ApplicationServiceRemote.class)
public class ApplicationService implements ApplicationServiceRemote  {
	@PersistenceContext(unitName="example", type=PersistenceContextType.TRANSACTION)	
	private EntityManager entityManager;
...
}
 
public class FrontController extends HttpServlet implements Servlet {
    public static final String APPLICATION_SERVICE_JNDI_NAME 
      = "org.eclipse.persistence.example.jpa.server.jboss.EnterpriseEAR/ApplicationService/remote-org.eclipse.persistence.example.jpa.server.business.ApplicationServiceRemote";    
 
    /**
     * Get the SSB ApplicationService bean - using a JNDI context lookup (no EJB injection was used on this servlet)
     * @param viaJNDILookup
     * @return
     */
    public ApplicationServiceRemote getApplicationService(boolean viaJNDILookup) {
        if(null == applicationService && viaJNDILookup) {
            try {
                Hashtable<String, String> env = new Hashtable<String, String>();      
                env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");     
                env.put(Context.PROVIDER_URL, "localhost");      
                env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces" );     
                InitialContext ctx = new InitialContext(env);
                System.out.println("FrontController.getApplicationService() JNDI lookup of " + APPLICATION_SERVICE_JNDI_NAME);
                return (ApplicationServiceRemote) ctx.lookup(APPLICATION_SERVICE_JNDI_NAME);            
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("Exception looking up session bean: ", e);
            }
        } else {
            return applicationService;
        }
    }
...
}

Testing Data Model

Open Issues

References

Back to the top