GlassFish Server Open Source Edition 3.1 - Metro

Introduction

There are 3 main focus areas for the Project Metro in scope of GF 3.1:

  • High availability
    • focused on RM and SC session failover
    • optional: stateful WS failover
  • Architectural cleanups
    • unified configuration
    • proper split into modules/mavenization
    • other cleanups and updates (removing GFv2 dependencies, dropping support for transactional WS, compiling against Java 6, etc.)
  • Interoperability (WS-I, .NET 4.0, other Oracle stacks)

Scope

Feature ID Priority Description Eng Response Owner(s) Estimate (Man Days) Source of Requirement Status / Comments
METRO-001 P1 Policy alternatives in security Yes Kumar Jayanti 20 Interoperability with OWSM  
METRO-002 P2 Metro HA (RM and SC session failover) Yes Marek Potociar 50 Customers, consistency with other GF features This feature depends on the new GF HA API
METRO-003 P2 Compliance: WS-I BP 2.0, RSP 1.0 and BSP 1.1 Yes Jitendra Kotamraju, Kumar Jayanti, Marek Potociar 40 Customers, General interoperability DONE
METRO-004 P3 Mavenization/modularization Yes Marek Potociar 50 Maven users, Internal  
METRO-005 P3 Unified configuration Yes Fabian Ritzmann 50 User requests, WLS team, Internal  
METRO-006 P3 Support for Error Handling in WS-Trust spec   Jiandong Guo 10    
METRO-007 P3 Time skew for trust and SC token lifetime   Jiandong Guo 10    
METRO-008 P2 Servlet 3.0 Async support Yes Jitu 30 JAX-WS community, internal Also, required to evaluate asynchrous SEI proposals (may come in future spec)
METRO-009 P3 Test harness support for GlassFish v3.x Yes Jitu 20 Internal DONE
METRO-010 P3 wsimport -clientjar option Yes Jitu 30 JAX-WS community DONE
METRO-011 P2 Bug/Performance fixes in JAX-WS RI Yes Ryan Eberhard      
METRO-012 P2 DTrace probes         Cover Java EE API
METRO-013 P2 Updating WS-TX implementation Yes Marek Potociar        
109-01 P2 WLS deployment descriptor support Yes Rama   3.1 Implement basic dd. Require deployment team to provide priority
109-02 P3 WS support in embedded GF Yes Bhakti 30 3.1 Modify tests by M3 and fix all issues by M5
109-03 P3 Support webservices using embedded EJB 3.1 apis Yes Bhakti 20 3.1 Nice to have feature will be implemented if time permits
109-04 P1 CTS failures Yes Bhakti and Rama Ongoing 3.1  
109-05 P1 Licensee challenges, bug fixes Yes Bhakti,Rama,Jitu Ongoing 3.1  

Feature Overview

Policy Alternatives

The goal is to support multiple alternatives for authentication (username password or SAML token, etc.).
We see less demand for alternatives outside of the security domain, so the scope of this feature is to support alternatives just for security assertions/authentication mechanisms.

Metro High Availability Support

Metro WS stack provides certain stateful features, such as secured conversation, reliable messaging or stateful web services. To support the stateful features in a clustered environment we need to identify all the state information that needs to be saved and replicated and update Metro implementation to support the state saving as well as state recovery from a replica in case of a node failure.

NOTE: Our focus is primarily on HA support in the areas of SC and RM. Optionally, we may be supporting HA for stateful web services. We do NOT plan to support HA for transactional WS as the feature, in its current implementation, is already proposed for dropping completely from the Metro stack.

WS-I Compliance

In addition to standardized WS-* specification, WS-I organization is chartered to define a set of interoperability profiles that attempt to resolve ambiguities of the original WS-* specifications to improve interoperability. The goal is to support these profiles in Metro. We need to develop a sets of predefined test scenarios for each supported WS-I profile and validate the compliance by successfully passing these test cases against our own implementation as well as against implementations of other vendors (MS, IBM). The actual test scenarios in RSP and BSP domains will be implemented by external contractors.

Mavenization

Currently, the Metro build process is ant-based and is tightly integrated into the build of WSIT/Tango. As a project with a significant number of dependencies, dependency management becomes more and more challenging. At the same time, Metro needs to provide maven artifacts to correctly integrate with GF.

In this effort we aim to decouple Metro and WSIT builds and switch the build system from ANT to MAVEN to better align our build system to the one used by GFv3. As a result, we plan to achieve a transparent and simplified dependency management, improved modularization of the code, natural identification of inter-module dependencies and (internal) APIs as well as reduced cost of build and RE maintenance.

Unified Configuration

As part of this feature we plan to introduce a new single configuration file for all domains and all configuration options of the Metro stack as opposed to current approach that may require users to use multiple configuration files to configure a single web service. The new configuration file format should also be better aligned with the standard webservices.xml format as defined in JSR109. As part of the feature we plan to design mechanisms that would allow us to provide unified support for other deployment descriptors, with an initial focus on the support for the WebLogic Web Services deployment descriptor.

Support for Error Handling in WS-Trust

Standard error codes are introduced in WS-Trust/SC spec. We will use some of them as thrown by the server to enable automatic session renew to avoid that the user transaction being interrupted.

Time Skew for WS-Trust and WS-SecureConversation Token Lifetime

Issued tokens and security contexts are only valid in a period of time. We will add support for configuring skew of time for the difference allowed for the system clocks of the sender and recipient. Used in case that the clocks may not be in sync.

Servlet 3.0 Async Support

Servlet 3.0 has asynchronous support and it can be used to process a HTTP request using multiple threads. Servlet 3.0 + AsyncProvider will provide a scalable solution on the server side. This can also be used to evaluate SEI async support proposal 787. This doesn't affect servlet 2.x deployments.

Test harness support for GlassFish v3.x

JAX-WS unit tets can be run in multiple enviornments: Tomcat, GlassFish v2, in-vm, lwshs, JaxwsInJDK. Test harness will be extended so that JAX-WS/Metro unit tests can also be run on GlassFish v3.x.

wsimport -clientjar option

Client side programming model involves creating a Service object and that in turn fetches WSDL during service creation. There are few solutions to avoid this(using catalog), but they are not complete. The proposed switch gets the WSDL/schemas, fixes the import locations, jars all the generated artifacts. Generated service is also modified to refer to the WSDL in the jar file.

Design Document

Milestone Schedule

Item # Date/Milestone Feature-ID Description QA/Docs Handover? Status / Comments
  MS1 (5/24) METRO-003 complete the feature Yes DONE
  MS2 (6/21) METRO-007 complete the feature Yes DONE
  MS3 (7/19) METRO-008 complete the feature Yes DONE
  MS3 (7/19) METRO-009 complete the feature No DONE
  MS3(7/19) 109-02 complete modifying the tests to run in embedded Yes DONE
  MS4 (8/16) METRO-001 complete the feature Yes  
  MS4 (8/16) METRO-002 complete the feature Yes  
  MS4 (8/16) METRO-006 complete the feature Yes  
  MS4 (8/16) METRO-010 complete the feature Yes DONE
  MS5 (9/13) METRO-004 complete the feature Yes  
  MS5 (9/13) METRO-005 complete the feature Yes  
  MS5 (9/13) METRO-011 complete the feature Yes  
  MS5 (9/13) METRO-013 complete the feature Yes  
  MS5 (9/13) 109-02 fix all issues Yes  
  MS5 (9/13) 109-01 complete the feature Yes  

Task List

Task Target Milestone Start End Date Owner(s) Feature ID - Task ID Status / Comments
Define and deliver to GF team state saving API requirements MS2 5/5 5/14 Marek METRO-002-01 DONE
Identify and collect all Metro state information that needs to be saved MS2 5/10 5/28 Marek, Jiandong, (Jitu) METRO-002-02 DONE
Define backing stores - scopes, names, data types, storing strategies MS2 5/10 5/28 Marek, Jiandong, (Jitu) METRO-002-03 DONE
Design and implement common API & runtime support for Metro HA MS4 7/19 7/30 Marek, Jitu METRO-002-04 DONE
Implement RM failover MS4 7/19 8/16 Marek METRO-002-05 DONE
Implement SC failover MS4 7/19 8/16 Jiandong METRO-002-06  
Implement NonceManager failover MS4 7/19 8/16 Kumar METRO-002-07 DONE
Implement & run BP test scenarios, fix issues MS1     Jitu, Rama METRO-003-01 DONE
Provide support to external contractors with RSP, BSP test scenarios development, fix issues MS1     Jiandong, Kumar, Marek, Suresh METRO-003-02 DONE
Create general migration scripts infrastructure MS1     Marek METRO-004-01 DONE
Define initial WSIT modules MS1     Marek METRO-004-02 DONE
Refactor and resolve WSIT intermodule dependencies MS2   5/6 Marek METRO-004-03 DONE
Migrate WSIT sources and unit tests MS2   5/6 Marek METRO-004-04 DONE
Migrate standard Metro bundle ANT scripts MS5 8/19 9/13 Marek METRO-004-05 In Progress
Migrate OSGi Metro bundle ANT scripts MS5 8/19 9/13 Marek METRO-004-06 In Progress
Migrate samples MS5 8/19 9/13 Marek METRO-004-07  
Create all infrastructure&logic that reads metro-webservices.xml and translates the config into features MS4 5/10 8/27 Fabian METRO-005-01 In Progress
Migrate metro.xml into metro-webservices.xml MS5 8/16 8/31 Fabian METRO-005-02  
Migrate WSIT config files into metro-webservices.xml MS5 8/26 9/16 Fabian METRO-005-03  
OPTIONAL: Migrate JAXWS RI config files into metro-webservices.xml MS5 9/16 end Fabian METRO-005-04  
Analysis standard and custom exception handling MS4 7/14 7/16 Jiandong METRO-006-01  
Support for automatic renew/reissue of security context with standard error code MS4 8/2 8/6 Jiandong METRO-006-02  
Writing dev test case MS3 8/9 8/13 Jiandong METRO-006-03  
Analysis of use case MS1 5/20 5/21 Jiandong METRO-007-01 DONE
Support for issued token lifetime MS2 5/26 5/28 Jiandong METRO-007-02 Done
Support for security context lifetime MS2 6/7 6/9 Jiandong METRO-007-03 Done
Writing dev test case MS2 6/10 6/11 Jiandong METRO-007-04 Done
Studying Servlet 3.0 async API MS2 5/24 6/21 Rama METRO-008-01 DONE
Writing Servlet 3.0 async transport MS3 6/21 7/19 Rama METRO-008-02 DONE
Writing Servlet 3.0 async transport testcases MS3 6/21 7/19 Rama METRO-008-03  
Studying v3.x REST API MS2 5/24 6/21 Jitu METRO-009-01 DONE
Writing Test harness support for v3.x MS3 6/21 7/19 Jitu METRO-009-02 DONE
Writing wsimport -clientjar MS4 7/19 8/16 Rama METRO-010-01 DONE
Writing -clientjar testcases MS5 8/16 9/01 Rama METRO-010-02 DONE
Modifying tests to support webservices in embedded GF MS3 6/21 7/19 Bhakti 109-02  
Fixing issues to support webservices in embedded GF MS5 8/16 9/01 Bhakti 109-02  
Supporting WLS descriptors MS5 6/1 9/01 Rama 109-01  
Bug/Performance fixes MS5   9/13 Ryan METRO-011-01  
Read through WS-TX functional spec MS3 6/21 6/23 Marek METRO-013-01 DONE
Investigate WS-TX system service bootstrapping in GF 3.1 MS3 6/24 7/2 Marek METRO-013-02 DONE
Investigate WS-TX system service hiding in GF 3.1 MS3 6/24 7/2 Marek METRO-013-03 DONE
Implement WS-TX system service boodstrapping and hiding support MS5 8/19 9/13 Marek METRO-013-04  
Implement support for WS-TX configuration in Metro MS3 7/12 7/16 Marek METRO-013-05 DONE
Port the core WS-TX implementation MS5 7/1 9/13 Paul METRO-013-06 In Progress

Dev Tests

  • Coming soon

References

Email Alias