Comment ID |
Date |
Section, Page Number/URL |
Comment |
Status – (RESOLVED/UNRESOLVED) |
tjquinn-001 |
20-Oct-2008 |
p. 85, first sentence after the completion of the table |
Sentence claims that implementations of WriteableArchive provide read and write access. In fact, the interface requires only that they provide write access. |
RESOLVED |
tjquinn-002 |
20-Oct-2008 |
p. 87, second sentence |
"Once a Sniffer implementation has decided that it owns the deployment request artifact, the setUp method is called." is ambiguous as to whether GlassFish invokes the setUp method or whether the container developer should write the Sniffer's handles to invoke setUp. In fact, GlassFish will invoke this method. |
RESOLVED |
tjquinn-003 |
20-Oct-2008 |
p. 87, remark 6-2 |
Jerome should weigh in on this also, but I think the reference to Repository on the Container SPI page is to the hk2 Repository interface, or more precisely an implementation of that interface provided by the container developer. The developer of the new container will create one or more OSGi modules that make up the container, modules which contain the classes and resources (property files, images, etc.) that the container will need as it runs. The Repository referred to here is (I believe) an implementation of the hk2 Repository interface that can locate and describe such modules. The hk2 library includes a DirectoryBasedRepository which implements the Repository interface for modules that reside as files in a directory. |
Did not hear from Jerome, but RESOLVED, I hope |
tjquinn-004 |
20-Oct-2008 |
p. 87, remark 6-3 |
In line with the previous comment, a module (somewhat simplified) is a collection of classes, resources, and other files that can be loaded and unloaded as a unit. Modules are often implemented as JAR files with additional content in the manifest file to convey module-system information. The idea here is that the Sniffer, because the container developer knows what module(s) are needed by the container, can prepare the array of Module objects (which is the return value of the Sniffer.setUp method). Then GlassFish, with that list of modules needed by the container of which that sniffer is a part, can load them so it (GlassFish) can create an instance of that container's Deployer or Container implementations when it needs to. |
RESOLVED |
tjquinn-005 |
20-Oct-2008 |
p. 88, getDeploymentConfigurations discussion |
(In case it helps...) An application of a given type might contain zero or more sets of configuration information. For example, a web application can contain two web-related deployment descriptors: web.xml (the standard web deployment descriptor) and sun-web.xml (the so-called runtime descriptor which is specific to GlassFish) but not all web apps will contain both. The getDeploymentConfigurations method lets GlassFish ask the container for all the different sets of configuration information in a given application - the one accessible by the ReadableArchive argument. The return value is a Map from a name the container chooses to the actual configuration information information associated with that name. Continuing the web example, the possible names are WEB-INF/web.xml and WEB-INF/sun-web.xml. GlassFish uses this method primarily to find out this configuration information so it can be made available to an administrator for customizing the application's configuration after he or she has deployed the app. This customization feature is only partially implemented in prelude but container developers should implement this method as the contract in the JavaDoc explains if they want to take advantage of the customization features when GlassFish supports them fully. |
RESOLVED |
-- |
-- |
-- |
-- |
|
anissa-001 |
22-Oct-2008 |
pg32, Remark3-3 |
I think it is ok to use add-on instead of plugin. I don't see any problem in that following paragraph |
RESOLVED |
anissa-002 |
22-Oct-2008 |
pg 32 |
@Service The console provider allows the Enterprise Server runtime to efficiently locate all add-on components. This is not just for efficiency, it is required. Maybe we should remove this word. |
RESOLVED |
anissa-003 |
22-Oct-2008 |
Remark3-4 |
If the user wants to rename the file from console-config.xml to something else, or they want to place this file in another location instead of under META-INF/admingui, they can generate the URL representation of that file and return it, instead of returning null, which means takes the default. |
RESOLVED |
anissa-004 |
22-Oct-2008 |
pg 33 |
I found the paragraph 'About Administration Console Templates' very odd here. It doesn't give any more info about the template, and we are in the middle of discussing Integration point, how to specify it etc. Should we move this paragraph to some other place? |
We'd like to introduce these major concepts at the beginning. I don't think there's another logical place to put the section where it can easily be found. |
anissa-005 |
22-Oct-2008 |
pg 35 Priority |
priority is compared among all the add-on module that targets the same parentId. They will be placed 'after' those that is in the original/core gui. eg. the added tree node. It will always be placed after all the other top level tree node, but it will be compared to the 'updateTool' tree node since the updateTool node is also from a add-on. |
RESOLVED |
anissa-006 |
22-Oct-2008 |
pg 40, about tabs |
Maybe want to mention something about the session attribute "serverInstTabs". You need to set that to the jsf page name that correspond to that tab. Under the line where it says sampleSubTab1.jsf and sampleSubTab2.jsf are almost identical, tell the user to take a look at the setting of this session attribute. |
RESOLVED |
anissa-007 |
22-Oct-2008 |
pg 41 Remark3-7 |
true for v3 prelude. monitoring and deployment is the only 'group' that you can add on. Or you can create your own group. |
RESOLVED |
anissa-008 |
22-Oct-2008 |
pg42 Remark3-8 |
parent.location is NOT for the woodstock commonTask component. It is part of the javascript for onClick and onKeyPress. This is used to specify which page you want to go to when user click on it. |
RESOLVED |
anissa-009 |
22-Oct-2008 |
pg 43, Remark3-9 |
the extra line got there by mistake. Also notice an error regarding the selectTreeNodeById. I have fixed and checked in another copy. Please update your workspace. |
RESOLVED |
anissa-010 |
22-Oct-2008 |
pg 44, Remark3-10 |
Usually a type is specific to a page. There are other 'type' you have seen before, eg org.glassfish.admingui:commonTask. It is just that for the resources page, the type is 'org.glassfish.admingui:configuration |
RESOLVED assuming you mean org.glassfish.admingui:resources |
anissa-011 |
22-Oct-2008 |
pg 92, Remark A-2 |
There isn't any limit for the priority. They are used to decide the location of the add on component IF there are more than 1 integration point in the page with the same type and same parent ID. They are just used for comparison, relative to each other. |
RESOLVED |
anissa-012 |
22-Oct-2008 |
pg 93 list of parentId for tree node |
Note that webContainer and httpService comes from the GUI for web container management, this means that if console-web-gui package is not installed, and you use this as parentID to add sub-node to it,you won't see this. |
RESOLVED |
anissa-013 |
22-Oct-2008 |
pg 94 Remark A-3 |
Answer is NO. They are unrelated. However, you want to point out that the sun:tab id must be the value for setting the session attribute. The id for the Integration Point only comes into the picture if you want to add anything under it, so that you can specify that as the parent Id. |
RESOLVED |
anissa-014 |
22-Oct-2008 |
pg 94 RemarkA-4 |
There are no id value specified for your list here. We can easily add that, but we have passed timeline for v3 Prelude. You can mention that after v3 prelude, we will enhance the page so that all common task group in that page can be extended. |
RESOLVED |
-- |
-- |
-- |
-- |
|
ana-001 |
22-Oct-2008 |
Remark 3-11 |
It does not have to be at the top level. The user can put it in a directory and specify the location of the file. |
RESOLVED |
ana-002 |
22-Oct-2008 |
p.49 |
I think you need to point out that if they require changes to the "theme" of the Administration Console they will need to create their own theme jar file with all necessary CSS properties and images required by the woodstock component. In order to accomplish this it is recommended that they use a script provided by woodstock to clone an existing theme and then modify files and properties as necessary(See http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html ). Once the theme jar file is created it will need to be placed in the Administration Console's "WEB-INF\lib" directory in order for the woodstock theme component to load the theme. It is also necessary to modify your "myOwnBrand.properties" file with the name and version of your theme. |
ana-003 |
22-Oct-2008 |
Branding Section |
I don't see any mention of how the "priority" property is used when the integration points are read. Since multiple branding plugins can be placed in the modules directory and only one branding and theme can be applied to the Administration Console, a priority feature was established to determine which branding images and theme will be used. Priority values are supported from 1 to 100 and the lower the number the higher the priority. |
RESOLVED |
ana-A |
23-Oct-2008 |
Remarks A-5 p.96 |
The key name should be "com.sun.webui.theme.DEFAULT_THEME". You can learn more about how this paramter is used on the following page: http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html |
RESOLVED |
-- |
-- |
-- |
-- |
|
sreeni-001 |
22-Oct-2008 |
pg. 19, The component must provide configuration data, management data, and monitoring data ? to other Enterprise Server components in the same way as other Enterprise Server components. |
I think this should be optional since some add-ons may not have the need for monitoring or management, based on our v3 architecture, even configuration is optional. Same applies to the next item. |
RESOLVED |
sreeni-002 |
22-Oct-2008 |
Remark 4-2 |
Extending the asadmin utility does not provide access to server configuration. But it is automatically available thru dotted name infrastructure, for ex. asadmin list, get and set. We'll talk about configuration pluggability post prelude. |
RESOLVED |
sreeni-003 |
22-Oct-2008 |
Remark 4-3 |
Could you pl. elaborate on what is missing ? |
RESOLVED |
sreeni-004 |
22-Oct-2008 |
pg. 51, Changing the Brand of the of the asadmin CLI? |
It is not changing the Brand of the of the asadmin CLI but the product itself and the way it gets exposed thru admin cli. Pl.let me know if you need more clarification. |
RESOLVED |
sreeni-005 |
22-Oct-2008 |
Remark 4-5 |
It is a good idea to talk about best practices/conventions for naming. |
RESOLVED |
sreeni-006 |
22-Oct-2008 |
Remark 4-6 |
We could mention about annotations @Singleton @Perlookup to indicate whether the command needs to be created for each lookup or for the entire session. |
RESOLVED |
sreeni-007 |
22-Oct-2008 |
Remark 4-7 |
Pl. see response to 4-6 |
RESOLVED |
sreeni-008 |
22-Oct-2008 |
Remark 4-8 |
Thru @Service annotation and by virtue of implementing AdminCommand. Pl. let me know if you are looking for more. |
RESOLVED |
sreeni-009 |
22-Oct-2008 |
Remark 4-9 |
Perhaps Jerome can clarify. |
RESOLVED |
sreeni-010 |
22-Oct-2008 |
Remark 4-12 |
I think it should be obvious from simple description. |
RESOLVED |
sreeni-012 |
22-Oct-2008 |
Remark 4-18 |
Can you elaborate pl. |
DECLINE See comment janey-19 |
sreeni-013 |
22-Oct-2008 |
pg. 60, Changing the Brand of the of the asadmin CLI |
Pl. refer my comment for pg. 51 |
RESOLVED |
sreeni-014 |
22-Oct-2008 |
pg. 60 |
Pages 60 & 61 need to be changed and I'll send the details in a separate email |
RESOLVED |
kenpaulsen-001 |
22-Oct-2008 |
p32 Remark 3-3 |
I think it is OK to rename it provided that when you mention the bundle or tell them where to find it or to use it that you make the filename clear. |
|
kenpaulsen-002 |
22-Oct-2008 |
p32 paragraph 4 |
You mention the "Hundred Kilobytes Kernel (HK2)". I am not certain, but I think should have the word "project" after it. Not sure if this name requires that or not... |
Have inquired, but leaving it out for the time being. |
kenpaulsen-003 |
22-Oct-2008 |
p32 paragraph 5 |
Change this paragraph (which starts "To create a console provider...") to: Each Add-On Component contains a "console provider" implementation. This is a Java class that implements the org.glassfish.api.admingui.ConsoleProvider interface and uses the HK2 @Service annotation. The console provider allows your Add-On Component to specify where your integration point configuration file is located. This is how your Add-On Component communicates to the Console Add-On Component Service what customizations you will be making to the Administration Console. |
RESOLVED |
kenpaulsen-004 |
22-Oct-2008 |
p33 Remark 3-4 |
If the user chooses for some reason to store the console-config.xml file in an different location, he would have to return a URL that points to that different location. Although we have not run into this situation, it may be possible for 2 plugins to exist in the same jar file... that would require 2 console-config.xml files which, obviously, can't have the same name. It would also be possible for the developer to return a URL which is resolved outside the jar file (i.e. a web service) which calculates the integration points based on the users credentials or day of the week, etc. I'm not sure if you want to put this information in this document, though... 99% of the time it should simply use the default and return null. Anyone advanced enough to want to do something else should already know that they can do it (it's a URL). |
RESOLVED |
kenpaulsen-005 |
22-Oct-2008 |
p49 Remark 3-12 |
If your Add-On Component provides new content which you would like other people to extend, you may define your own Integration Point Types. For example, if you add a new page which provides tabs of monitoring information, you may want to allow others to add their own tabs to compliment your default tabs. This enables your page to behave like many of the existing Administration Console pages which may be extended by you or others. To do this, you simply need to decide on a Integration Point Type, and include a couple handlers in your JSF page. The Integration Point Type must be a unique identifier, a good choice might be the package name of your IntegrationPoint with a meaningful name appended to the end. Perhaps something like this: org.company.project:myMonitoringTabs If you would like others to be able to take advantage of this Integration Point, you should then document it at the GlassFish Integration Point Wiki (only do this if your content is publicly available). Once you have an Integration Point ID, your next step is to include the following code below the place in your JSF file where you would like to enable others to add their Integration Point implementations: ~UWC_TOKEN_START~1278938933053~UWC_TOKEN_END Change "clientId:of:root" to match the clientId of the outer-most component in which you want others to be able to add their content (in this example, the tabset is the most likely choice). Also include your Integration Point ID in place of "org.company.project:myMonitoringTabs". (Note: If you omit the "root" argument to includeIntegrations, all components on the entire page may be used for the "parentId" of the Integration Points.) That's it! You or others may not provide an Integration Point which will be integrated into this page. For more information about the "includeIntegrations" or "getUIComponent" handlers, see the JavaDoc. |
RESOLVED |
kenpaulsen-006 |
22-Oct-2008 |
misc |
I updated the directives / events information on the JSFTemplating web site. You can find the latest documentation at: https://jsftemplating.java.net/doc |
RESOLVED |
kenpaulsen-007 |
22-Oct-2008 |
Many |
I uploaded an attachment to this wiki page called chap3.pdf. This PDF contains many notes and corrections to chapter 3. Please see the .pdf file for details. |
RESOLVED |
jdlee-001 |
23-Oct-2008 |
B-2 |
I think that would be correct. |
RESOLVED |
jdlee-002 |
23-Oct-2008 |
B-3 |
propSheetPropTableTemplate.tpl is the correct name, but I don't see it in the other wiki page. Perhaps it was fixed after you read it. |
RESOLVED |
jdlee-003 |
23-Oct-2008 |
B-4 |
The phrase "is automatic" is probably a better choice. It's at least a little more professional. |
RESOLVED |
jdlee-004 |
23-Oct-2008 |
B-5 |
propertySheetTemplate.tpl is the correct name. I will correct that table. |
RESOLVED |
jdlee-005 |
23-Oct-2008 |
B-6 |
Fixed: "The id of the glassfish server configuration." |
RESOLVED |
ana-A |
23-Oct-2008 |
Remarks A-5 p.96 |
The key name should be "com.sun.webui.theme.DEFAULT_THEME". You can learn more about how this paramter is used on the following page: http://webdev2.sun.com/woodstock-theme-doc/creating-themes.html |
RESOLVED |
sreeni-015 |
24-Oct-2008 |
Remark 5-2 |
Events are used to compute the monitoring statistics. @Param is used to compute the statistic and @Param itsel is not a statistic. |
RESOLVED |
sreeni-016 |
24-Oct-2008 |
Remark 5-3 |
One pager seems to be corrected. Pl. use the example as reference for this purpose. |
RESOLVED |
sreeni-017 |
24-Oct-2008 |
Remark 5-4 |
If one wants to pass params as part of event then it needs to be declared as @ProbeParam annotation. For other requirements, I request Mahesh/Prashant to comment. |
RESOLVED |
sreeni-018 |
24-Oct-2008 |
Remark 5-5 |
They do not have correspondence to dotted names. I think it is best not to provide complete description as this may change. Request Mahesh/Prashnt to comment. |
RESOLVED |
sreeni-019 |
24-Oct-2008 |
pg. 69, Getting parent object |
MonitoringRuntimeDataRegistry holds references to top level server nodes and it is not used to return any node. One uses server node to start with and add the cild node at an appropriate place. |
RESOLVED |
sreeni-020 |
24-Oct-2008 |
pg 70 |
I don't think we need a separate section on 'Creating Event Listeners' as the implementation of listener thru annotations is covered under 'Subscribing to Events From Event Provider Classes'. |
DECLINE after discussion with sreeni. |
sreeni-021 |
24-Oct-2008 |
Remark 5-10 |
The returned handles could be used to enable/disable monitoring, for ex. the implementation for provider interface will now generate actual calls insted of no-ops |
RESOLVED |
sreeni-022 |
24-Oct-2008 |
pg. 74, The example shows the definition of the ModuleProbeProvider interface. The event provider sends events when a request starts and stops. |
It is not request but whenever the count increments and decrements |
RESOLVED |
sreeni-023 |
24-Oct-2008 |
chapter 5 |
I don't see writeup on asadmin monitor, did we decide not to have it for prelude ? |
RESOLVED I was told that this interface is not exposed at Prelude. |
janey-01 |
24-Oct-2008 |
pg 51, Remark 4-2 |
No, extending the asadmin utility does not provide an easy access to config data. |
RESOLVEDRESOLVED |
janey-02 |
24-Oct-2008 |
pg 51 Remark 4-3 |
I don't understand what is the import clauses. |
|
janey-03 |
24-Oct-2008 |
pg 52 Remark 4-5 |
That's a good idea. We should add a guideline and also make sure that commands are not duplicated. |
RESOLVED |
janey-04 |
24-Oct-2008 |
pg 52 Remark 4-6 |
You want the command class to be stateless so that multiple clients can execute the command at the same time. |
RESOLVED |
janey-05 |
24-Oct-2008 |
pg 52 Remark 4-7 |
use @Scoped(PerLookup.class) to instantiate a new instances of the command class.RESOLVED |
janey-06 |
24-Oct-2008 |
pg 52 Remark 4-8 |
by using @Service |
RESOLVED |
janey-07 |
24-Oct-2008 |
pg 53 Remark 4-9 |
There are two reasons I can think of why a setter method is useful. (1) data (field) encapsulation. (2) add code to validate the parameter before setting the field. |
RESOLVED |
janey-08 |
24-Oct-2008 |
pg 55 Short form and Long form |
The example you have use -t and --terse. This option is used in local command. You may want to use -m and --monitor instead. |
RESOLVED |
janey-09 |
24-Oct-2008 |
pg 55 Specifying te shortFomr of an Option Name |
Since password option is not used, please use a different example than -p and --password. Use -m and --monitor instead. |
RESOLVED |
janey-10 |
24-Oct-2008 |
pg 55 Remark 4-10 |
Good idea. An example should be added. Example: @Param(acceptableValues="http-listener, iiop-listener"). The acceptable values are delimited by ",". |
RESOLVED |
janey-11 |
24-Oct-2008 |
pg 55 Remark 4-11 |
Yes, and defaultValue example should also be added. Example: @Param(defaultValue="false") |
RESOLVED |
janey-12 |
24-Oct-2008 |
pg 56 Remark 4-12 |
Not sure if there should be a guideline. The command developers determines if the parameter is required or optional. |
RESOLVED |
janey-13 |
24-Oct-2008 |
pg 56 Examples |
Remove ... between @Param(name="bar", optional="true") and String renamedTooManyTimes. |
DECLINE The ... denotes the missing line of code that contains @Param in a later example. |
janey-15 |
24-Oct-2008 |
pg 57-58 Remark 4-14 |
Agree with the remark that this section is incomplete especially the Example. The Example code should demonstrate how localized message is used. Let me know if you need help with this. |
DEFER |
janey-16 |
24-Oct-2008 |
pg 59 Remark 4-15 |
Yes, the parameters are passed through AdminCommandContext |
RESOLVED |
janey-19 |
24-Oct-2008 |
pg 59 Remark 4-18 |
Parameter is not removed. |
RESOLVED |
janey-20 |
24-Oct-2008 |
pg 59 Remark 4-19 |
Yes, that is correct. public void execute(AdminCommandContext context). Command developer needs to implement the execute(AdminCommandContext context) method. |
RESOLVED |