<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
  <title>Mark A. Basler's Weblog</title>
  <link>http://blogs.sun.com/basler/</link>
      
    <description>Mark A. Basler's Weblog</description>
  <language>en-us</language>
  <copyright>Copyright 2007</copyright>
  <lastBuildDate>Mon, 13 Aug 2007 10:20:45 -0700</lastBuildDate>
  <generator>Apache Roller 4.0.1.1 (BSC) (20091027075624)</generator>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sun/markabasler" type="application/rss+xml" /><feedburner:browserFriendly></feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_second_article_in_a</guid>
    <title>The second article in a series on Mashups Styles has just been released..</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_second_article_in_a</link>
        <pubDate>Mon, 13 Aug 2007 10:20:45 -0700</pubDate>
    <category>Java</category>
            <description>In the article "&lt;a href="http://java.sun.com/developer/technicalArticles/J2EE/mashup_2/" target="blog"&gt;Mashup Styles, Part 2: Client-Side Mashups&lt;/a&gt;" you'll learn how a client-side mashup works, see an example of a client-side mashup in Pet Store -- as is the case in the previous article, this article refers to the Java Pet Store 2.0 application simply as Pet Store -- and explore some of the considerations related to the client-side mashup style. In addition, you'll learn how to make services and content on your site available to others for use in client-side mashups.
&lt;br&gt;&lt;br&gt;
The &lt;a href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=5315&amp;expandFolder=5315&amp;folderID=5315" target="blog"&gt;BluePrints Java Pet Store 2.0 Reference Application&lt;/a&gt; is used as an example and the source code can be downloaded for the user to take a closer look at the code. 
&lt;br&gt;&lt;br&gt;
If you want all the BluePrints source in a convenient development environment with ant scripts to facilitate the deployment and modification of the code, you can download the &lt;a href="http://java.sun.com/javaee/downloads/index.jsp" target="blog"&gt;Java EE 5 SDK &lt;/a&gt; now and be up and running very quickly.
&lt;br&gt;&lt;br&gt;
Hope this helps...
&lt;br&gt;&lt;br&gt;
Thanks - Mark
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_first_article_in_a</guid>
    <title>The first article in a series on Mashups Styles has just been released,</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_first_article_in_a</link>
        <pubDate>Wed, 16 May 2007 09:50:00 -0700</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>java</category>
    <category>mashup</category>
    <category>proxy</category>
    <category>web2.0</category>
            <description>The article "&lt;a target="blogs"
href="http://java.sun.com/developer/technicalArticles/J2EE/mashup_1/"&gt;Mashup
Styles, Part 1: Server-Side Mashups&lt;/a&gt;" focuses on the server-side
proxy style of mashup, where the client, usually a browser,
communicates to a server-side proxy component that then communicates to
the mashup service.&amp;nbsp; The response from the mashup service is
returned to the server-side proxy, which can be validated and/or cached
for better performance.&amp;nbsp; Once this server-side proxy component has
performed its function, the response is then sent back to the
client.&amp;nbsp; This type of mashup helps work around the domain of
origin security constraint that the XMLHttpRequest has and mitigates
the risk of using a client-side mashup facilitated by creating dynamic
script tags in the web pages using a scripting language.&lt;br&gt;
&lt;br&gt;
The&lt;a target="blogs" href="https://petstore.dev.java.net/"&gt; BluePrints
Java Pet Store 2.0&lt;/a&gt; reference application is used as an example and
the source code can be &lt;a target="blogs"
href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=5315&amp;amp;expandFolder=5315&amp;amp;folderID=4743"&gt;downloaded&lt;/a&gt;
for the user to take a closer look at the code.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
If you want all the BluePrints source in a convenient development
environment with ant scripts to facilitate the deployment and
modification of the code, you can &lt;a href="http://java.sun.com/javaee/downloads/index.jsp" target="blogs"&gt;download the Java EE 5 SDK now&lt;/a&gt; and be up and running very quickly.&lt;br&gt;
&lt;br&gt;
Hope this helps...&lt;br&gt;
&lt;br&gt;
Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/introducton_to_petstore_2_0</guid>
    <title>Introduction to Petstore 2.0 article just released...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/introducton_to_petstore_2_0</link>
        <pubDate>Thu, 22 Mar 2007 14:14:42 -0700</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>javaee</category>
    <category>jsf</category>
    <category>petstore</category>
    <category>web2.0</category>
            <description>The article "&lt;a href="http://java.sun.com/developer/technicalArticles/J2EE/petstore/" target="blogs"/&gt;Introducing the Java Pet Store 2.0 Application&lt;/a&gt;" has just been released on java.sun.com.  
The article walks you through page by page and explains some of the functionality that has been implemented and provides an overview of the approach that we took.
&lt;br&gt;&lt;br&gt;
We have also hosted the &lt;a href="http://webdev2.sun.com/petstore/faces/index.jsp" target="blog"&gt;Petstore 2.0&lt;/a&gt; and the &lt;a href="http://webdev2.sun.com/bpcatalog/" target="blog"&gt;BluePrints Solutions Catalog&lt;/a&gt; reference applications live on developers.sun.com.  This allows you to play with them before you download the source to see how it was actually coded.  These applications and more are hosted as part of &lt;a href="http://webdev2.sun.com/" target="blog"&gt;Sun's Web Developer Resource Center&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;
Take a few minutes and check them out...
&lt;br&gt;&lt;br&gt;
Hope this helps...
&lt;br&gt;&lt;br&gt;
Thanks - Mark
&lt;br&gt;&lt;br&gt;
</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/validation_for_petstore_2_0</guid>
    <title>Validation for Petstore 2.0's uploaded data through Ajax...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/validation_for_petstore_2_0</link>
        <pubDate>Wed, 31 Jan 2007 12:02:02 -0800</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>dojo</category>
    <category>fileupload</category>
    <category>javaee5</category>
    <category>validation</category>
            <description>Recently I  have been working on refactoring the error handling of the
just released &lt;a target="blog"
href="https://petstore.dev.java.net/"&gt;Petstore 2.0&lt;/a&gt; application.&amp;nbsp; I
started by updating the validation mechanism for items that a Seller
could post for sale.&amp;nbsp; The uploaded form is submitted using an Ajax
call in multi-part mime format.&amp;nbsp; The Ajax file upload uses the
Dojo library to submit the form and I packaged all the functionality
into and easy to use&lt;a target="blog"
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt; JSF 1.2
component&lt;/a&gt; available through the Java EE 5 version of the &lt;a
target="blog" href="https://bpcatalog.dev.java.net/"&gt;Java Blueprints
Solutions Catalog&lt;/a&gt;&amp;nbsp; &lt;br&gt;
&lt;br&gt;
The validation of the form has multiple facets which are as follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Are the required fields entered in the proper format before the
form is submitted (client-side validation)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Is the Captchas value valid&lt;/li&gt;
&lt;li&gt;Is the size of the uploaded image too large&lt;/li&gt;
&lt;li&gt;Are the required fields entered in the proper format after the
form is submitted (server-side validation)&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br&gt;
Client Side Validation&lt;/span&gt;&lt;br&gt;
The first part was completed using typical web techniques by coding
Javascript to check the form's data before it is submitted.&amp;nbsp; If
any of the required fields weren't entered or not in the proper format
a message is shown to the user and the form submission is
terminated.&amp;nbsp; I chose to show all the errors on the page to the
user at one time versus showing the user one error at a time.&amp;nbsp; I
think this is a far better technique, so the user can try and fix all
the errors at once, instead of fixing one at a time and then
resubmitting the form to see if there are any other errors.&amp;nbsp; Part
of this validation included checking to make sure the uploaded file has
the proper suffix (.jpg, .gif or .png) and that the description field
didn't contain a script or link tag for security.&amp;nbsp; If Javascript
files were permitted to be uploaded or display fields where allowed to
have script elements in them then there is a potential security hole
that hackers could use to hijack the page or misuse your resources.  Below is an example of the client-side validation message that could be presented to a user:&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img src="http://blogs.sun.com/basler/resource/validation.jpg" target="blog" alt="Petstore 2.0 Seller Client-Side Validation"
title="Petstore 2.0 Seller Client-Side Validation"/&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Captchas Validation&lt;/span&gt;&lt;br&gt;
The Captchas functionality was coded by &lt;a target="blog"
href="http://wiki.java.net/bin/view/People/YutakaYoshida"&gt;Yutaka
Yoshida&lt;/a&gt;. The Captchas validation was implemented utilizing a
servlet filter.&amp;nbsp; The CaptchaValidateFilter checks the uploaded
Captchas value that is sent in a cookie (so the multi-part mime stream
doesn't have to be touched) and validates it against a corresponding
string that is set in the session when the Seller upload page is
rendered.&amp;nbsp; If the case insensitive values matches, then the upload
proceeds.&amp;nbsp; If not, then a status object is set with the error so
it can be read by the client and shown to the user, then the upload is
discontinued.&lt;br&gt;
&lt;br&gt;
&lt;br style="font-weight: bold;"&gt;
&lt;span style="font-weight: bold;"&gt;Upload Size Validation&lt;/span&gt;&lt;br&gt;
For maintenance and security purposes, I put a limit on the upload size
of approximately 100K.&amp;nbsp; I didn't want the users to be able to
upload monstrous images which could cause a maintenance problem in
terms of disk space and put unnecessary load on the server, which could
cause a form of denial of service attack.&amp;nbsp; Since the upload is in
multi-part mime format, allowances has to be made for accompanying data
and multi-part mime overhead.&amp;nbsp; I limited the overall upload to
150K which should provide ample room for a 100K image to be
uploaded.&amp;nbsp; If the upload size was less than 150K,&amp;nbsp; then the
upload proceeds.&amp;nbsp; If
not, then a status object is set with the error so it can be read by
the client and shown to the user, then the upload is
discontinued.&amp;nbsp; I added this validation check to the servlet filter
so processing would stop as early as possible, if the upload was too
large.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Server Side Validation&lt;/span&gt;&lt;br&gt;
On the server side the validation that was performed on the client is
reimplemented.&amp;nbsp; This functionality is necessary to catch cases
where users disable Javascript on their browser or try to hack a
submission by sending the request directly to the server using some
alternate method.&amp;nbsp; The risk of submissions being sent by the
browser without Javascript turned on is mitigated by performing the
actual submission of the form using Javascript, but utilizing other
tools like plug ins, this preliminary defense can easily be
overcome.&amp;nbsp; With server-side validation you really must show all
the errors for the upload at one time versus showing the user one error
at a time. If you don't then the user must keep submitting the data and
endure the propagation delay to see the next error.&amp;nbsp; This
functionality was implemented in each entity's specific class, for
example, the Address class validates its own data, but since the Item
class is a composite class, it validates is own data and calls the
validation methods for any of the classes that it contains, like the
Address class.&lt;br&gt;
&lt;br&gt;
This is just an quick introduction to the validation techniques that
were used in the Petstore 2.0 Seller file upload page.&amp;nbsp; We will be
writing a full blown article on the uploading of data that will cover
these topics and more in greater depth and will also include coding
samples.&lt;br&gt;
&lt;br&gt;
To get notified of the release for any of Java Blueprints
projects,&amp;nbsp;
you can check the &lt;a href="https://blueprints.dev.java.net/servlets/ProjectRSS?type=news" target="blogs"&gt;RSS feed&lt;/a&gt; located on &lt;a href="https://blueprints.dev.java.net/" target="blogs"&gt;blueprints.dev.java.net.&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Hope this helps ...&lt;br&gt;
&lt;br&gt;
Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/including_mashups_like_digg_on</guid>
    <title>Adding Mashups like Digg to your page</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/including_mashups_like_digg_on</link>
        <pubDate>Wed, 24 Jan 2007 14:35:44 -0800</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>blueprints</category>
    <category>digg</category>
    <category>jsf</category>
    <category>mashup</category>
            <description>Recently I added a mashup to Digg in the soon to be released &lt;a
target="blog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/index.html"&gt;Java
Blueprint Solutions Catalog&lt;/a&gt; viewer.&amp;nbsp; It was as easy as
formulating a URL
with the appropriate query string that is dynamically populated as the
user clicks on the different articles/examples that the viewer
combines.&amp;nbsp;&amp;nbsp; &lt;br&gt;
&lt;br&gt;
&lt;img alt="Blueprints Solutions Catalog Viewer"
title="Blueprints Solutions Catalog Viewer" src="http://blogs.sun.com/basler/resource/viewer2_0.jpg"
style="width: 600px; height: 503px;"&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
When the Digg image is clicked then the required information is sent to
digg.com in the query string of the
request.&amp;nbsp; The Digg site then parses the request and continues
prompting the user.&amp;nbsp; If the article exists, Digg will display it
and
prompt the user for comments (below), if it doesn't exist then the user
can
submit the article for others to Digg.&amp;nbsp;&amp;nbsp; For example this &lt;a
target="blog"
href="http://digg.com/submit?phase=2&amp;amp;topic=programming&amp;amp;url=http%3A//blueprints.dev.java.net/bpcatalog/ee5/ajax/extendingRenderFunctionality.html&amp;amp;title=Extending%20Default%20Renderer%20Functionality%20for%20JSF%20Components&amp;amp;bodytext=Discuss%20how%20to%20extend%20the%20default%20renderer%20in%20a%20JSF%20custom%20component"&gt;Article
URL&lt;/a&gt; will show something like the page below from Digg:&lt;br&gt;
&lt;br&gt;
&lt;img alt="Digg mashup result page" title="Digg mashup result page"
src="http://blogs.sun.com/basler/resource/digg.jpg" style="width: 600px; height: 497px;"&gt;&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;
&lt;hr style="width: 100%; height: 2px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br&gt;
&lt;/span&gt;When creating mashups, there are different types of techniques
to consider like, client-side mashups,
server-side mashups and delegated mashups.&amp;nbsp; Each have specific
applications that they are suited for and are briefly described below:&lt;br&gt;
&lt;br style="font-weight: bold;"&gt;
&lt;span style="font-weight: bold;"&gt;Client-Side Mashup&lt;/span&gt;&lt;br&gt;
A client-side mashup is where the integration/interaction with the
mashup occurs in the client, like a browser.&amp;nbsp; &lt;a target="blog"
href="http://www.google.com/apis/maps/"&gt;Google Maps&lt;/a&gt; is a great
example of a client-side mashup.&amp;nbsp; To utilize Google Maps you
include Google's Javascript file in your web page and use the &lt;a
target="blog"
href="http://www.google.com/apis/maps/documentation/reference.html"&gt;document
API&lt;/a&gt; to create a wide variety of user interactive maps. Google also
provides &lt;a target="blog"
href="http://www.google.com/apis/maps/documentation/#Examples"&gt;numerous
examples&lt;/a&gt; to get your page prototyped quickly.&amp;nbsp; The &lt;a
target="blog" href="https://bpcatalog.dev.java.net/"&gt;Blueprints
Solutions Catalog&lt;/a&gt; wrapped the &lt;a target="blog"
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt;Google Maps
functionality in an easy to use JSF 1.2 component&lt;/a&gt; that you can
utilized by simply packaging the component jar with your
application.&amp;nbsp; This component jar is also used in the &lt;a
target="blog" href="https://petstore.dev.java.net/"&gt;Petstore 2.0&lt;/a&gt;
reference application, so you can take a look at the component in
action.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Server-Side Mashup&lt;/span&gt;&lt;br&gt;
A server-side mashup has a server component that acts as a proxy to an
exposed service.&amp;nbsp; The server-side component(s) could add custom
functionality to an exposed service, consolidate multiple exposed
services or just pass through the result directly to the client for
use.&amp;nbsp; This type of mashup is used in the &lt;a target="blog"
href="https://petstore.dev.java.net/"&gt;Petstore 2.0&lt;/a&gt; reference
application to retrieve the GeoCoding of an address for presentation on
the Google Map and for retrieving an RSS feed for the news bar that is
in the header of each page.&amp;nbsp; The &lt;a target="blog"
href="https://bpcatalog.dev.java.net/"&gt;Blueprints
Solutions Catalog&lt;/a&gt; wrapped the&amp;nbsp;&lt;a target="blog"
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt; RSS bar
into an easy to use JSF 1.2 component&lt;/a&gt; that you can
utilized by simply packaging the component jar with your
application. &lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Delegated Mashup&lt;/span&gt;&lt;br&gt;
A delegated mashup is when information is forwarded to a site that then
presents the result for the request.&amp;nbsp; Like Digg, there are many
other sites
that use this form of interaction.&amp;nbsp; PayPal is another example of a
delegated mashup where a request is submitted to the PayPal site and
then they continue prompting the user.&amp;nbsp; Some sites like PayPal
even provide a parameter for a call-back URL in the query string of the
request.&amp;nbsp; Once PayPal finishes the transaction, a request is sent
to the call-back URL with optional custom fields populated.&amp;nbsp; The &lt;a
target="blog" href="https://bpcatalog.dev.java.net/"&gt;Blueprints
Solutions Catalog&lt;/a&gt;
wrapped the &lt;a target="blog"
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt;PayPal
functionality in an easy to use JSF 1.2 component&lt;/a&gt; that you can
utilized by simply packaging the component jar with your
application.&amp;nbsp; This component jar is also used in the &lt;a
target="blog" href="https://petstore.dev.java.net/"&gt;Petstore 2.0&lt;/a&gt;
reference application, so you can take a look at the component in
action.&lt;br&gt;
&lt;br&gt;
This is just an quick introduction to mashup techniques that
were used in the &lt;a target="blog"
href="https://bpcatalog.dev.java.net/"&gt;Blueprints Solutions Catalog&lt;/a&gt;
and the &lt;a target="blog" href="https://petstore.dev.java.net/"&gt;Petstore
2.0&lt;/a&gt; reference applications.&amp;nbsp; We will be
writing a full blown article on this topic that will cover
these subjects and more in greater depth and will also include coding
samples.&lt;br&gt;
&lt;br&gt;
To get notified of the release for any of Java Blueprints
projects,&amp;nbsp;
you can check the &lt;a href="https://blueprints.dev.java.net/servlets/ProjectRSS?type=news" target="blogs"&gt;RSS feed&lt;/a&gt; located on &lt;a href="https://blueprints.dev.java.net/" target="blogs"&gt;blueprints.dev.java.net.&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Hope this helps ...&lt;br&gt;
&lt;br&gt;
Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_last_articles_in_series</guid>
    <title>The last articles in the series named Hands-On Java EE 5 with AJAX has just be released on java.sun.com</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_last_articles_in_series</link>
        <pubDate>Mon, 27 Nov 2006 10:58:33 -0800</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>balloon</category>
    <category>javaee5</category>
    <category>jsf</category>
    <category>phaselistener</category>
    <category>popup</category>
            <description>The last 2 articles in a 5 article series have just been released on
java.sun.com. They are made to target developers who are looking at
retrofitting a legacy application with AJAX. The later articles
introduce JSF components and customizations. It is basically showing
how to limit the liability of introducing the latest technologies into
an already existing application.
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
The four article series is named "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/index.html"&gt;Hands-On
Java EE 5&lt;/a&gt;" and contains the following articles:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;AJAX Design Strategies&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/AJAX/DesignStrategies/index.html"&gt;AJAX
Design Strategies&lt;/a&gt;"
talks about different
design strategies on implementing AJAX functionality. This article is
accompanied by the first articles in a five article series on "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/"&gt;Hands-On
Java EE 5&lt;/a&gt;"
&lt;br&gt;
The article is written by Ed Ort and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt; &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an AJAX-Enabled Application,
a Do-It-Yourself Approach&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/do-it-yourself/"&gt;Creating
an AJAX-Enabled Application, a Do-It-Yourself Approach&lt;/a&gt;", the second
in a five article series talks about how to add AJAX functionality to a
legacy application. &lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an AJAX-Enabled Application,
a Toolkit Approach&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/toolkit/"&gt;Creating
an AJAX-Enabled Application, a Toolkit Approach&lt;/a&gt;", the third in the
series talks about how to add AJAX functionality to a
legacy application using Dojo. &lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an Ajax-Enabled Application,
a Component Approach&lt;/span&gt;&lt;br&gt;
The article &lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/compA/"&gt;Creating
an Ajax-Enabled Application, a Component Approach&lt;/a&gt;, the fourth in
the series talks about an
implementation where you create a custom JSF component to generate the
JavaScript that executes the Ajax interactions on the client side. The
JSF component is packaged with the application bundle and accessed
directly. A Java Servlet on the server side responds to the Ajax
request. &lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an Ajax-Enabled Application,
a Phase Listener Approach &lt;br&gt;
&lt;/span&gt;The article &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/compB/"&gt;Creating
an Ajax-Enabled Application, a Phase Listener Approach&lt;/a&gt;, the fifth
in the series talks about an implementation where you expand the
JavaServer Faces approach to
include a phase listener component on the server that fufills the
client component's resource requirements.&lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Hope this helps...&lt;br&gt;
&lt;br&gt;
Thanks - Mark&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_first_articles_in_series</guid>
    <title>The first articles in series named Hands-On Java EE 5 with AJAX has just be released on java.sun.com</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_first_articles_in_series</link>
        <pubDate>Wed, 11 Oct 2006 11:19:03 -0700</pubDate>
    <category>Java</category>
            <description>The first articles in a 6 article series have just been released on
java.sun.com. They are made to target developers who are looking at
retrofitting a legacy application with AJAX. The later articles
introduce JSF components and customizations. It is basically showing
how to limit the liability of introducing the latest technologies into
an already existing application.
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
The six article series is named "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/index.html"&gt;Hands-On
Java EE 5&lt;/a&gt;" and currently contains the following articles:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;AJAX Design Strategies&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/AJAX/DesignStrategies/index.html"&gt;AJAX
Design Strategies&lt;/a&gt;"
talks about different
design strategies on implementing AJAX functionality. This article is
accompanied by the first articles in a five article series on "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/"&gt;Hands-On
Java EE 5&lt;/a&gt;"
&lt;br&gt;
The article is written by Ed Ort and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt; &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an AJAX-Enabled Application,
a Do-It-Yourself Approach&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/do-it-yourself/"&gt;Creating
an AJAX-Enabled Application, a Do-It-Yourself Approach&lt;/a&gt;", the first
in a six article series talks about how to add AJAX functionality to a
legacy application. &lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Creating an AJAX-Enabled Application,
a Toolkit Approach&lt;/span&gt;&lt;br&gt;
The article "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/legacyAJAX/toolkit/"&gt;Creating
an AJAX-Enabled Application, a Toolkit Approach&lt;/a&gt;", the second in a
six article series talks about how to add AJAX functionality to a
legacy application using Dojo. &lt;br&gt;
The article is written by Rick Palkovic and &lt;a
href="http://blogs.sun.com/basler/"&gt;Mark Basler&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Future articles will be released in the upcoming weeks and will be
accessible from the main "&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/hands-on/index.html"&gt;Hands-On
Java EE 5&lt;/a&gt;" page.&lt;br&gt;
&lt;br&gt;
Hope this helps...&lt;br&gt;
&lt;br&gt;
Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/cvs_server_and_solaris_10</guid>
    <title>Migrating your CVS server to Solaris 10</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/cvs_server_and_solaris_10</link>
        <pubDate>Tue, 5 Sep 2006 10:28:50 -0700</pubDate>
    <category>Java</category>
            <description>I have recently upgraded my server to Solaris 10.&amp;nbsp; I went to
re-install my CVS pserver and ran into a quick snag.&amp;nbsp; Solaris 10
no longer manages services by editing the inetd.conf&amp;nbsp; file.&lt;br&gt;
&lt;br&gt;
I tried and Google the problem, but got a lot of irrelevant hits, I eventually found that I had to use inetconv to convert the inetd.conf
file to the new SMF format.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
An edited excerpt from the inetd Solaris 10 man page is below:&lt;br&gt;
&lt;br&gt;
In Solaris 10, services are no longer managed by editing the inetd
configuration file, inetd.conf.&amp;nbsp; Instead, you use inetconv to
convert
the configuration file content into SMF format services, then manage
these services using inetadm and svcadm. Once a service has been
converted by inetconv, any changes to the legacy data in the inetd
config file will not become effective. However, inetd does alert the
administrator when it notices change in the configuration file.&lt;br&gt;
&lt;br&gt;
More information can be found in BigAdmin's tech tip "&lt;a
href="http://www.sun.com/bigadmin/content/submitted/tcp_wrap_solaris10.html" target="blog"&gt;Enabling
TCP Wrappers in the Solaris 10 Operating System&lt;/a&gt;".&lt;br&gt;
&lt;br&gt;
I did update the &lt;a href="http://gd.tuwien.ac.at/softeng/cvs/manual/cvs_21.html#SEC178" target="blog"&gt;CVS twiki manual&lt;/a&gt;, but wanted to make sure others
didn't have any problems, so I reposted the excerpt here.&lt;br&gt;
&lt;br&gt;
Hope this helps - Mark&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/two_articles_about_javaserver_faces</guid>
    <title>Two articles about JavaServer Faces (JSF) and AJAX where recently published on java.sun.com...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/two_articles_about_javaserver_faces</link>
        <pubDate>Wed, 30 Aug 2006 09:39:52 -0700</pubDate>
    <category>Java</category>
            <description>Recently, two useful articles on JSF and AJAX have been released on
java.sun.com to appeal to a developer who is experimenting with AJAX
enabled JSF components.&amp;nbsp;&amp;nbsp; They are as follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/jsf_resources/"&gt;Accessing
Resources From JavaServer Faces Custom Components&lt;/a&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a
href="http://java.sun.com/developer/technicalArticles/J2EE/jsf_renderers/"&gt;Using
Default Renderers in JavaServer Faces Technology to Add AJAX
Functionality to Existing Components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
The articles depict advanced techniques in a way that should be
understood by a developer that has limited experience developing JSF
components.&lt;br&gt;
&lt;br&gt;
More advanced write-ups on &lt;a
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/index.html"&gt;JSF,
AJAX&lt;/a&gt; and the &lt;a
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/index.html"&gt;Java
Persistence API&lt;/a&gt; can be found in the &lt;a
href="https://bpcatalog.dev.java.net/"&gt;Java BluePrints Solutions
Catalog&lt;/a&gt;.&amp;nbsp; There are also useful &lt;a
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt;AJAX
enabled JSF component libraries&lt;/a&gt; available for use in your own
applications.&lt;br&gt;
&lt;br&gt;
Hope this helps - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_java_blueprints_team_has</guid>
    <title>The Java BluePrints Team has just corrected and unintentional omission in the Java BluePrints Solutions Catalog Java EE 5</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_java_blueprints_team_has</link>
        <pubDate>Fri, 18 Aug 2006 14:09:58 -0700</pubDate>
    <category>Java</category>
            <description>The Java BluePrints Team has just corrected and unintentional omission
in the &lt;a target="bpcatalog" href="https://bpcatalog.dev.java.net/"&gt;Java
BluePrints Solutions Catalog Java EE 5&lt;/a&gt; version.&amp;nbsp; In the
previous versions of the Java EE 5 Solutions Catalog, only the Java EE
5 components had their source code included.&amp;nbsp; The J2EE 1.4
components binary library was included, but the source was accidently
omitted.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
We have just created a second distribution that includes the&lt;a
target="bpcatalog"
href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=4144&amp;amp;expandFolder=4144&amp;amp;folderID=0"&gt;
J2EE 1.4 component's source &lt;/a&gt;and a simple ant build system, so the
components can be built and the resultant jar can be used in your
application or the jar can replace the J2EE 1.4 library that the Java
EE 5 Solutions Catalog uses.&lt;br&gt;
&lt;br&gt;
The second distribution entitled "&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=4144&amp;amp;expandFolder=4144&amp;amp;folderID=0"&gt;bpcatalog-14-ea-0.6-installer.jar&lt;/a&gt;"
includes the following components' source:&lt;span
style="font-weight: bold;"&gt;&lt;br&gt;
&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;Auto Complete Text Field &amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/auto-complete.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/auto-complete-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/autocomplete.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-auto-complete/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Geo-coder Component&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/geo-coder-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-02-map.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-map-viewer/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Google Map Viewer Component&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-02-map.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-map-viewer/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Progress Bar&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/progress-bar.html"&gt;How
to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/progress-bar-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-03-progressbar.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-progress-bar/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Rating [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/ratings.html"&gt;How to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/ratings-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-05-rating.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-rating/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;PayPal Buy Now [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/buy-now.html"&gt;How to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/buy-now-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-04-buynow.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-paypal/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Popup Calendar[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-calendar.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-calendar-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-popup-calendar/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
Future versions of the Solutions Catalog will include these bits.&lt;br&gt;
&lt;br&gt;
Sorry for any inconvenience - Thanks - Mark&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_java_blueprints_petstore_2</guid>
    <title>The Java BluePrints Petstore 2.0 Reference Application that uses Web 2.0 technologies like AJAX, RSS and client-side/server-side mashups is now available for download...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_java_blueprints_petstore_2</link>
        <pubDate>Fri, 4 Aug 2006 13:51:56 -0700</pubDate>
    <category>Java</category>
            <description>The&amp;nbsp; &lt;a target="blog" href="http://blueprints.dev.java.net/"&gt;Java
BluePrints&lt;/a&gt; &lt;a target="blog" href="https://petstore.dev.java.net/"&gt;Petstore
2.0 Application&lt;/a&gt; is a reference application designed to illustrate
how the Java EE 5 platform
can be used with Web 2.0 technologies.&amp;nbsp; It shows real-world
examples of AJAX, RSS and client-side/server-side mashups that can be
used with Java EE 5 technologies like JavaServer Faces (JSF) and Java
Persistence APIs.&amp;nbsp; The
application comes with full source-code that utilizes the Google Maps
service for location specific
searches of pets, the PayPal service for purchases, an RSS feed as
a data source, and much more.&lt;br&gt;
&lt;br&gt;
Many of the AJAX enabled JSF components, like the Popup Balloon,
FileUpload with Progress Bar, Auto-Complete, Rating, PayPal mashup,
Google Map mashup, Yahoo GEO Code Mashup, and RSS Bar came from the &lt;a
target="blog" href="https://bpcatalog.dev.java.net/"&gt;Java BluePrints
Solutions Catalog&lt;/a&gt;
that can also be downloaded and used in your web applications.&amp;nbsp;
The components and write-ups that the Solutions Catalog contains are
described in more detail in a &lt;a target="blog"
href="http://blogs.sun.com/roller/page/basler?entry=a_new_version_of_the"&gt;previous
entry from my blog&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
All that needs to be done to get started is to download and install &lt;a
target="blog" href="https://glassfish.dev.java.net/"&gt;Sun's Open Source
Application Server, Glassfish&lt;/a&gt; and then download, configure, and
deploy the &lt;a target="blog" href="https://petstore.dev.java.net/"&gt;Petstore
2.0 reference application&lt;/a&gt;.&amp;nbsp; This is a great opportunity to
jump start you and your web application
with Web 2.0 functionality with a minimal learning curve.&lt;br&gt;
&lt;br&gt;
Below are some screen shots of the main pages in the application with
brief descriptions of the pages functionality.&lt;br&gt;
&lt;br&gt;
Hope this helps - Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;hr style="width: 100%; height: 2px;"&gt;
&lt;h3&gt;Main Catalog Page&lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="Catalog Screen" title="Catalog Screen"
src="http://blogs.sun.com/roller/resources/basler/petstore_catalog.jpg"
style="width: 600px; height: 390px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This screen shot is of the main catalog page that contains a large
amount of functionality and is the center of the Petstore 2.0 reference
application.&amp;nbsp; Some of the main functionality it includes is as
follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;An image slider bar populated through an AJAX call as the user
scrolls&lt;/li&gt;
&lt;li&gt;An accordion menu bar populated from the database though
the Java Persistence APIs.&lt;/li&gt;
&lt;li&gt;A cool master-detail transparent display that enables the user to
show/hide the products detailed information.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/ratings.html"&gt;AJAX
Rating component&lt;/a&gt;.&amp;nbsp; This component uses a GUI 5 star display
and updates the database with the user selected rating through an AJAX
call.&amp;nbsp; The user value is then averaged with the other user ratings
that
already exist.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/buy-now.html"&gt;PayPal
client-side mashup component&lt;/a&gt;.&amp;nbsp; This allows the user to
purchase the catalog item through the third party facility.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/rssbar.html"&gt;RSS Bar
server-side mashup component&lt;/a&gt; which is linked to the Java BluePrints
RSS feed and presented in the header on every page.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
&lt;hr
style="width: 100%; height: 2px; margin-left: auto; margin-right: auto;"&gt;
&lt;h3&gt;PayPal Page&lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="PayPal Mashup" title="PayPal Mashup"
src="http://blogs.sun.com/roller/resources/basler/petstore_paypal.jpg"
style="width: 600px; height: 435px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This is a screen shot of the &lt;a target="blog"
href="https://developer.paypal.com/"&gt;PayPal Developer&lt;/a&gt; sandbox page
that is populated with the catalog item data from the Petstore's
database.&amp;nbsp; This page is presented when the "PayPal" button is
clicked on from the Petstore's Catalog Page.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
&lt;hr
style="width: 100%; height: 2px; margin-left: auto; margin-right: auto;"&gt;
&lt;h3&gt;Apache's Lucene Search Engine Page &lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="Search Page" title="Search Page"
src="http://blogs.sun.com/roller/resources/basler/petstore_search.jpg"
style="width: 600px; height: 438px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This page is the front-end search page that utilizes the &lt;a
target="blog" href="http://lucene.apache.org/java/docs/index.html"&gt;Apache's
Lucene
Search Engine&lt;/a&gt; on the server.&amp;nbsp; This page searches the indexes
and displays a list of results that matches all the entered words in
the search string. The &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/popup-balloon.html"&gt;AJAX
Popup Balloon component&lt;/a&gt; that shows more detailed information is
triggered when the user mouses-over the name for more than a
second.&amp;nbsp; This page is also a lead- in to the &lt;a target="blog"
href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; client-side mash-up
page.&amp;nbsp; The user can select the items that they want shown on the
map and by entering an optional center-point address with a search area
(in miles), can further restrict the map to show only the items in the
specific area around the center point.&lt;br&gt;
&lt;br&gt;
More information about our experiences using the &lt;a target="blog"
href="http://lucene.apache.org/java/docs/index.html"&gt;Apache's Lucene
Search
Engine&lt;/a&gt; can be found in a &lt;a target="blog"
href="http://blogs.sun.com/roller/page/basler?entry=lucene_search_engine_web_crawlers"&gt;previous
entry from my blog&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
&lt;hr
style="width: 100%; height: 2px; margin-left: auto; margin-right: auto;"&gt;
&lt;h3&gt;Google Map Search Page&lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="Map Search Page" title="Map Search Page"
src="http://blogs.sun.com/roller/resources/basler/petstore_map_search.jpg"
style="width: 600px; height: 309px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This page is the front-end map page that utilizes the database through
the Java Persistence APIs to retrieve catalog items by category.&amp;nbsp;
This page leads into the &lt;a target="blog"
href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt;
client-side mashup page and displays the catalog items on the map for
the selected category.&amp;nbsp; By entering an optional center-point
address with
a search area (in miles), the user can further restrict the category to
show only the items in
the specific area around the center point.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
&lt;hr
style="width: 100%; height: 2px; margin-left: auto; margin-right: auto;"&gt;
&lt;h3&gt;Google Map Mashup Page&lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="Map Page" title="Map Page"
src="http://blogs.sun.com/roller/resources/basler/petstore_map_popup.jpg"
style="width: 800px; height: 510px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This screen shot is of the &lt;a target="blog"
href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt;
client-side mashup page and shows the selected items, either from the
Lucene Search page or the Map Search page.&amp;nbsp; Some of the main
functionality it includes is as follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;A list of hyper-linked catalog items that activates the
correlated points on the Google Map.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;Google
Maps client-side mashup component&lt;/a&gt;. That plots the catalog item's
addresses as points on a map.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/popup-balloon.html"&gt;AJAX
Popup Balloon component&lt;/a&gt; that shows more detailed information which
is triggered when the user mouses-over the name for more than a second.
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/rssbar.html"&gt;RSS Bar
server-side mashup component&lt;/a&gt; which is linked to the Java BluePrints
RSS feed and presented in the header on every page.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;hr
style="width: 100%; height: 2px; margin-left: auto; margin-right: auto;"&gt;
&lt;h3&gt;Seller Catalog Item Upload Page&lt;br&gt;
&lt;/h3&gt;
&lt;img class="petstore" alt="Seller Page" title="Seller Page"
src="http://blogs.sun.com/roller/resources/basler/petstore_seller.jpg"
style="width: 600px; height: 350px;" border="1"&gt;&lt;br&gt;
&lt;br&gt;
This screen shot is of the second pane of the Seller Catalog Item
Upload Page and shows the item's image being uploaded to the server
while displaying the status of the upload to the user.&amp;nbsp; Some of
the main
functionality it includes is as follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;The Captchas security mechanism is utilized in the form of an
image to ensure that the uploaded item is coming from a live user and
not a automated mechanism.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/file-upload.html"&gt;AJAX
Fileupload and Progress Bar component&lt;/a&gt;. This component upload's the
entire HTML form through AJAX utilizing &lt;a target="blog"
href="http://dojotoolkit.org/"&gt;Dojo's&lt;/a&gt; &lt;a target="blog"
href="http://manual.dojotoolkit.org/io.html"&gt;dojo.io.bind form node&lt;/a&gt;
functionality.&amp;nbsp; The uploaded stream is parsed and stored on the
server using &lt;a target="blog"
href="http://jakarta.apache.org/commons/fileupload/"&gt;Apache's Commons
FileUpload &lt;/a&gt;and &lt;a target="blog"
href="http://jakarta.apache.org/commons/io/"&gt;IO&lt;/a&gt; libraries.&amp;nbsp;
The optional Progress Bar that shows status of the upload to the user
is refreshed using a second AJAX call to retrieve information from the
server. &lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/auto-complete.html"&gt;Auto-Complete
component&lt;/a&gt; provides a list of cities and states that are populated
from the database through the Java Persistence APIs.&amp;nbsp; This list is
retrieved through an AJAX call and is narrowed as the user types &lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The Solutions Catalog's &lt;a target="blog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;Yahoo
GEO Coder server-side mashup component&lt;/a&gt; is used to retrieve the
latitude and longitude of the entered address which is used when the
item is displayed on the Google Map.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Also, the &lt;a target="blog"
href="http://lucene.apache.org/java/docs/index.html"&gt;Apache's Lucene
Search
Engine&lt;/a&gt; indexes are updated once the fileupload is completed
successfully.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/a_new_version_of_the</guid>
    <title>A new version of the Java Blueprints Solutions Catalog for JavaEE 5 has been released...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/a_new_version_of_the</link>
        <pubDate>Mon, 17 Jul 2006 10:08:40 -0700</pubDate>
    <category>Java</category>
            <description>&lt;br&gt;
A new version of the &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/"&gt;Java Blueprints
Solutions Catalog&lt;/a&gt; for JavaEE 5 has been released.&amp;nbsp; This
&lt;a href="https://bpcatalog.dev.java.net/release_notes.html" target="bpcatalog"&gt;release features&lt;/a&gt; new and updated writeups on the approaches concerning
JavaServer
Faces, AJAX and the JavaEE 5 Persistence APIs.&amp;nbsp; This release also
contains JSF component libraries that you can use in your application&lt;br&gt;
&lt;br&gt;
The catalog contains the writeups below that present some &lt;a
target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/index.html"&gt;solutions
when using AJAX and Java EE technologies&lt;/a&gt; in web applications for
the Java EE 5 platform and are as follows:
&lt;ul&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/usingJSFwithAJAX.html"&gt;Using
AJAX with JSF&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Discuss the strategies to
create a reusable JavaServer
Faces component that leverages AJAX techniques&lt;/span&gt; &lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/phaselistener.html"&gt;Using
the PhaseListener Approach for
JSF and AJAX:&lt;/a&gt;&amp;nbsp; Discusses how to use the
PhaseListener approach&amp;nbsp; to incorporate
AJAX functionality into a JSF application&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/resourcesAccess.html"&gt;Resource
Access&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Discuss the issues of concern while
accessing static and
dynamic resources&lt;/span&gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/servletControllerwithJSF.html"&gt;Using
a Servlet as a
Controller with JSF and AJAX:&lt;/a&gt; Discusses strategies
that&amp;nbsp;add AJAX support to JSF
components by introducing&amp;nbsp;a servlet to process the AJAX
requests&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/usingJSFComponent.html"&gt;Using
an AJAX-enabled JSF
Component Library&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Discuss the issues of
concern while using an AJAX-enabled JavaServer Faces component library&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/usingAJAXwithoutJSF.html"&gt;Using
AJAX without JSF&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Using JavaScript directly
to create AJAX behavior&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/dataValidationwithAJAX.html"&gt;Real-time
data validation
with JSF and AJAX&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Validating data in the
AJAX transaction&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/handling-js-events.html"&gt;Handling
JavaScript Events&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Discuss how to handle
event for JavaScript components&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/extendingRenderFunctionality.html"&gt;Extending
Renderer
Functionality&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Discuss how to extend the
renderer in JavaServer Faces the custom component&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/ajax/javascript-recommendations.html"&gt;JavaScript
Conventions
and Recommendations&lt;/a&gt;:&amp;nbsp;&lt;span class="tx"&gt;Recommendations for
developers creating AJAX components with JavaScript&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
The catalog also contains writeups on the use of the&amp;nbsp; Java
Persistence APIs which allows the management of persistence and
object/relational mapping. The writeups below present some &lt;a
target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/index.html"&gt;solutions
when
using Java Persistence APIs&lt;/a&gt;
in applications for the Java EE 5 platform and are as follows:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/webonlyapp.html"&gt;Designing
a web-only application&lt;/a&gt;:
Discusses application
design for web applications that don't use any EJB modules.&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/namingconventions.html"&gt;Naming
Conventions&lt;/a&gt;:&amp;nbsp;
Discusses some naming
conventions for objects, classes, etc for&amp;nbsp;Java Persistence.&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/primarykeys.html"&gt;Using
Primary Keys&lt;/a&gt;: Discusses
design choices for primary
keys.&lt;/li&gt;
&lt;li&gt; &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/namedquery.html"&gt;Using
Named Queries&lt;/a&gt;: Discusses how
to refactor code to use
named queries.&lt;/li&gt;
&lt;li&gt;&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/bpcatalog/ee5/persistence/facade.html"&gt;Using
a Model Facade:&lt;/a&gt; Discusses
applying the Facade pattern to a model tier implemented with Java
Persistence APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
The Java Blueprints Solutions Catalog for JavaEE 5 also contains
component libraries you can use in your applications.&amp;nbsp; The JSF
components that the libraries contain are as follows:&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Library 1: Can be
used in both the
J2EE 1.4 or the Java EE 5 platform&lt;/span&gt;&lt;ul&gt;
&lt;li&gt;Auto Complete Text Field &amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/auto-complete.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/auto-complete-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/autocomplete.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-auto-complete/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Geo-coder Component&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/geo-coder-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-02-map.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-map-viewer/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Google Map Viewer Component&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/map-viewer-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-02-map.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-map-viewer/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Progress Bar&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/progress-bar.html"&gt;How
to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/progress-bar-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-03-progressbar.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-progress-bar/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Rating [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/ratings.html"&gt;How to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/ratings-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-05-rating.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-rating/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;PayPal Buy Now [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/buy-now.html"&gt;How to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/buy-now-image.html"&gt;Screenshot&lt;/a&gt;,
&amp;nbsp;&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-04-buynow.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-paypal/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Popup Calendar[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-calendar.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-calendar-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-popup-calendar/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;

&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Library 2: Can be
used only on a Java
EE 5 platform&amp;nbsp;such as &lt;/span&gt;&lt;a target="bpcatalog"
style="font-weight: bold;" href="https://glassfish.dev.java.net/"&gt;GlassFish.&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;PopUp Balloon&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-balloon.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/popup-balloon-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-07-popupbaloon.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-popup-balloon/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&amp;nbsp;&lt;/li&gt;
&lt;li&gt;AJAX FileUpload&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/file-upload.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/file-upload-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-06-fileupload.html"&gt;Movie&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Dynamic Text Label&amp;nbsp;[&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/dynamic-text.html"&gt;How
to Us&lt;/a&gt;e, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/dynamic-text-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-08-dynamic-text.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-dynamic-text/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;AJAX Validator [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/validator.html"&gt;How
to Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/validator-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://weblogs.java.net/blog/edburns/20060418-bpcatalog-ajax-09-validator.html"&gt;Movie&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-validator/faces/index.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;RSS Bar Reader [&lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/rssbar.html"&gt;How to
Use&lt;/a&gt;, &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/complib/v2/rssbar-image.html"&gt;Screenshot&lt;/a&gt;,
&lt;a target="bpcatalog"
href="http://javanet1-ws.locaweb.com:8080/bp-rss-bar/faces/rssbar.jsp"&gt;Run
Example&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
The &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/ajaxcomponents.html"&gt;complete
list of the components&lt;/a&gt; that are contained in the Java Blueprints
Solution Catalog for JavaEE 5 is now kept on the &lt;a target="bpcatalog"
href="https://blueprints.dev.java.net/ajax.html"&gt;blueprints.dev.java.net/ajax&lt;/a&gt;
site. &lt;br&gt;&lt;br&gt;
&lt;b&gt;You can download &lt;a target="bpcatalog"
href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt; and the &lt;a
target="bpcatalog"
href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=4144&amp;amp;expandFolder=4144&amp;amp;folderID=0"&gt;source
for the Java Blueprints Solutions Catalog for JavaEE 5&lt;/a&gt; and run it for yourself.&lt;/b&gt;
&lt;br&gt;&lt;br&gt;
Please keep in mind that we are still researching evolving
technologies and will update these entries when our recommendations
change.&lt;br&gt;
&lt;br&gt;
Hope this helps - Thanks - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/jsf_1_2_checkbox_in</guid>
    <title>JSF 1.2 Checkbox in a dataTable populating a list of IDs ...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/jsf_1_2_checkbox_in</link>
        <pubDate>Mon, 24 Apr 2006 10:51:23 -0700</pubDate>
    <category>Java</category>
            <description>&lt;br&gt;
Recently, I have been working on an application that required a list
of database primary keys (IDs) be returned from a search, so the
items that were selected could be populated in a Google Map.&amp;nbsp;
Returning a list of IDs to operate against is a common requirement and
there a number of ways this could be handled.&amp;nbsp; The one thing that
complicated the use of normal paradigms is that persistence entity
beans were being used and I didn't want to introduce presentation
implementation details in the bean.&amp;nbsp; Since we are using EJB 3.0 and
JSF 1.2, I used the &lt;a href="https://glassfish.dev.java.net/" target="blog"&gt;Glassfish
Open Source Application Server &lt;/a&gt;to run my tests.&lt;br&gt;
&lt;br&gt;
I have read a lot of interesting forum postings were developers are
trying to find a lite weight approach to collecting IDs to operate
against when they are developing using JSF dataTables.&amp;nbsp; These
developers are familiar with the standard HTML checkbox String array
approach and are looking for a similar approach using JSF.&amp;nbsp; Some
of
the write ups state the example usecase where items are selected from a
cart for deletion.&amp;nbsp; Hopefully this investigation will help them
and others.&lt;br&gt;
&lt;br&gt;
There are a few different methodologies that can be used to resolve
this problem, the following list are approaches that we investigated:&lt;br&gt;
&lt;br&gt;
1) Wrap the entity bean with a class that also exposes the values
("SelectItem")
for the checkbox.&amp;nbsp; Having all the values that are to be captured,
represented in a bean is a standard approach when working with
dataTables.&amp;nbsp; I didn't want to use this approach because it
requires the introduction of a new wrapper object for each page that
used entity beans to back the dataTable.&lt;br&gt;
&lt;br&gt;
2) Bind the dataTable to a ManagedBean ("HTMLDataTable") so the
children
can be looped through to manually reconcile the items selected.&amp;nbsp;
This could be done but all that was needed was a list of IDs.&amp;nbsp; I
thought this approach was overkill and I wanted to use something more
lite weight.&lt;br&gt;
&lt;br&gt;
3) Send the selected values to a the managed bean using a HTML checkbox
through a
managed property.&amp;nbsp; This is more in line with what I was looking
for, a lite weight approach the I can use in other situations without
introducing a new object or binding to a JSF component. &lt;br&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;The code segments below shows how to
send a list of
checked IDs to a managed bean and the associated setting in the
faces-config.xml file.&amp;nbsp; Note that the SearchBean&amp;nbsp; is the
entity bean used to hold the data being displayed.&lt;br&gt;
&lt;/div&gt;
&lt;b&gt;&lt;br&gt;
&lt;/b&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;b&gt;search.jsp&lt;/b&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;&amp;nbsp;&amp;lt;h:form id="resultsForm"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h:dataTable id="results" border="1" value="#{SearchBean.hits}" var="item"&lt;br&gt; rendered="#{SearchBean.showResults}"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; style="border-style:double; width:600px; border-color:darkgreen"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; ...&lt;br&gt; &lt;span
style="color: rgb(51, 51, 255);"&gt;&amp;lt;input type="checkbox" name="mapSelectedItems" &lt;/span&gt;&lt;br
style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; value="&amp;lt;h:outputText value='#{item.UID}'/&amp;gt;"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;br&gt; ...&lt;br&gt; &amp;lt;h:commandButton action="#{MapBean.findAllByIDs}" id="mapSubmit" type="submit" &lt;br&gt; value="Map Checked Item(s)" rendered="#{SearchBean.showResults}"/&amp;gt;&lt;br&gt; ...&lt;br&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;br&gt;
&lt;b&gt;faces-config.xml&lt;/b&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;&amp;lt;managed-bean&amp;gt;&lt;br&gt; &amp;lt;managed-bean-name&amp;gt;MapBean&amp;lt;/managed-bean-name&amp;gt;&lt;br&gt; &amp;lt;managed-bean-class&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt; com.sun.javaee.blueprints.mapviewer.MapBean&lt;br&gt; &amp;lt;/managed-bean-class&amp;gt;&lt;br&gt; &amp;lt;managed-bean-scope&amp;gt;request&amp;lt;/managed-bean-scope&amp;gt;&lt;br&gt; &amp;lt;managed-property&amp;gt;&lt;br&gt; &lt;span
style="color: rgb(51, 51, 255);"&gt;&amp;lt;property-name&amp;gt;items&amp;lt;/property-name&amp;gt;&lt;/span&gt;&lt;br
style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;value&amp;gt;#{paramValues.mapSelectedItems}&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br&gt; &amp;lt;/managed-property&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;lt;/managed-bean&amp;gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;b&gt;MapBean.java&lt;/b&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;// search.jsp&lt;br&gt;public void setItems(String[] items) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.items=items;&lt;br&gt;}&lt;/code&gt;&lt;br&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;br&gt;
The only problem I found with this approach is that the Managed Bean
has to be in the request scope.&amp;nbsp; If you wanted to put the bean in
the session, a ServletException would be thrown stating "The scope of
the
referenced object: #{paramValues.mapSelectedItems} is shorter than the
referring object".&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
4)&amp;nbsp; Since I wanted the MapBean to be in the session scope so
the last map could be re-rendered, I ended up using a derivation of
approach 3 and retrieved the IDs using the Expression Language Context
to resolve a Value Expression.&amp;nbsp; This allowed the MapBean to be in
the session scope and the IDs could be retrieved from the
request.&amp;nbsp; One thing to note is that since is it quite possible
that the request values may not be present when the bean is being
access from other objects, some checking is required to keep the IDs
available.&lt;br&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;The code segments below shows how to
retrieve a list of
checked IDs from a managed bean and the associated setting in the
faces-config.xml file.&amp;nbsp; Note that the SearchBean is the entity
bean used to hold the data being displayed.&lt;/div&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;b&gt;search.jsp&lt;/b&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;&amp;lt;h:form id="resultsForm"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h:dataTable id="results" border="1" value="#{SearchBean.hits}" var="item"&lt;br&gt; rendered="#{SearchBean.showResults}"&lt;br&gt; style="border-style:double; width:600px;border-color:darkgreen"&amp;gt;&lt;br&gt;&lt;br&gt; ...&lt;br&gt;&lt;span
style="color: rgb(51, 51, 255);"&gt; &amp;lt;input type="checkbox" name="mapSelectedItems" &lt;/span&gt;&lt;span
style="color: rgb(51, 51, 255);"&gt;&lt;br&gt; value="&amp;lt;h:outputText value='#{item.UID}'/&amp;gt;"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt; ...&lt;br&gt;&lt;/code&gt;&lt;code&gt; &amp;lt;h:commandButton action="#{MapBean.findAllByIDs}" id="mapSubmit" type="submit" &lt;br&gt; value="Map Checked Item(s)" rendered="#{SearchBean.showResults}"/&amp;gt;&lt;br&gt; ...&lt;br&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;b&gt;faces-config.xml&lt;/b&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;&amp;lt;managed-bean&amp;gt;&lt;br&gt; &amp;lt;managed-bean-name&amp;gt;MapBean&amp;lt;/managed-bean-name&amp;gt;&lt;br&gt; &amp;lt;managed-bean-class&amp;gt;&lt;br&gt; com.sun.javaee.blueprints.mapviewer.MapBean&lt;br&gt; &amp;lt;/managed-bean-class&amp;gt;&lt;br&gt; &amp;lt;managed-bean-scope&amp;gt;session&amp;lt;/managed-bean-scope&amp;gt;&lt;br&gt;&amp;lt;/managed-bean&amp;gt;&lt;br&gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;div style="margin-left: 40px;"&gt;
&lt;span style="font-weight: bold;"&gt;MapBean.java&lt;/span&gt;&lt;br&gt;
&lt;/div&gt;
&lt;pre style="margin-left: 40px;"&gt;&lt;code&gt;public String findAllByIDs() {&lt;br&gt; // get selected items from search&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FacesContext context=FacesContext.getCurrentInstance();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValueExpression vex=context.getApplication().getExpressionFactory().&lt;br&gt; createValueExpression(context.getELContext(),"#{paramValues.mapSelectedItems}", String[].class);&lt;br&gt;&lt;br&gt; String[] itemx=(String[])vex.getValue(context.getELContext());&lt;br&gt; // since looking up values from request, make sure the values exist before replacing old values&lt;br&gt; if(itemx != null) {&lt;br&gt; itemIds=itemx;&lt;br&gt; }&lt;br&gt; ...&lt;br&gt;&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;span style="font-weight: bold;"&gt;Many thanks to &lt;a target="blogs"
href="http://weblogs.java.net/blog/edburns/"&gt;Ed Burns&lt;/a&gt; for taking
the time to investigate these scenarios with me. His time and effort is
deeply appreciated.&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/javascript_ajax_dhtml_web_2</guid>
    <title>Javascript, AJAX, DHTML (Web 2.0) debugging tools...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/javascript_ajax_dhtml_web_2</link>
        <pubDate>Wed, 15 Mar 2006 09:06:13 -0800</pubDate>
    <category>Java</category>
            <description>When developing anything that has to do with Javascript like AJAX or
DHTML web pages (Web 2.0, if you prefer), it pays to have good debugging tools.&lt;br&gt;
&lt;br&gt;
A large amount of &lt;a
href="http://www.mozdev.org/projects/active.html" target="blog_window"&gt;pluggins are
available&lt;/a&gt; for the &lt;a href="http://www.mozilla.com/firefox/" target="blog_window"&gt;FireFox&lt;/a&gt;
browser in addition to the extremely useful embedded Javascript
console.&amp;nbsp; The one I use to debug numerous problems is &lt;a
href="http://livehttpheaders.mozdev.org" target="blog_window"&gt;Live HTTP Header&lt;/a&gt;.&amp;nbsp;
It shows the actual HTTP interaction between the browser and a server
like &lt;a href="https://glassfish.dev.java.net/" target="blog_window"&gt;Glassfish&lt;/a&gt;.&amp;nbsp;&amp;nbsp;
I have found it an invaluable resource in debugging browser/server
interactions when developing complex AJAX web applications.&lt;br&gt;
&lt;br&gt;
Also, the &lt;a href="http://www.mozilla.org/projects/inspector/" target="blog_window"&gt;DOM
Inspector&lt;/a&gt; that comes with your the FireFox browser (you have to perform 
a custom install) is very useful debugging the resultant DOM when
developing advanced DHTML web pages. &lt;br&gt;
&lt;br&gt;
I must credit the &lt;a href="http://www.manning.com/books/crane" target="blog_window"&gt;AJAX in
Action&lt;/a&gt; book appendix on tools for these tips. Many Thanks to &lt;a
href="http://weblogs.java.net/blog/gmurray71/" target="blog_window"&gt;Greg Murray&lt;/a&gt; for
making a copy available :-).  See his &lt;a href="https://blueprints.dev.java.net/bpcatalog/conventions/javascript-recommendations.html" target="blog_window"&gt;Javascript Recommendations&lt;/a&gt; for many useful tips.&lt;br&gt;
&lt;br&gt;
One other tool that the book recommends, but I have yet to use in any
detail is the &lt;a href="http://www.mozilla.org/projects/venkman/" target="blog_window"&gt;Venkman
Javascript Debugger&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Hope this helps to cut down on your debugging time - Mark&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/lucene_search_engine_web_crawlers</guid>
    <title>Lucene Search Engine, Web Crawlers and Tagging...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/lucene_search_engine_web_crawlers</link>
        <pubDate>Fri, 10 Mar 2006 14:18:03 -0800</pubDate>
    <category>Java</category>
            <description>Recently, I have been working on adding search functionality to a
soon-to-be-released JavaEE5 application that deploys on &lt;a
href="https://glassfish.dev.java.net/" target="blog_window"&gt;Glassfish &lt;/a&gt;.&amp;nbsp; After
looking over the open source search engine options that were available for us to bundle with the application,
we decided on using the &lt;a href="http://lucene.apache.org/"
target="blog_window"&gt;Lucene search engine&lt;/a&gt; available from Apache.
Lucene is a robust search engine that supplies APIs that enable the
developer to design an indexing scheme to match their needs.&amp;nbsp; They
also follow the same methodology I strongly believe in, keep it simple
(KISS).&amp;nbsp; Lucene doesn't supply the functionality that actually
walks through your data to create the indexes or the functionality to
capture the criteria to search/display the indexes, because its roll is
strictly to be a search engine. The &lt;a
href="http://www.darksleep.com/lucene" target="blog_window"&gt;Lucene Tutorial&lt;/a&gt; with the
accompanying demo applications walk through common creation/search
scenarios depicting a straightforward methodology to write your own
interfaces between your data and Lucene.
&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Web Crawlers:&lt;/span&gt;&lt;br&gt;
A common desire is to have a web crawler or robot walk the web site,
indexing relevant content so it can be later searched. There are some
third party alternatives that can be used like &lt;a
href="http://lucene.apache.org/nutch/" target="blog_window"&gt;Apache's Nutch&lt;/a&gt; which is
built on top of Lucene or &lt;a
href="http://www.cs.cmu.edu/%7Ercm/websphinx" target="blog_window"&gt;WebSPHINX&lt;/a&gt; that can
be modified to store data into Lucene.&amp;nbsp; These and &lt;a
href="http://java-source.net/open-source/crawlers" target="blog_window"&gt;other third party&lt;/a&gt;
open source solutions will help save a lot of time.&amp;nbsp; If you decide
to go the web crawling route, you could try to write your own
like I did using the JavaSE5 javax.swing.text.html.parser classes, but
it is laborious and you will not be spending time focusing on the real
problem of getting your data correctly indexed.&amp;nbsp; I did consider
the effort to be a very educational endeavor, but not to be attempted
by the faint of heart.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Our Approach:&lt;/span&gt;&lt;br&gt;
Considering our needs and the fact that
our JavaEE5 application's web interface is largely based on &lt;a
href="http://en.wikipedia.org/wiki/Web_2.0" target="blog_window"&gt;Web 2.0&lt;/a&gt; that utilizes
AJAX to present most page content.&amp;nbsp; We decided to write our own
interface that pulls data from the database to create the
indexes.&amp;nbsp; We found when serving page content using AJAX &amp;amp;
DHTML, the web crawling paradigm becomes convoluted.&amp;nbsp; This is due
to the fact that it is hard for the crawler to know the relevant
content that is associated with a specific item.&amp;nbsp; This is
especially true when the content is retrieved through Javascript events
that haven't been fired by the crawler, like a Javascript
mouseover.&amp;nbsp; This problem can be mitigated by methodical use of the
&lt;a href="http://en.wikipedia.org/wiki/Robots.txt" target="blog_window"&gt;robots.txt&lt;/a&gt; file
and meta tags in the HTML pages that are served to give the web crawler the correct pages with the correct data.&amp;nbsp; Amazon uses this
approach by including meta tags like "description" and "keywords" coupled with a restrictive robots.txt file to
help companies like Google index their site correctly.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
We are using meta tags to help external web crawlers index our site
properly, but thought our own search results should be as accurate as
possible for the items we are offering.&amp;nbsp; To store the data to be
indexed it was easy to use the new persistence APIs in JavaEE5 based on
&lt;a href="http://en.wikipedia.org/wiki/POJO" target="blog_window"&gt;POJOs.&lt;/a&gt; With our
development environment consisting of &lt;a
href="http://www.netbeans.org/community/releases/50/index.html" target="blog_window"&gt;Netbeans
5.0&lt;/a&gt; and &lt;a href="https://glassfish.dev.java.net/" target="blog_window"&gt;the Glassfish AppServer&lt;/a&gt;
development went very smooth.&amp;nbsp; All that was required to make the
Lucene APIs available was to package it with our application.&amp;nbsp; One
note, be careful where you store your indexes.&amp;nbsp; If you store them
under the deployed application directory, they will be removed when you
redeploy/update your application.&amp;nbsp; We decided to store the indexes
under the domains lib directory (e.g.
"/glassfish/domains/domain1/lib/indexDir"), which can be accessed using
the Glassfish System.getProperty("com.sun.aas.instanceRoot") +
"/lib/indexDir", but the location is totally up to you.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Tagging:&lt;/span&gt;&lt;br&gt;
We also added the functionality to allow user's to add there own custom
tags to the items so they are also searchable by other users.&amp;nbsp; Tagging has become
very popular and can be seen by browsing pioneering sites like &lt;a
href="http://del.icio.us/" target="blog_window"&gt;del.icio.us&lt;/a&gt; and &lt;a href="http://www.flickr.com/" target="blog_window"&gt;flickr.&lt;/a&gt;&amp;nbsp;&amp;nbsp;
We wanted the ability to weight the tags based on subsequent user
clicks, so the tag information also had to be persisted in the
database.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Updating Indexes in Lucene for Tagging:&lt;/span&gt;&lt;br&gt;
One thing to keep in mind is that Lucene doesn't allow an index to be
updated, the specific index has to be deleted then re-created.&amp;nbsp;
When adding a new tag to an item or updating a document index you have to
be able to access all the data that was originally in the index before
re-creating it.&amp;nbsp; This sounds straightforward but there is on
caveat.&amp;nbsp; If you index items using an approach that doesn't allow retrieval of all the data in the index, you will have to read the data from a
persistent store so the index can be completely re-created.&amp;nbsp; You
can get in this state when you create a
org.apache.lucene.document.Field for the documents index utilizing the
"UnStore" method or "Text" method with a Reader.&amp;nbsp; When using these
methods, the data can't be retrieve via the exposed APIs.&amp;nbsp; This
really isn't a big deal once you factor it in to your approach. Our
tagging requirement came after the initial implementation was completed
and it caused some problems that made us have to re-think our index
scheme.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Conclusion:&lt;/span&gt;&lt;br&gt;
I found this task very educational in terms of the Web 2.0 impact of
web crawlers and the general working of the Lucene Search Engine.&amp;nbsp;
I will be following up with a more detailed article including
code samples once the application is released, but for now let me end
this entry with some learned lessons.&lt;br&gt;
&lt;br/&gt;
&lt;br/&gt;
 - Don't write your own web crawler.&amp;nbsp; There are many that are
available that can be altered to suite most purposes.&amp;nbsp; It may seem
simple, but once you get into the task, you will realize it is not for
the faint of heart.&amp;nbsp; Keep in mind that with Web 2.0, web crawlers
are going to become even more complicated to design.&lt;br/&gt;&lt;br/&gt;
 - Do use a robots.txt file to steer external search engines to the
relevant content to be indexed.&amp;nbsp; You most likely don't want irrelevant data,
like pages that perform cart functions to be indexed.&lt;br/&gt;&lt;br/&gt;
 - Do use meta tags on your relevant pages that are to be indexed
(steered by robots.txt) so the search engine knows exactly what to
index.&amp;nbsp; If you let the web crawler try to figure it out, there is
a strong possibility that it will be wrong.&amp;nbsp; This is even more
important if your site uses advanced Web 2.0 features to retrieve
content.&lt;br/&gt;&lt;br/&gt;
 - Completely work out your indexing scheme, including updates and
tagging if applicable, before you finalize your design.&amp;nbsp; All the
item's data to be indexed must be available to properly re-create the
index in the event of update.&lt;br/&gt;&lt;br/&gt;
 - Don't store you indexes where they can be wiped out by a updated
version of the application.&amp;nbsp; Also make sure that the domains
server.policy file grants the application read/write access on the
directory you have chosen.&lt;br/&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
I hope this entry helps someone else save time in their development of
an indexing approach - Good Luck - Mark
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/inscreen_ajax_popup_balloon_jsf</guid>
    <title>AJAX enabled Java Server Faces (JSF) Components now available...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/inscreen_ajax_popup_balloon_jsf</link>
        <pubDate>Mon, 6 Feb 2006 08:37:45 -0800</pubDate>
    <category>Java</category>
            <description>A new version of the &lt;a href="https://blueprints.dev.java.net" target="blog_popup"&gt;early access EE5 Java Blueprints Solutions Catalog&lt;/a&gt; that includes numerous AJAX enabled JSF components has  &lt;a href="https://blueprints.dev.java.net/servlets/NewsItemView?newsItemID=3259" target="blog_popup"&gt;just been released&lt;/a&gt; .  These components can be deployed on &lt;a href="https://glassfish.dev.java.net/" target="blog_popup"&gt;Glassfish&lt;/a&gt;, Sun's open source application server.  The catalog contains some very useful components that can be used right out of the box by just including the jar (ui.jar) in your distribution.&lt;br&gt;&lt;br&gt;

One component that I wish was more widely used is the Popup Balloon.  This component can display detailed information about an object if it is trigger from the the mouseover Javascript event.  This information is retrieve asynchronously through an AJAX call and shown once retrieval is complete. For Example:&lt;br&gt;&lt;br&gt;

&lt;img src="http://blogs.sun.com/roller/resources/basler/popup.jpg"/&gt;&lt;br&gt;&lt;br&gt;

This methodology is used on some sites,  but the idiom isn't used nearly as much as I would like.  There are many times when I am browsing sites such as TV Guide, that I would like to just mouseover the movie title and get the description of the movie and its actors.  Along the same theme, when I am browsing MorningStar, it would be great to mouseover a stock symbol and get more information about the stock, like current price, stock industry and year-to-date performance.  The Popup Balloon JSF component facilitates this functionality.&lt;br&gt;&lt;br&gt;

Currently, the &lt;a href="http://blogs.sun.com/roller/resources/basler/popup.jpg" target="blog_popup"&gt;AJAX Popup Balloon&lt;/a&gt; retrieves information through a developed source like a custom servlet.  There is detailed documentation contained in the &lt;a href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=4144&amp;expandFolder=4144&amp;folderID=0"  target="blog_popup"&gt;EE5 Java Blueprints Solutions Catalog&lt;/a&gt; on the Popup Balloon's use and implementation as well as the other components the bundle provides.


  In the future, I envision users would be able to customize the information that the AJAX Popup Balloon will show.  Hopefully, you will see a JSF component that enables this functionality very soon.&lt;br&gt;&lt;br&gt;

Hope this helps - Thanks - Mark &lt;br&gt;&lt;br&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/ajax_fileupload_using_dojo_and</guid>
    <title>AJAX FileUpload using Dojo and Apache Commons FileUpload Libraries...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/ajax_fileupload_using_dojo_and</link>
        <pubDate>Wed, 11 Jan 2006 19:05:35 -0800</pubDate>
    <category>Java</category>
            <description>This week I have been working on an asynchronous file upload JSF component.  I will be writing an article on the process at a later date, but to help others sooner, rather than later, here is a little relevant info.&lt;br&gt;&lt;br&gt;

A good blog about the process is written by Alex Russel entitled &lt;a href="http://alex.dojotoolkit.org/?p=528"&gt;File uploading with Dojo&lt;/a&gt;.  Alex's blog talks about using a IFrameIO to transport the formNode asynchronously without a page refresh. We are using the Dojo method on our web client and using the &lt;a href="http://jakarta.apache.org/commons/fileupload/"&gt;Apache Commons FileUpload&lt;/a&gt; libraries on the server. These libraries will be encapsulated into a customer JSF component to facilitate reuse and distributed in a future release of the &lt;a href="https://blueprints.dev.java.net/servlets/ProjectDocumentList?folderID=4144&amp;expandFolder=4144&amp;folderID=0"&gt;Java BluePrints JavaEE5 BPCatalog&lt;/a&gt;, deployable on the &lt;a href="https://glassfish.dev.java.net/"&gt;Glassfish AppServer&lt;/a&gt;.&lt;br&gt;&lt;br&gt;

The purpose for this blog is to publicize an example of the &lt;a href="http://archive.dojotoolkit.org/nightly/tests/io/test_IframeIO.html"&gt;Dojo FileUpload methodology&lt;/a&gt;.  It took me a little while to get a working prototype and I found this example shortly thereafter.&lt;br&gt;&lt;br&gt;

Hope this helps - Mark</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/netbeans_and_sun_java_system</guid>
    <title>Netbeans and Sun Java System Application Server, a winning combination...</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/netbeans_and_sun_java_system</link>
        <pubDate>Wed, 4 Jan 2006 09:20:57 -0800</pubDate>
    <category>Java</category>
            <description>It is nice to see that more &amp; more outside sources are discovering how easy it is to develop using Netbeans with Sun Java System Application Server (SJSAS).&lt;br&gt;&lt;br&gt;

The article &lt;a href="http://home.izforge.com/index.php/2006/01/04/204-netbeans-as-a-j2ee-teaching-ide"&gt;Netbeans as a J2EE teaching IDE&lt;/a&gt; represents what we have been saying all along.  That Netbeans and SJSAS is one of the easiest ways to get started developing the full range of JavaEE components.&lt;br&gt;&lt;br&gt;

All that needs to be done to see how quickly you can get up and developing, is try the &lt;a href="http://www.netbeans.info/downloads/download.php?type=5.0b2"&gt;Netbeans 5.0 beta 2&lt;/a&gt; bundle.  Choose the "NetBeans IDE 5.0 Beta 2 + Application Server 8.1 Bundle Installer" for greatest convenience.&lt;br&gt;&lt;br&gt;

I have talked with many customers who go through pain staking steps so there developers don't have to get bogged down with a long procedure of installation and configuration to start developing.  They want the developer to be able to stay in the IDE environment and just focus on coding, not configuration. The Netbeans/SJSAS bundle makes it extremely easy to get up and developing quickly..&lt;br&gt;&lt;br&gt;

If you do a side by side comparison of Eclipse with any Application Server and Netbeans with SJSAS, you will find that the Netbeans Bundles is the best &amp; easiest way to go.</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_paper_on_the_remote</guid>
    <title>The paper on the Remote Management of Application-Server Domains has been published on developers.sun.com</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_paper_on_the_remote</link>
        <pubDate>Wed, 2 Nov 2005 09:58:47 -0800</pubDate>
    <category>Java</category>
            <description>The &lt;a href="http://developers.sun.com/prodtech/appserver/reference/techart/remote_mgmt.html"&gt;Remote Management of Application-Server Domains&lt;/a&gt; paper explains the design of a web service that exported the management functions of the domain which is consumed by a Mobile Client.  The application demonstrates how to remotely manage a domain including Start, Stop, Quiesce and Monitor of existing Clusters or Standalone servers. The &lt;a href="https://as-ras.dev.java.net/AppserverAdminWS/docs/detail.html#j2meDetail"&gt;mobile client screens shots&lt;/a&gt; show some of the functionality available from the web service.
&lt;br&gt;&lt;br&gt;
Hope this helps ...
&lt;br&gt;&lt;br&gt;
Thanks - Mark</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/a_paper_describing_adventure_builder</guid>
    <title>A paper describing Adventure Builder's Supply Chain Web Service Mutual Authentication approach was published on developers.sun.com.</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/a_paper_describing_adventure_builder</link>
        <pubDate>Wed, 2 Nov 2005 09:45:18 -0800</pubDate>
    <category>Java</category>
            <description>The paper details how to enable mutual authentication for web services that are exposed through a web module or through an EJB. The paper &lt;a href="http://developers.sun.com/prodtech/appserver/reference/techart/mutual_auth.html"&gt;Mutual Authentication for Web Services: A Live Example&lt;/a&gt; also discusses the procedure for exchanging certificates between entities, trust domains and debugging.
&lt;br&gt;&lt;br&gt;
Hope this helps...
&lt;br&gt;&lt;br&gt;
Thanks - Mark</description>          </item>
    <item>
    <guid isPermaLink="true">http://blogs.sun.com/basler/entry/the_javaone_demo_for_sjsas8</guid>
    <title>The JavaONE demo for Sun's Application Server Enterprise Edition has been written up, scripted, packaged and is available on as-ras.dev.java.net.</title>
    <dc:creator>basler</dc:creator>
    <link>http://blogs.sun.com/basler/entry/the_javaone_demo_for_sjsas8</link>
        <source url="https://as-ras.dev.java.net">https://as-ras.dev.java.net</source>
        <pubDate>Fri, 7 Oct 2005 09:40:03 -0700</pubDate>
    <category>Java</category>
            <description>At JavaONE we demonstrated the Sun Java System Application Server Enterprise Edition in a highly available, clustered, load balanced environment whereby application state cannot be lost due to failures or planned upgrades of applications, operating system and hardware.  We also showcased ease of management by monitoring and managing the configuration through the JMX/MBeans (JSR 77) exposed remotely as a Web Service consumed by a J2ME Client.
&lt;br&gt;&lt;br&gt;
The J2ME client is accessing the domain's configuration using the Web Services API for a J2ME client (JSR 172) to demonstrate remote management of a domain including Start, Stop, Quiesce and Monitor of existing Clusters or Standalone servers.  Here are some &lt;a href="https://as-ras.dev.java.net/AppserverAdminWS/docs/detail.html#j2meDetail"&gt;Screen Shots&lt;/a&gt; of the J2me client.
&lt;br&gt;&lt;br&gt;
The software is available at &lt;a href="https://as-ras.dev.java.net"/&gt;https://as-ras.dev.java.net&lt;/a&gt;.  The good news is that the web service should be able to be used in most SJSAS8.1 SE/EE configurations.  
&lt;br&gt;&lt;br&gt;
Hope this helps...
&lt;br&gt;&lt;br&gt;
Thanks - Mark</description>          </item>
  </channel>
</rss>
