GlassFish Server Open Source Edition 3.1 - NetBeans Integration One Pager

1. Introduction

1.1. Project/Component Working Name:

NetBeans Plugin for GlassFish Server Open Source Edition 3.1

1.2. Name(s) and e-mail address of Document Author(s)/Supplier:

Vince Kraemer: vince.kraemer@oracle.com

1.3. Date of This Document:

05/21/10

2. Project Summary

2.1. Project Description:

Extend the plugin that integrates Glassfish Server 3 to work well with GlassFish Server 3.1

2.2. Risks and Assumptions:

Assumptions

  1. Developers do not want to interact with the clustering capabilities of GlassFish Server 3.1 from inside the IDE.
  2. Developers do want to interact with GlassFish Server 3.1 'on par' with their experience interacting GlassFish Server 3.0.
  3. Developers do want the capabilities of the server integration to expand.
  4. Developers do want NetBeans 6.10 to include GlassFish Server 3.1 in its 'Java' and 'All' bundle.

Risks

  1. Schedule alignment
    1. NetBeans 6.10 ships significantly later than GlassFish Server 3.1.
      We can release a plugin for NetBeans 6.9
    2. GlassFish Server 3.1 ships significantly later than NetBeans 6.10.
      We will need to turn off access to GlassFish Server 3.1 by default and create an enabler, to allow folks to experiment with 3.1 in NetBeans 6.10.
  2. Implementation issues in pivotal server features

3. Problem Summary

3.1. Problem Area:

Some of the features exposed by the existing NetBeans/GlassFish integration are changing in the GlassFish Server 3.1 release.

  1. The name of the server.

There are some new features that are being added to GlassFish Server 3.1 that would be useful to developers.

  1. New deployment descriptors
    1. rebranding
    2. extensions
  2. WebLogic deployment descriptor support
  3. Ability to access log messages from remote servers
  4. Application scoped resources
    1. integrated with deployment
  5. Application versioning

There are some features of GlassFish Server 3.0 (and 3.1) that would be useful to developers that were not exposed in previous integrations.

  1. Ability to perform a remote restart

Some of the 'interfaces' that the IDE leverages to provide a Java EE development environment will change in the GlassFish Server 3.1 release.

  1. Packaging of things like Jersey, Metro and the like. These are used by other components of the IDE.

3.2. Justification:

The NetBeans/Glassfish integration has a number of features that are impacted directly or indirectly by the changes being made in GlassFish Server 3.1. As 3.1 matures the number
of changes will cause bugs (current integration features to actually break) and gaps (integration features that are noticably incomplete).

4. Technical Description:

4.1. Details:

The IDE integration is written as collection of NetBeans Modules. These modules implement a number of services that the IDE then uses to interact with the server.

When a user registered a GlassFish Server domain, the IDE uses the install and domain directory information to complete a number of data objects. There is also a fair bit of knowledge
of the server architecture and packaging embedded in the plugin modules. This allows the IDE to interact with the server (via methods like the http 'adapter') without being tied directly to the
built bits of the server (like a jar dependency).

4.2. Bug/RFE Number(s):

The features and dependencies for this are being tracked in GlassFish issue tracker for transparency. The primary issue is https://github.com/javaee/glassfish/issues/11921.

To see a more complete picture of the Bugs/RFEs for the project, look at the dependency tree for issue 11921

4.3. In Scope:

The plugin will allow the user to interact with versioned applications in the Servers explorer, which allows users to see deployed applications and manipulate them.

The plugin will support the development of versioned applications, if the feature is added to the feature set of NetBeans projects for Java EE modules and applications. The amount of work that is required for this feature to be added to those modules, which are 'owned' by other teams with other priorities, makes this unlikely.

The plugin will include the ability to create an empty WebLogic descriptor in projects that target GlassFish 3.1. The plugin also registers any of the WebLogic deployment descriptor schemas and dtds that ship with GlassFish 3.1, to support the xml editing features (like code completion) that are part of the NetBeans infrastructure.

The plugin will support the deployment of OSGi bundles, if the feature is added to the OSGi bundle development workflow supported by the OSGi support in NetBeans. The amount of work that is required for this feature to be added to that module, which is 'owned' by other teams with other priorities, makes this unlikely.

The plugin will support the development of applications that target 'Embedded GlassFish', if the feature is added to the feature set of NetBeans projects for Java EE modules and applications. The amount of work that is required for this feature to be added to those modules, which are 'owned' by other teams with other priorities, makes this unlikely.

4.4. Out of Scope:

The NetBeans integration plugin for GlassFish Server 3.1 will not expose the developer to clusters and stand-alone instances.
The IDE is not targeted as an administrative tool. There are also aspects of a cluster or stand-alone instance that would require
changes that would flow beyond the scope of the 'plugin' and into code that is owned by other teams.

The plugin will not include a graphical editor for the WebLogic deployment descriptors. Those editors may be part of the WebLogic plugin, though.

The content of the various bundles is outside the scope of this one-pager and beyond the scope of this team. We are advocating that the 'Ruby' bundle not include GlassFish Server Open Source Edition 3.1, since there is no work being done to update or maintain the dynamic language support features in the GlassFish codebase.

The changes required to support 'versioned Java EE projects' is beyond the scope of the modules that implement the GlassFish integration modules for NetBeans.

The changes required to support 'deployable OSGi bundles' is beyond the scope of the modules that implement the GlassFish integration modules for NetBeans.

The changes required to support 'development of application that target GlassFish Embedded' is beyond the scope of the modules that implement the GlassFish integration modules for NetBeans.

4.5. Interfaces:

4.5.1 Public Interfaces

The plugin has a fairly complete implementation of the common server spi.

The plugin has a fairly complete implementation of the following j2ee server registry spis:

4.5.2 Private Interfaces

The plugin exports the following interfaces to friends:

  • org.netbeans.modules.glassfish.eecommon.api
  • org.netbeans.modules.glassfish.eecommon.api.config
  • org.netbeans.modules.glassfish.spi

4.5.3 Deprecated/Removed Interfaces:

4.6. Doc Impact:

The documentation of the plugin is handled by the NetBeans documentation team.

4.7. Admin/Config Impact:

The plugin does not change the admin or config, but it does leverage these two areas of the server significantly.

4.8. HA Impact:

The plugin does not interact with HA.

4.9. I18N/L10N Impact:

The IDE integration is coded following the i18n requirements from the NetBeans team. The plugin is localized by the team that does the l10n of the NetBeans IDE.

4.10. Packaging, Delivery & Upgrade:

4.10.1. Packaging

The plugin is included in NetBeans, so it has no independent packaging requirements.

4.10.2. Delivery

The IDE integration has no impact on the server delivery. There is a strong desire for the two projects (NetBeans and GlassFish Server 3.1) to ship at approximately the same time.

4.10.3. Upgrade and Migration:

The plugin will continue to support a large number of releases so users can upgrade their IDE from 6.9 to NetBeans 6.10 and not lose functionality.

4.11. Security Impact:

The IDE integration does not have a direct security impact.

The IDE performs many operation on the server via the http adapter. In 3.0, queries on this interface would generate
HTTP 401 responses for BASIC authentication. If the http adapter starts to request a different form of authentication, the plugin will have to account for that change.

4.12. Compatibility Impact

4.13. Dependencies:

4.13.1 Existing Dependencies

  • The http adapter
    • Translate UI actions into server commands
    • Get/set config data for display and editing
  • The layout of the installed server/domain
    • Validate server registration
    • Provide link between API jars in the server install and the netbeans projects that use them
    • Resolve schemas and dtds to support xml editing
    • Access the update tool
    • display the log for a server
    • display generated java source for a jsp
    • enable JDBC driver deployment
    • enable Java EE verification on a project
  • The domain.xml file
    • Validate server registration
    • Discover deployed resources when local server is offline
    • Starting the server without using asadmin start-domain
  • URL for zip based distributions
    • Download now functionality

4.13.2 New Dependencies

  • The REST API
    This interface will be used in preference to the http adapter, where possible.
    • improved Web Service visibility
    • view log for remote domains

4.14. Testing Impact:

New integration features are being developed following a TDD methodolgy. Many of of the existing unit and functional tests for the existing plugin features are automated into the
javaee build that is executed in the NetBeans Hudson: http://bertram.netbeans.org/hudson/job/javaee/

Many of the features will be released as part of the Netbeans 6.10 builds. This will put the features into the hands of NetBeans
early adopters. Many of these users are actively developing Java EE apps that leverage GlassFish.

We will also provide builds of the integration that will be installable into NetBeans 6.9. This will allow folks that do not want to
do their development and testing in an environment where both of the major components are changing daily.

5. Reference Documents:

The plugin project plan

The Deployment One Pager

The Connectors One Pager

The Restful API One Pager

The Logging One Pager

6. Schedule:

6.1. Projected Availability:

The task list on the project plan provides a detailed list of when different tasks are scheduled.

All the issues called out in the dependency tree for issue 11921 are also marked with Target Milestone