[Embedded] One Pager [
Unknown macro: {TableOfContents title=' '}
|(TableOfContentstitle='')] 1. Introduction 1.1. Project/Component Working Name: Embedded GlassFish 1.2. Name(s) and e-mail address of Document Author(s)/Supplier: The individual who are wrote this document Name: Siraj Ghaffar <br> Email address: Siraj.Ghaffar@Sun.Com 1.3. Date of This Document: 05/02/09 2. Project Summary 2.1. Project Description: The objective of the embedded GlassFish project is to enable running of GlassFish in any user provided JVM. This means that GlassFish should run inside a user's application, instead of the other way around. No GlassFish installation or configuration should be required. A related objective is that the embedded functionality should work with the regular installation of GlassFish as well. For more background information on the project see onepager of the prelude version of the embedded server. 2.2. Risks and Assumptions: 3. Problem Summary 3.1. Problem Area: What problem or need does this project solve? The most important problem areas addresses by embedded are :
- Developer Productivity
- Application Testing
3.2. Justification: Why is it important to do this project? Embedded GlassFish is a long sought after feature for developers. It is extremely useful in a development/testing environment. For example, a web service or servlet or EJB can have unit tests that test both the client and the server in the same JVM without requiring external configuration, or requiring to install GlassFish.The tests can even be run automatically with every build as a unit test. Jetty is one of the products that Embedded GlassFish competes with. One advantage that Embedded has over Jetty is that Jetty supports only servlets, whereas Embedded GlassFish can support EJB, servlets, scripting etc. 4. Technical Description: 4.1. Details: Modes of Operation : The embedded server can operate in 3 different modes : 1. Implanted : In the implanted mode, the embedded functionality is used in regular glassfish. For this to work, the embedded APIs must work in the regular glassfish distribution. A "shell" jar is made available that points to the glassfish jars. In the manifest file of the shell jar, the Class-Path entry points to the necessary glassfish jars. Users will need to put the shell jar in the classpath. This mode requires a full installation with proper glassfish file layout. 2. Static : In the static mode also, the user puts the "shell" jar in the classpath. The static mode works with both (a) a complete and full glassfish installation and (b) without a complete installation. <br> (a) With the complete installation, the functionality is somewhat similar to Implanted, but classloading is done statically, as opposed to being done through OSGi. <br> (b)Without the complete installation, necessary layout is created in a temp directory. The required jars are downloaded automatically. This is done by specifying appropriate maven dependencies. Using an Embedded API setting, the user can tell whether the static mode should be used or the implanted mode. 3. Mega Jar : In this mode, an embedded jar is made available, that contains all the glassfish jars. Instead of the "shell" jar approach, the mega jar actually contains all the jars. The mega jar would be published on maven repository. The above modes would work with different profiles. Currently Web and Classic profiles are proposed. There will be separate shell and mega jars for each profile. See below ("Profiles") for more details. Nice-to-have : A tool that lets you build a mega jar of user's choice by including appropriate jars in it. Embedded API : The embedded API for the final release is different from the one in prelude. The prelude API was web-centric, whereas the new API is more general. Components : The EJB Container and Web Container would be supported in Embedded GlassFish. Maven Plugin : The maven plugin will consist of 2 goals : 1. glassfish:run - this will run on (a) a full install of glassfish or (b) look at the dependencies in pom.xml and download the necessary jars to run the server 2. glassfish:admin - this will allow any asadmin command to be run on the process started by glassfish:run. Profiles : Embedded GlassFish will be available in two different profiles. These are :
- Classic Profile
- Web Profile
The Classic profile will be a jar file named embedded-all.jar. Jars corresponding to the following IPS pacakges (see pacakging spec will be part of the Classic profile :
- glassfish-api (includes the embedded API)
- glassfish-nucleus
- glassfish-grizzly
- glassfish-common
- glassfish-management
- glassfish-jca
- glassfish-jpa
- glassfish-jta
- glassfish-jsf
- glassfish-web
- glassfish-jdbc
- glassfish-ejb
- glassfish-corba-omgapi
- glassfish-codegen
- glassfish-corba
- glassfish-jts
- glassfish-scripting
- metro
- jersey
- mq
The Web embedded API would be part of glassfish-web. The EJB embedded API would be part of glasfish-ejb. The Web Profile will be a subset of the Classic profile and will consist of the following :
- glassfish-api (includes the embedded API)
- glassfish-nucleus
- glassfish-web.jar
- glassfish-jsf.jar
- glassfish-jpa.jar
- glassfish-jta.jar
- glassfish-jdbc.jar
Junit: One of the objectives of the embedded server is to provide easy testing mechanism through frameworks like junit. It should be possible to run junit tests with the embedded server, without going through the process of installing and the embedded server should work through junit as it should work with any plain java program <p> 4.2. Bug/RFE Number(s): List any Bug(s)/RFE(s) which will be addressed by this proposed change. Provide links to the Issue tracker Bug(s)/RFE(s)where possible 4.3. In Scope: Aspects that are in scope of this proposal if not obvious from above. 4.4. Out of Scope: Aspects that are out of scope if not obvious from above. 4.5. Interfaces: 4.5.1 Exported Interfaces
4.5.2 Imported interfaces Disclose interfaces this project imports.
- Interface:
- Stability:
- Exporting Project: Name, Specification or other Link.
- Comments:
- Interface:
- Stability:
- Exporting Project: Name, Specification or other Link.
- Comments:
4.5.3 Other interfaces (Optional) Any private interfaces that may be of interest?
- Interface:
- Stability:
- Exporting Project: Name, Specification or other Link.
- Comments:
- Interface:
- Stability:
- Exporting Project: Name, Specification or other Link.
- Comments:
4.6. Doc Impact:
- Javadoc for the embedded API.
- Documentation of samples describing how to use embedded glassfish.
- Nice-to-have : A document that describes how to convert a Jetty app to an Embeddable GlassFish app.
4.7. Admin/Config Impact: How will this change impact the administration of the product? Identify changes to GUIs, CLI, agents, plugins... 4.8. HA Impact: What new requirements does this proposal place on the High Availability or Clustering aspects of the component? 4.9. I18N/L10N Impact: Does this proposal impact internationalization or localization? Internationalization of error messages would be needed. 4.10. Packaging & Delivery: 4.11. Security Impact: None. 4.12. Compatibility Impact The Embedded API for V3 Final would be different and incompatible from the Embedded API for Prelude. There are no upgrade or migration requirements for the embedded API. 4.13. Dependencies: List all dependencies that this proposal has on other proposals, components or products. Include interface specifics above in the interfaces section; LIST dependency component version requirements here. 5. Reference Documents: List of related documents, if any (BugID's, RFP's, papers). packaging spec Prelude Embedded onepager Embedded API V3 Overview Embedded java.net project site Kohsuke's Blog javadoc for the Prelude Embedded API 6. Schedule: 6.1. Projected Availability: Dates in appropriate precision (quarters, years)
|