<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Rajiv Mordani&apos;s Blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/" />
<modified>2008-05-22T07:22:14Z</modified>
<tagline></tagline>
<id>tag:weblogs.java.net,2008:/blog/mode/220</id>
<generator url="http://www.movabletype.org/" version="3.01D">Movable Type</generator>
<copyright>Copyright (c) 2008, mode</copyright>
<entry>
<title>Aggregrated feed for GlasFish webtier related blogs</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2008/05/aggregrated_fee.html" />
<modified>2008-05-22T07:22:14Z</modified>
<issued>2008-05-22T07:15:38Z</issued>
<id>tag:weblogs.java.net,2008:/blog/mode/220.9845</id>
<created>2008-05-22T07:15:38Z</created>
<summary type="text/plain">We now have an aggregated feed for all webtier related blogs - http://feeds.feedburner.com/GlassFish-webtier....</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[We now have an aggregated feed for all webtier related blogs - <a href="http://feeds.feedburner.com/GlassFish-webtier">http://feeds.feedburner.com/GlassFish-webtier</a>. ]]>

</content>
</entry>
<entry>
<title>Forum and mailing list dedicated for webtier in GlassFish</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2008/05/forum_and_maili.html" />
<modified>2008-05-15T05:25:44Z</modified>
<issued>2008-05-15T05:23:54Z</issued>
<id>tag:weblogs.java.net,2008:/blog/mode/220.9810</id>
<created>2008-05-15T05:23:54Z</created>
<summary type="text/plain">We now have a mailing list - webtier@glassfish.dev.java.net and forum dedicated to discuss user issues for the webtier of GlassFish. The intent is to use the mailing list and forum for discussing the webtier technologies including Servlets, JSP, JSF, JSTL,...</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[We now have a mailing list - <a href="mailto:webtier@glassfish.dev.java.net">webtier@glassfish.dev.java.net</a> and <a href="http://forums.java.net/jive/forum.jspa?forumID=138">forum </a> dedicated to discuss user issues for the webtier of GlassFish. The intent is to use the mailing list and forum for discussing the webtier technologies including Servlets, JSP, JSF, JSTL, Grizzly and scripting support in GlassFish and build a community that focuses on webtier of the Java EE platform. Cross-posting from one to the other is still not working but it should be pretty soon. Please consider joining the mailing list or use the forum.]]>

</content>
</entry>
<entry>
<title>JSR 315 Needs YOU: Response to Greg&apos;s blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2008/05/jsr_315_needs_y.html" />
<modified>2008-05-15T00:38:43Z</modified>
<issued>2008-05-15T00:38:31Z</issued>
<id>tag:weblogs.java.net,2008:/blog/mode/220.9800</id>
<created>2008-05-15T00:38:31Z</created>
<summary type="text/plain">The other side of the coin to Greg Wilkins blog describing the pluggability / auto-scanning feature in servlet 3.0</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[In my <a href="http://weblogs.java.net/blog/mode/archive/2008/05/servlet_30_plug.html">previous</a> post I described some of the pluggability mechanism being added to the servlet 3.0 specification. One of the issues that I didn't touch upon in detail was how the annotations and web-fragments are processed and how can one override / turn off the auto scanning of annotations and web-fragments. 
<p>
Greg Wilkins from Webtide <a href="http://blogs.webtide.com/gregw/2008/04/25/1209090806878.html">blogged</a>
about the pluggability mechanism and raised an issue with the auto-scanning. Hopefully this blog will make the argument for the simple scanning of annotations and web-fragments and argue against the case of having a more flexible scheme in this release of the servlet specification.
<p>
I will start with the annotation case first and then talk about the web-fragments. When you use annotations to declare servlets and Filters then you must have a url-mapping / FilterMapping attribute on the corresponding servlet / Filter. In this way there is no convention by which a servlet is exposed without having an explicit mapping. Also , as with the rest of the Java EE platform, specifically technologies like EJB and Web Services, the deployment descriptor is used to override information that is specified via annotations. So if you have a servlet that is declared via annotations during development and now you need to change one attribute of the servlet when you go from development to production, you don't need to modify the code. Instead you override the configuration using the web.xml file. In the example below I show how this can be used - 

<pre>
@Servlet(url-mapping="/foo")
public class MyServlet {
    @GET
    public void handleGet(HttpServletRequest req, HttpServletResponse res) {
         ...
     }
}
</pre>

At deployment time say you want to override the url-mapping for the servlet defined above. The way you would do that would be by defining the new mapping for the servlet in the web.xml as shown below - 

<pre>
&lt;web-app&gt;
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;
      MyServlet
    &lt;/servlet-name&gt;
    &lt;url-pattern&gt;
      /MyApp
    &lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
&lt;/web-app&gt;
</pre>
<p>
If you didn't want any of the annotations to be processed at all by the container and wanted to specify all the configuration via the deployment descriptor, then, like with the rest of the Java EE 5 platform, we have the metadata-complete element in the descriptor. If the element is present and set to "true" then the container will not process any annotations and just use the configuration specified in the descriptor. This provides a way disable the auto-scanning for those that have concerns about performance, and security. This is consistent with what we have today in Java EE 5 platform and has worked well with EJBs and JAX-WS (Web Services APIs). We have not received any negative feedback about security and performance being an issue. Web Services are endpoints that are exposed on the web so the argument someone makes about there not being a security hole in EJB does not stand true for Web Services.
<p>
The second issue is about auto-scanning of web-fragments. The early draft of the specification says that the container needs to process web-fragments and make available the servlets, filters an listeners defined via the fragments. As discussed in my earlier post, this helps with use of frameworks. Currently the early draft of the specification says that the same flag - metadata-complete controls both the scanning of annotations and fragments. I still think that is sufficient for the developers. However during JavaOne we had an expert group face-to-face meeting and discussed the possibility of having another flag to control the scanning of web fragments and use the metadata-complete just to control scanning of annotations. Again similar to metadata-complete this flag would control whether to scan for web-fragments or not. If you choose not to scan the web-fragments then you would need to specify the entire metadata that you need in in the web.xml of the application, a-la metadata-complete :). For those that have major security concerns this would probably be the route to go because even if you do have the include mechanism there would be no way to specify just one servlet from the jar file. The container would still scan for all the servlets, filters and listeners from the framework available. The concept of "trusting" certain frameworks doesn't seem to solve the problem. Let's take Spring for example - if you choose Spring as the framework but didn't want one of the servlets defined in Spring to be available. The include mechanism would not work for you. You would have to fall back on defining everything in the web.xml of the application anyways. The benefit that the include proposal from Greg Wilkins is very little specially if the main concern is that servlets and filters are being exposed without the user intending to do so. I think that it is the problem of the framework developer and not the user of the framework to make sure that they don't expose certain types of components. By using a flag to control scanning you can effectively get what the include mechanism provides except you don't get partial scanning of only a certain set of jars. The include mechanism would probably only make the descriptor more verbose in having to list the jars you want scanned.
<p>
Another mechanism that came up during the face-to-face which hasn't been still talked about in the expert group is the concept of disabling servlets and filters in the application's web.xml. For example we could have in the application's web.xml the following - 

<pre>
  &lt;servlet&gt;
    &lt;servlet-name&gt;FrameworkServlet&lt;/servlet-name&gt;
    &lt;enabled&gt;false&lt;/enabled&gt;
  &lt;/servlet&gt;

</pre>

This way some of the servlets that aren't needed in production can be disabled via the main web.xml of the application and the security issue can be mitigated while keeping things simple.]]>

</content>
</entry>
<entry>
<title>Servlet 3.0 pluggability</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2008/05/servlet_30_plug.html" />
<modified>2008-05-14T07:36:36Z</modified>
<issued>2008-05-14T07:08:29Z</issued>
<id>tag:weblogs.java.net,2008:/blog/mode/220.9661</id>
<created>2008-05-14T07:08:29Z</created>
<summary type="text/plain">This blog talks about the pluggability extensions being defined in servlet 3.0.</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[In my earlier <a href="http://weblogs.java.net/blog/mode/archive/2008/04/servlet_30_jsr_1.html">post </a>I gave an overview of the things that are being worked upon in Servlet 3.0. This post focuses on one of the areas that the expert group has been working on - pluggability.<p>

<h3> Pluggability </h3>
There are a lot of frameworks / libraries that are built on top of the servlet container. Most frameworks today require you to configure a servlet, filter or listener in the application's web.xml in addition to including it as a dependency in the WEB-INF/lib directory. Today in a servlet container the application has one monolithic web.xml that defines all the deployment artifacts for the application, including the dependencies of the application on the framework components. In it's current state, a developer must go through the documentation of each framework that it depends on and declare the appropriate servlets, filters, Listeners, etc. The goal is to make it possible to use frameworks without having to worry about any additional configuration.
<p>To overcome this issue in servlet 3.0 we are adding a new feature that allows having more than one web.xml, or as it is being referred in the specification as web fragments. A framework can define it's own web.xml that declares the necessary components for the framework that is then included for use in the web applicaton. At deployment the container is responsible for discovering the web.xml fragments and processing them. A new element is being added to the schema for web applications - web-fragment that can define servlets, filters listeners. Below is a simple example of such a fragment. <p>
<pre>
&lt;web-fragment&gt;
  &lt;servlet&gt;
    &lt;servlet-name&gt;welcome&lt;/servlet-name&gt;
    &lt;servlet-class&gt;
      WelcomeServlet
    &lt;/servlet-class&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;welcome&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/Welcome&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
...
&lt;/web-fragment&gt;
</pre>
<br>
The above fragment would be included in the META-INF directory of the framework jar file.
<p>

In addition to changes to modularize the web.xml there are also annotations being defined to declare servlets (<tt>@Servlet</tt>), filters (<tt>@ServletFilter</tt>) and the annotations have all the attributes defined to make web.xml optional. These attributes contain information like url-mapping, init-params and other information that would typically be defined in the deployment descriptor. This way Servlets, filters etc can be defined entirely using annotations and would be picked up from the WEB-INF/classes or WEB-INF/lib directory.
<p>

Along with the changes mentioned above there are few new APIs to also allow programmatic addition of Servlets and Filters at start up time of an application. API changes for adding configuration are added to the <tt>ServletContext</tt> class and are listed here below: <p>
<pre>ServletContext: 
    addServlet 
    addServletMapping 
    addFilter 
    addFilterMapping 
</pre>

Below is an example that shows how the APIs defined in ServletContext can be used.

<pre>
@ServletContextListener
public class MyListener {
    public void contextInitialized (ServletContextEvent sce) {
        ServletContext sc = sce.getServletContext();
        sc.addServlet("myServlet", 
                      "Sample servlet", 
                      "foo.bar.MyServlet", 
                       null, -1);

        sc.addServletMapping("myServlet", 
                             new String[] {"/urlpattern/*"});
    }
}
</pre>

<pre>
@ServletContextListener
public class MyListener {
    public void contextInitialized (ServletContextEvent sce) {
        ServletContext sc = sce.getServletContext();
        sc.addFilter("myFilter", 
                     "Sample Filter", 
                     "foo.bar.MyFilter", 
                      null);

        sc.addFilterMapping("myFilter", 
                             new String[] {"/urlpattern/*"},                         
                            “myServlet”,
                             DispatcherType.REQUEST, false);
    }
}
</pre>
<p>
As you can see with the changes above now the onus is on the framework authors to make sure that they declare and make available the components and be self sufficient. As for the developers / users of the frameworks they now just need to include these libraries in their application and start using it.]]>

</content>
</entry>
<entry>
<title>Servlet 3.0 (JSR 315) update</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2008/04/servlet_30_jsr_1.html" />
<modified>2008-05-07T07:38:04Z</modified>
<issued>2008-05-01T00:50:55Z</issued>
<id>tag:weblogs.java.net,2008:/blog/mode/220.9641</id>
<created>2008-05-01T00:50:55Z</created>
<summary type="text/plain">Servlet 3.0 (JSR 315) update</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[<b>Update:</b> The early draft of the specification is now available at the JCP site. Click <a href="http://jcp.org/en/jsr/detail?id=315">here</a> to get to the draft.

It's been a while since I put a post on the blog so I thought I would take this opportunity to give an update on the servlet 3.0 specification. The expert group has been working through to enhance the APIs in the servlet specification. This blog is to give an update to the developers about the features that are proposed for the upcoming early draft of the specification. 

The main areas covered so far by the expert group are 

<ul>
  <li> Pluggability and extensibility
  <li> Ease of development 
  <li> Async support
  <li> Security enhancements
  <li> Some enhancements to the existing APIs.
</ul>

<h3> Pluggability and extensibility</h3>
In keeping with one of the main theme for Java EE 6, the goal of this requirement is provide more extension points in the servlet container to allow developers to easily use frameworks / libraries by "just dropping" a jar file in the application classpath and not require any additional configuration in the application. Today, in a servlet container the application has one monolithic web.xml that defines all the deployment artifacts for the application, including the dependencies of the application on the framework components. In it's current state, a developer must go through the documentation of each framework that it depends on and declare the appropriate servlets, filters, Listeners, etc. To overcome this issue in servlet 3.0 we are adding a new feature that allows having more than one web.xml, or as it is being referred in the specification as web fragments. A framework can define it's own web.xml that declares the necessary components for the framework that is then included for use in the web applicaton. It is the job of the container to assemble all the fragments at deployment / runtime of the application.<p>
Along with the changes mentioned above there are few new APIs to also allow programmatic addition of Servlets and Filters at start up time of an application.
API changes for configuration addition:
<br>
<tt>ServletContext: addServlet, addServletMapping, addFilter, addFilterMapping</tt>

<h3>Ease of Development</h3>
In servlet 3.0 one of the areas of focus is ease of development. The servlet 3.0 API is making use of annotations to enable a declarative style of programming for components of a web application. For example - to define a servlet you would use the following piece of code - <br>
<pre>
package samples;
import javax.servlet.http.annotation.*;

@Servlet(urlMappings={"/foo"})
public class SimpleSample {

}
</pre>

The use of annotations makes web.xml optional and a developer does not really need to use it unless they want to change some configuration without changing code - for example at deployment time. Also, as with all the other parts of the Java EE platform, the descriptor always overrides the metadata provided via use of annotations.

<h3>Async support</h3>
The initial proposal for Async servlet support came from Greg Wilkins from Webtide and has been discussed and refined in the expert group. Support for async servlets allows you to suspend and resume request processing and enable and disable the response depending on the need of the application. A good use case of this servlet is in writing comet style applications. API changes for async support: <br> 
<tt>ServletRequest:
suspend, resume, complete, isSuspended, isResumed, isTimeout, isInitial <br>
ServletResponse:
    disable, enable, isDisabled <br>
ServletRequestListener:
    requestSuspended, requestResumed, requestCompleted 
</tt>

<h3>Security enhancements</h3>
While this is not in the early draft of the specification as it needs some more discussion in the expert group, I thought I would give a sneak preview of what might be in the next draft of the specification. Ron Monzillo from Sun who is a security expert and has done work on many of the security related JSRs proposed the addition of methods to HttpServletRequest and HttpSession to support programmatic login and logout. API changes for login / logout support:<br>
<tt>
HttpServletRequest: login, logout <br>
HttpSession:logout
</tt>


<h3>Enhancements to existing APIs</h3>
A few areas of the current API have been enhanced that will help in developer productivity. Listed below are some of them - 
<ul>
<li>Ability to get a ServletContext and a Response object from the Request object. To get a Context (to maybe get context information or to get a RequestDispatcher for example) today you need to create a HttpSession object just to get a reference to a Context object. With the addition of the new APIs you can now get the Context and the associated Response from the ServletRequest. API changes for getting a Context and Response:<br>
<tt>ServletRequest:
    getServletContext, getServletResponse </tt>
<li> Mark a cookie as an HttpOnly cookie. By setting a cookie to be an HttpOnly cookie you prevent client side scripting code from getting access to the cookie. Most modern browsers support this feature and it helps mitigate some kinds of cross-site scripting attacks. API changes to support HttpOnlyCookie:<br>
<tt>Cookie:
    setHttpOnly, isHttpOnly</tt>
</ul>
<p> <b>Note:</b> For details about all the API changes look at the javadocs (once the spec is available from the jcp website). The exact method signatures aren't duplicated here. Instead just the names are here to give an idea of the kind of changes.]]>

</content>
</entry>
<entry>
<title>JSP sub-project now live</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/10/jsp_subproject.html" />
<modified>2007-10-31T07:52:45Z</modified>
<issued>2007-10-31T07:52:23Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.8516</id>
<created>2007-10-31T07:52:23Z</created>
<summary type="text/plain">Earlier in the year we had pre-announced that we would be doing a JSP sub-project to encourage re-use and contributions from external developers. Today we would like to officially announce the availability of the JSP project. For more details about...</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[<img src="https://jsp.dev.java.net/images/jsp_duke.gif">Earlier in the year we had <a href="http://blogs.sun.com/theaquarium/entry/new_glassfish_subprojects_for_jsp">
pre-announced</a> that we would be doing a JSP sub-project to encourage re-use and contributions from external developers. Today we would like to officially announce the availability of the JSP project. For more details about the project and how you can participate / contribute please visit <a href="https://jsp.dev.java.net">https://jsp.dev.java.net</a>. We would like to encourage people trying to build around the JSP compiler and runtime to participate in the project.]]>

</content>
</entry>
<entry>
<title>jMaki 1.0 now available</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/09/jmaki_10_now_av.html" />
<modified>2007-09-27T04:42:14Z</modified>
<issued>2007-09-27T04:42:09Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.8330</id>
<created>2007-09-27T04:42:09Z</created>
<summary type="text/plain">jMaki 1.0 now available</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[<img src="http://jmaki.com/images/jmaki-seal.png">Earlier in the week Greg Murray announced the 1.0 release of jMaki AJAX framework. The framework allows users to create JavaScript and CSS centric applications and also enables users to use widgets from various vendors like Google, Yahoo, DOJO to name a few using Java, PHP and Ruby. The tools plugins for both NetBeans (5.5 and 6) and Eclipse are available. Along with the tools plugins there are also some ant tasks that lets you setup a typical jMaki project for those that prefer to not depend on any of the tools. There is also theming and drag and drop support in the NetBeans plugins. See <a href="http://jmaki.com">jmaki.com</a> for more details and a live example of where it is being used today.
]]>

</content>
</entry>
<entry>
<title>GlassFish v2 / Java Application Platform SDK update 3 now available</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/09/glassfish_v2_ja_1.html" />
<modified>2007-09-18T19:36:55Z</modified>
<issued>2007-09-18T06:27:54Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.8262</id>
<created>2007-09-18T06:27:54Z</created>
<summary type="text/plain">GlassFish v2 is now available.</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[<img src="https://glassfish.dev.java.net/public/image/DukeForGlassFishV2-115_90px.png">Today we announced the general availability of GlassFish v2 and associated products notably the Java Application Platform SDK update 3. In the previous release of the SDK we had included the SWDP bits. We are no longer doing that with this release of the SDK. Instead you can get most of the components from the GlassFish update center. Already available via the update center are jMaki, Phobos, JRuby and Jersey (JAX-RS implementation). The rest of the components from the SWDP - DynamicFaces, ROME and ROME Propono will also be available soon. 
<br>
To get the components go in the <code>&lt;GLASSFISH_HOME&gt;/updatecenter/bin</code> directory and launch <code>updatetool</code>. 
<p>
<img src="http://blogs.sun.com/pramodg/resource/jrubymodule/JRuby_UpdateCenter.png">
<p>
Once the update tool is up and running choose the components that you want to install and just click on the install button. That's it. The instance of GlassFish will now be enabled with the components that you chose to install. You can build, deploy and run applications using the technologies just as before. Give it a try and let us know what you think about it.]]>

</content>
</entry>
<entry>
<title>Servlet 3.0 (JSR 315 approved)</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/07/servlet_30_jsr.html" />
<modified>2007-07-06T18:39:11Z</modified>
<issued>2007-07-06T18:30:51Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.7802</id>
<created>2007-07-06T18:30:51Z</created>
<summary type="text/plain">Servlet 3.0 (JSR 315) was filed and approved by the JCP executive committee. See voting results here. Unlike some of the previous releases of the specification which were just maintenance of the specification we will be revising the servlet API...</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[Servlet 3.0 (JSR 315) was filed and approved by the JCP executive committee. See voting results <a href="http://jcp.org/en/jsr/results?id=4292"> here</a>.
<p>
Unlike some of the previous releases of the specification  which were just maintenance of the specification we will be revising the servlet API to use some of the modern language features. One of the key features that is planned for this release is plugability and extensibility which is also one of the main theme for Java EE 6. 
<p>
We will be using the open source model for development of the implementation, making it available early and often via project GlassFish for developers to try out the new features and give us feedback. If you would like to participate in the JSR please fill in your nominations to become part of the expert group <a href="http://jcp.org/en/jsr/egnom?id=315">here</a>. Please note that you need to be a JCP member to be able to participate in the JSR. ]]>

</content>
</entry>
<entry>
<title>Project Jersey</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/06/project_jersey_1.html" />
<modified>2007-06-21T06:56:58Z</modified>
<issued>2007-06-20T19:37:54Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.7694</id>
<created>2007-06-20T19:37:54Z</created>
<summary type="text/plain">Announcing Project Jersey</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[Project <a href="https://jersey.dev.java.net/">Jersey</a> is the open source implementation of <a href="http://jcp.org/en/jsr/detail?id=311">JAX-RS: The Java API for RESTful Web Services</a> that we started earlier this year. A very early access of the implementation is now available in source and binary form. Please note that the expert group is still discussing a lot of the features so a lot is bound to change in the coming months. 
<p>See <a href="http://blogs.sun.com/sandoz/entry/announcing_jersey">Paul's blog</a> for an explanation about the name.]]>

</content>
</entry>
<entry>
<title>SWDP Release 2 now available</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2007/05/swdp_release_2.html" />
<modified>2007-05-11T20:54:23Z</modified>
<issued>2007-05-11T20:41:03Z</issued>
<id>tag:weblogs.java.net,2007:/blog/mode/220.7372</id>
<created>2007-05-11T20:41:03Z</created>
<summary type="text/plain">Release 2 of the Sun Web Developer Pack is now available. You can get it here. Some things that have changed since Release 1 are - Propono - a sub project of ROME that makes it easy to build an...</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Applications</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[Release 2 of the Sun Web Developer Pack is now available. You can get it  <a href="http://developers.sun.com/web/swdp">here</a>. Some things that have changed since <a href="http://blogs.sun.com/arungupta/entry/introducing_sun_web_developer_pack">Release 1</a> are - <br>
<ul>
<li> Propono - a sub project of ROME that makes it easy to build an atom client and also  add Atom publishing protocol (APP) support to your application. 
<li> NetBeans 6 support for REST implementation.
<li> Support for Tomcat 6. We now have support to use Tomcat 6 as a container for the SWDP
<li> Bug fixes to all the components that were there in release 1. 
</ul>
Give it a shot and send feedback to us.]]>

</content>
</entry>
<entry>
<title>Java SE 6 is out</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2006/12/java_se_6_is_ou.html" />
<modified>2006-12-13T07:59:30Z</modified>
<issued>2006-12-13T07:59:25Z</issued>
<id>tag:weblogs.java.net,2006:/blog/mode/220.6159</id>
<created>2006-12-13T07:59:25Z</created>
<summary type="text/plain">Java SE 6 is out.</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Services and XML</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[Java SE 6 was released in it's final form on Monday, 12th December to the world. Support for Web Services and XML data binding were a couple of the key new features added to the Java platform in this release. See <a href="http://weblogs.java.net/blog/vivekp/archive/2006/12/webservices_in.html"> Vivek's blog</a> for an example of the kind of Web Service endpoints and how to build Web Service clients using Java SE 6. 
<p>
Danny also has a list of the 
<a href="http://blogs.sun.com/dannycoward/entry/java_se_6_top_ten">
top ten new features</a> in Java SE 6.

<!-- Start of StatCounter Code -->
<script type="text/javascript" language="javascript">
var sc_project=1450714; 
var sc_invisible=1; 
var sc_partition=13; 
var sc_security="50df571e"; 
</script>

<script type="text/javascript" language="javascript" src="http://www.statcounter.com/counter/frames.js"></script><noscript><a href="http://www.statcounter.com/" target="_blank"><img  src="http://c14.statcounter.com/counter.php?sc_project=1450714&java=0&security=50df571e&invisible=1" alt="hit counter html code" border="0"></a> </noscript>
<!-- End of StatCounter Code -->]]>

</content>
</entry>
<entry>
<title>AJAX enabling Java Web applications</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2006/07/ajax_enabling_j.html" />
<modified>2006-07-18T23:07:35Z</modified>
<issued>2006-07-18T23:07:30Z</issued>
<id>tag:weblogs.java.net,2006:/blog/mode/220.5204</id>
<created>2006-07-18T23:07:30Z</created>
<summary type="text/plain">AJAX enabling Java Web Applications using jMaki or JSF-Extensions</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>J2EE</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[<p>
Sun recently announced two initiiatives at JavaOne 2006 to AJAX enable JSPs and JSF components - 
<a href="http://ajax.dev.java.net">jMaki</a>
    and 
<a href="http://jsf-extensions.dev.java.net"> JSF-Extensions</a>. When we announced the efforts, there was confusion about the two and it was viewed as the two technologies were competing. This document helps resolve the confusion and show that the two technologies are complimentary.
    
<p> 
Before we move to the discussion of jMaki and JSF-Extensions a quick note on JSP and JSF and when to use which one. Generally JSP is used when you want to have some dynamic content generated in your page but not necessarily
a lot of user interaction. JSF on the other hand is designed for user interaction and has a very well defined request processing life cycle. One key design requirement for JSF was scalability of applications. While this is generally true, however take care while designing applications as it can start off with some dynamic content and can quickly develop into an application that has a lot of user interaction. 
    
<p> jMaki and JSF-Extensions both AJAX enable JSPs and JSF components. So how do you decide when to use jMaki and when to use JSF-Extensions? jMaki and JSF-extensions work well together. Through this document this assertion will become more clear. 
<p>
<h2>jMaki</h2>
<p>
The name, jMaki, was derived from "j," for Java, and "maki," a Japanese word for “wrap” that is commonly used when descriping the roll type of sushi. jMaki acts as a wrapper for existing JavaScript libraries giving access to the JavaScript  widgets from JSP pages or JSF components. jMaki today provides access to common widgets like the Yahoo map widget and Google Search widgets among others. It also provides access to widgets from other AJAX 
frameworks like the Dojo toolkit. jMaki will support future JavaScript frameworks and it 
allows you to use these frameworks together in the same page. jMaki enables the use of these widgets in Java using it either as a JSP tag or as  a JSF component. jMaki is specially useful when your application uses only JSPs and Servlets and does not use JSF. jMaki when used as part of a JSF component has access to all the backend APIs in Java EE like persistence while adding dynamism to the front end of the appliation. Below is an example of how to use jMaki from within JSPs and JSF. 
    
<p>
<h3> jMaki sample in JSP</h3>
<p>
Below is a code snippet that shows how to use the scriptaculous inplace editor widget from within a JSP using jMaki - <br>
<code>
<pre>
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
 <font color="red">
<%@ taglib prefix="a" uri="http://java.sun.com/jmaki" %>
 </font>
 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
        &lt;title&gt;JSP Page&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;JSP Page&lt;/h1&gt;
       <font color="red">                
        &lt;a:ajax type="scriptaculous" name="inplace" service="inplaceService.jsp" value="click me to replace"/ &gt;
       </font>
     &lt;/body&gt;
&lt;/html&gt;

</pre>
</code>
<p>           
           The code in red above is of particular interest showing the usage of 
           jMaki. First we declare jMaki as a tag in the JSP page 
           by using the <code>@taglib</code> directive.
           Once we declare that we then use it in the JSP page by including it using 
           the <code>&lt;a:ajax .... &gt;</code> directive that specifies 
           type of Javascript library  that you want to use (in this case Scriptaculous) with 
           all the other attributes that are needed by jMaki. For details on the attributes to 
           use with the jMaki tag see 
           <a href="https://ajax.dev.java.net/developer.html">ajax.dev.java.net/developer.html</a>
    <p>
    <h3>jMaki sample in JSF</h3>
<p>
    Below is an example of how to use jMaki in a JSF data table from a resultset. The 
    same jMaki widget used above (the scriptacuous inplace editor) is used in the 
    data table here to set a new value for one of the columns of the table.
    <br>
    <code>
        <pre>
<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
<%@ taglib prefix="jsfExt" uri="http://java.sun.com/jsf/extensions/avatar" %>
<%@ taglib uri="http://java.sun.com/blueprints/ui" prefix="d" %>
  <font color="red">
<%@ taglib prefix="a" uri="http://java.sun.com/jmaki-jsf" %>
</font>

&lt;f:view&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Result Set Example</title>
  &lt;link rel="stylesheet" type="text/css"
       href='&lt;%= request.getContextPath() + "/result-set.css" %&gt;'>
  &lt;script type="text/javascript" 
          src='&lt;%= request.getContextPath() + "/devtime.js" %&gt;'></script>
&lt;/head&gt;
&lt;body  bgcolor="white"&gt;

  &lt;a href='<%= request.getContextPath() + "/index.html" %&gt;'>Back</a> to home page.
  &lt;hr&gt;
&lt;h3&gt;The Scroller Component</h3>

&lt;h:form id="form"&gt;  

Rendered via Faces components:

&lt;jsfExt:ajaxZone id="subview1" style="position: relative;" 
                 postInstallHook="postInstallHook"&gt;
  &lt;h:dataTable columnClasses="list-column-center,list-column-center,
                               list-column-center, list-column-center"
                  headerClass="list-header"
                   rowClasses="list-row-even,list-row-odd"
                   styleClass="list-background"
                           id="table"
                         rows="20"
                      binding="#{ResultSetBean.data}"
                        value="#{ResultSetBean.list}"
                          var="customer"&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Account Id"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText        id="accountId"
                     value="#{customer.accountId}"/&gt;
    &lt;/h:column&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Customer Name"/&gt;
      &lt;/f:facet&gt;
      <font color="red">
      &lt;a:ajax type="scriptaculous" name="inplace" value="#{customer.name}"/&gt;
    &lt;/h:column&gt;
    </font>
    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Symbol"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText        id="symbol"
                     value="#{customer.symbol}"/&gt;
    &lt;/h:column&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Total Sales"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText       id="totalSales"
                     value="#{customer.totalSales}"/&gt;
    &lt;/h:column&gt;

  &lt;/h:dataTable&gt;

&lt;/jsfExt:ajaxZone&gt;

&lt;jsfExt:ajaxZone id="subview2"&gt;
  &lt;d:scroller id="scroller" navFacetOrientation="NORTH" for="table" 
          actionListener="#{ResultSetBean.processScrollEvent}"&gt;
      &lt;f:facet name="header"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Account Id"/&gt;
          &lt;h:outputText value="Customer Name"/&gt;
          &lt;h:outputText value="Symbol"/&gt;
          &lt;h:outputText value="Total Sales"/&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="next"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Next"/&gt;
          &lt;h:graphicImage url="/images/arrow-right.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="previous"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Previous"/&gt;
          &lt;h:graphicImage url="/images/arrow-left.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="number"&gt;
         &lt;!-- You can put a panel here if you like --&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="current"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:graphicImage url="/images/duke.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;
  &lt;/d:scroller&gt;
  &lt;script type='text/javascript'&gt;
    document.forms[0].submit = function() {}; 
    var a = $('form:subview2').getElementsByTagName('a'); 
    $A(a).each(function(e) { 
      new Faces.Command(e, 'mousedown', { subtrees: 'form:table,form:subview2' }); 
    }); 
  &lt;/script&gt;
  &lt;/jsfExt:ajaxZone&gt;
&lt;/h:form&gt;

&lt;/body&gt;
&lt;/html&gt;
&lt;/f:view&gt;

        </pre>
    </code>
<p>    
    In the example above again looking at the code in red we see how to use jMaki
    inplace editor on one of the columns of the resultset data table.
    
    <h2>JSF-Extensions</h2>
<p>
    JSF-Extensions is another project that is intended to AJAX enable JSF 
    components. The JSF-Extensions project builds on the JSF framework.
    If the application that you want to AJAX enable is already using the JSF 
    framework then jsf-extensions is a good choice. jsf-extensions introduces the notion
    of partial updatable sub-views. jsf-extensions is used as a tag library and introduces 
    the concept of ajaxZones that are used to define subtrees that allow partial updates
    rather than the traditional full page refresh. The approach taken by JSF-Extensions is to 
    create a  custom Lifecycle <code>AjaxLifecycle</code> that decoarates the standard
    <code>Lifecycle</code> to AJAX enable a JSF application. The 
    <code>AjaxLifecycle</code> checks to see if a request is an AJAX
    request by inspecting request headers to see if it is an asynchronous request.
    If the header is not set then the standard Lifecycle methods are invoked that does
    normal JSF processing. Below we see an example of how to use jsf-extensions.
    
    <p>
    <code>
        <pre>
<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
  <font color="red">
<%@ taglib prefix="jsfExt" uri="http://java.sun.com/jsf/extensions/avatar" %>
</font>
<%@ taglib uri="http://java.sun.com/blueprints/ui" prefix="d" %>

<%@ taglib prefix="a" uri="http://java.sun.com/jmaki-jsf" %>

&lt;f:view&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Result Set Example</title>
  &lt;link rel="stylesheet" type="text/css"
       href='&lt;%= request.getContextPath() + "/result-set.css" %&gt;'>
  &lt;script type="text/javascript" 
          src='&lt;%= request.getContextPath() + "/devtime.js" %&gt;'></script>
&lt;/head&gt;
&lt;body  bgcolor="white"&gt;

  &lt;a href='<%= request.getContextPath() + "/index.html" %&gt;'>Back</a> to home page.
  &lt;hr&gt;
&lt;h3&gt;The Scroller Component</h3>

&lt;h:form id="form"&gt;  

Rendered via Faces components:
<font color="red">
&lt;jsfExt:ajaxZone id="subview1" style="position: relative;" 
                 postInstallHook="postInstallHook"&gt;
</font>
  &lt;h:dataTable columnClasses="list-column-center,list-column-center,
                               list-column-center, list-column-center"
                  headerClass="list-header"
                   rowClasses="list-row-even,list-row-odd"
                   styleClass="list-background"
                           id="table"
                         rows="20"
                      binding="#{ResultSetBean.data}"
                        value="#{ResultSetBean.list}"
                          var="customer"&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Account Id"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText        id="accountId"
                     value="#{customer.accountId}"/&gt;
    &lt;/h:column&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Customer Name"/&gt;
      &lt;/f:facet&gt;
      
      &lt;a:ajax type="scriptaculous" name="inplace" value="#{customer.name}"/&gt;
    &lt;/h:column&gt;
    
    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Symbol"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText        id="symbol"
                     value="#{customer.symbol}"/&gt;
    &lt;/h:column&gt;

    &lt;h:column&gt;
      &lt;f:facet           name="header"&gt;
        &lt;h:outputText  value="Total Sales"/&gt;
      &lt;/f:facet&gt;
      &lt;h:outputText       id="totalSales"
                     value="#{customer.totalSales}"/&gt;
    &lt;/h:column&gt;

  &lt;/h:dataTable&gt;

&lt;/jsfExt:ajaxZone&gt;
<font color="red">
  &lt;jsfExt:ajaxZone id="subview2"&gt;
</font>
  &lt;d:scroller id="scroller" navFacetOrientation="NORTH" for="table" 
          actionListener="#{ResultSetBean.processScrollEvent}"&gt;
      &lt;f:facet name="header"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Account Id"/&gt;
          &lt;h:outputText value="Customer Name"/&gt;
          &lt;h:outputText value="Symbol"/&gt;
          &lt;h:outputText value="Total Sales"/&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="next"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Next"/&gt;
          &lt;h:graphicImage url="/images/arrow-right.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="previous"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:outputText value="Previous"/&gt;
          &lt;h:graphicImage url="/images/arrow-left.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="number"&gt;
         &lt;!-- You can put a panel here if you like --&gt;
      &lt;/f:facet&gt;

      &lt;f:facet name="current"&gt;
        &lt;h:panelGroup&gt;
          &lt;h:graphicImage url="/images/duke.gif" /&gt;
        &lt;/h:panelGroup&gt;
      &lt;/f:facet&gt;
  &lt;/d:scroller&gt;
  &lt;script type='text/javascript'&gt;
    document.forms[0].submit = function() {}; 
    var a = $('form:subview2').getElementsByTagName('a'); 
    $A(a).each(function(e) { 
      new Faces.Command(e, 'mousedown', { subtrees: 'form:table,form:subview2' }); 
    }); 
  &lt;/script&gt;
  &lt;/jsfExt:ajaxZone&gt;
&lt;/h:form&gt;

&lt;/body&gt;
&lt;/html&gt;
&lt;/f:view&gt;

        </pre>
    </code>
<p>
The code in red above is of particular interest showing the usage of jsf-extensions.
First we declare jsf-extensions component in the JSP page by using the @taglib 
directive. Once we declare that we then use jsf-extensions in the JSP page by 
including it using the <code>&lt;jsfExt:ajaxZone .... &gt;</code> directive. For details on the attributes 
to use with the jsf-extensions tag see 
<a href="https://jsf-extensions.dev.java.net/nonav/mvn/ajax/tlddocs/index.html">jsf-extensions.dev.java.net/nonav/mvn/ajax/tlddocs/index.html
</a>
    <p>
    
    <h2>Conclusion</h2>
<p>
    As seen above jMaki and jsf-extensions work well with each other. Also there are 
    situations where you could use on or the other depending on the architecture of 
    the application.]]>

</content>
</entry>
<entry>
<title>JAX-WS 2.0, JAXB 2.0 and Common Annotations now final</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2006/04/jaxws_20_jaxb_2.html" />
<modified>2006-04-19T07:21:27Z</modified>
<issued>2006-04-19T07:19:37Z</issued>
<id>tag:weblogs.java.net,2006:/blog/mode/220.4530</id>
<created>2006-04-19T07:19:37Z</created>
<summary type="text/plain">JAX-WS 2.0 (JSR 224) and JAXB (JSR 222) and Common Annotations (JSR 250) now final.</summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Web Services and XML</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[The SE / EE executive committee for the JCP approved the final versions of the JAX-WS 2.0 (<a href="http://jcp.org//en/jsr/results?id=3748">JSR 224</a>), JAXB 2.0 (<a href="http://jcp.org//en/jsr/results?id=3746">JSR 222</a>) and Common Annotations (<a href="http://jcp.org//en/jsr/results?id=3750">JSR 250</a>)
This is a very important milestone for the development of Web Services in the Java Platform. JAX-WS 2.0 and JAXB 2.0 are part of the Java SE 6 platform and the Java EE 5 platform.]]>

</content>
</entry>
<entry>
<title>Common Annotations for the Java Platform</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/mode/archive/2005/06/common_annotati_1.html" />
<modified>2008-01-02T17:42:16Z</modified>
<issued>2005-06-23T06:02:20Z</issued>
<id>tag:weblogs.java.net,2005:/blog/mode/220.2636</id>
<created>2005-06-23T06:02:20Z</created>
<summary type="text/plain">Common Annotations for the Java Platform Public Review </summary>
<author>
<name>mode</name>

<email>Rajiv.Mordani@Sun.COM</email>
</author>
<dc:subject>Community: Java Web Services and XML</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/mode/">
<![CDATA[The public review of Common Annotations for the Java Platform is now available at http://jcp.org/aboutJava/communityprocess/pr/jsr250/index.html. Please send comments / feedback to <a href="mailto: jsr-250-comments@jcp.org">jsr-250-comments@jcp.org</a>. The review closes on July 25th 2005. ]]>

</content>
</entry>

</feed>