GlassFish Server Open Source Edition 3.1 - RESTful Administration API

Introduction

The REST Administration API will be the primary API for administrative interactions with the server.

Scope

Feature ID Priority Description Eng Response Owner(s) Estimate (Man Days) Source of Requirement Status / Comments
REST-001 P1 Provide necessary APIs for centralized cluster management and monitoring Yes Jason, Ludo, Mitesh 35 3.1 Primary Focus Admin console will rely on RESTful API
REST-002 P1 Provide necessary APIs to provide support for JMS CLI commands Yes Jason, Ludo, Mitesh 20 Feature parity JMS Broker is no longer standalone, so admin support must be added to GlassFish. Additionally, the console currently supports the operations provided by the CLI, though uses AMX/JMX to effect them. With the move from AMX to REST, this functionality must be provided to maintain funcationality
REST-003 P3 Create and expose REST endpoints dynamically based on the ConfigBeans loaded at runtime Yes Jason, Ludo, Mitesh 40 Server pluggability/modularity Three options: ASM, JDK 6 Java compiler API, internal Jersey APIs
REST-004 P3 Provide means for generating an authentication token/session Yes Jason 10 Admin Console security requirements An in-container solution exists, so this is lower priority. A long-term goal of the Console is to run out-of-process
REST-005 P3 specify the returned type in url extension (.xml, .json) Yes Ludo 4 ease of use and testing from the browser as well.  

Feature Overview

The REST Admin API will be the API that clients, most notably the Admin Console, will use to interact with the server. Every operation that is supported via the CLI or through the now deprecated AMX interface must be supported via REST.

The major push in 3.1 is clustering, so support for this new capability will be the top priority for the API. Additionally, the very prominent Admin Console will be the primary consumer initially, so great care will be given to insure that the Console works as expected once the transition is made to use this API.

Design Document

  • Link to one-pager

Milestone Schedule

Item # Date/Milestone Feature-ID Description QA/Docs Handover? Status / Comments
01. MS4 REST-001 Cluster management Yes REST support for clustering depends on the implementation of the clustering CLI commands see (Clustering Project )
02. MS2 REST-002 JMS support Yes  
03. MS4 REST-003 Expose REST endpoints dynamically (work starts in MS1) Yes  
04. MS3 REST-004 Create session token mechanism Yes  

Task List

Task Target Milestone Start End Date Owner(s) Feature ID Status / Comments
Make the naming and formatting of param names/keys consistent (issue ) M1-M2 2010-05-04 2010-06-21 Ludo REST-001  
Default to CamelCased key names (issue ) M2 2010-05-04 2010-06-21 Ludo REST-001 The Admin Console will hard-code mappings for now so that a PoC can be created
Refactor generated and supporting code (issue ) M3 2010-05-04 2010-07-19 Ludo, Mitesh REST-002 Refactoring should simplify the code base, making comprehension and maintenance (and dynamicity) easier in the long term
Help develop Console REST-based prototype (issue ) M1 2010-05-10 2010-05-24 Jason   This task has been completed and the console team is pressing forward with its migration
Dynamic REST Resources (issue ) M4 2010-05-04 2010-08-16 team ALL Investigate options (jersey, ASM, JDK) in M1, M2, implementation in M4
Develop more dev tests (issue ) M4 2010-05-04 2010-08-16 Jason ALL Will have necessary dev tests during MS2, MS3 for feature hand over
Create session authentication token mechanism (issue ) M3 2010-05-10 2010-06-21 Jason REST-004  
Returned type in URL (issue ) M3 2010-06-10 2010-07-19 Ludo REST-005 This feature has been implemented.

Dev Tests

The dev tests for the REST module reside in the standard Maven location under src/test in v3/admin/rest. The tests require a running GlassFish instance, though, so the Maven Surefire plugin has been disabled in the test phase of the Maven lifecycle. Execution of the tests, then, will be skipped during the normal build/package/install process, and must be run explicitly using the 'test' profile via

mvn -Prest-devtest test

A Hudson job will be configured to run these tests automatically.

References

Email Alias