<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Robin&#039;s Tech Tips &#187; web</title>
	<atom:link href="http://robin.mytechtip.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://robin.mytechtip.com</link>
	<description>Just another My Tech Tip weblog</description>
	<lastBuildDate>Wed, 06 Jul 2011 02:35:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Spring Web Service (2.0) using xmlbeans as XML marshaling</title>
		<link>http://robin.mytechtip.com/2011/07/06/spring-web-service-2-0-using-xmlbeans-as-xml-marshaling/</link>
		<comments>http://robin.mytechtip.com/2011/07/06/spring-web-service-2-0-using-xmlbeans-as-xml-marshaling/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 02:28:57 +0000</pubDate>
		<dc:creator>robin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[web-services]]></category>

		<guid isPermaLink="false">http://robin.mytechtip.com/?p=212</guid>
		<description><![CDATA[When I googled “spring webservice xmlbean”, I found this link that provides an example to use xmlbeans as xml marshalling when implementing a spring web service.
The example is based on Spring web service version older than 2 (spring ws 1.5.6 with spring 2.5.6), while now (at the time of writing this post) Spring is now [...]]]></description>
			<content:encoded><![CDATA[<p>When I googled “spring webservice xmlbean”, I found <a href="http://cchweblog.wordpress.com/2009/04/27/developing-spring-web-services-with-xml-marschalling-xmlbeans-example/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cchweblog.wordpress.com');">this link that provides an example to use xmlbeans as xml marshalling when implementing a spring web service</a>.</p>
<p>The example is based on Spring web service version older than 2 (spring ws 1.5.6 with spring 2.5.6), while now (at the time of writing this post) Spring is now on version 3 and Spring-WS on version 2. When I tried the example, I can not make it work straight away on the new Spring/Spring-WS version due to some changed java classes and/or configurations.</p>
<p>The latest <a href="http://static.springsource.org/spring-ws/site/reference/html/tutorial.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/static.springsource.org');">Spring-WS Tutorial</a> does provide an example on how to develop web services using the latest spring-ws version (version 2). However, the simple example does not cover XML marshaling (e.g. xmlbeans).</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3371750151985752";
google_ad_slot = "0950801022";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p>So the purpose of this post is to provide an example that use spring-ws version 2 to implement web service with xmlbeans as XML marshaling. This example is based on <a href="http://cchweblog.wordpress.com/2009/04/27/developing-spring-web-services-with-xml-marschalling-xmlbeans-example/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cchweblog.wordpress.com');">Developing Spring Web Services with XML Marschalling – XMLBeans example</a></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:schema</span> <span style="color: #000066;">xmlns:xs</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">attributeFormDefault</span>=<span style="color: #ff0000;">&quot;unqualified&quot;</span> <span style="color: #000066;">elementFormDefault</span>=<span style="color: #ff0000;">&quot;qualified&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://robin.mytechtip.com/springws2example/temperature/schemas&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;GetTemperaturesRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;city&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:string&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;date&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:date&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:element<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;GetTemperaturesResponse&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TemperatureInfo&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
							<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;min&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:float&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
							<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;max&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:float&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
							<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;average&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:float&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;city&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:string&quot;</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;optional&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
						<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;date&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xs:date&quot;</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;optional&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
					<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
				<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:element<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:element<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:schema<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Georgia;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Using xmlbeans, we can create the java classes for this xml schema. The following command generates the jar file  temperature.jar that we need when we create the service end point.</span></p>
<blockquote><p><code>scomp -out temperature.jar temperature.xsd</code>
</p></blockquote>
<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Then we create the plain web service interface </span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mytechtip.robin.springws2example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> TemperatureService <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>TemperatureInfo<span style="color: #339933;">&gt;</span> getTemperatures<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> city, List<span style="color: #339933;">&lt;</span>Date<span style="color: #339933;">&gt;</span> date<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">and a sample implemetation.</span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mytechtip.robin.springws2example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Random</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TemperatureServiceImpl <span style="color: #000000; font-weight: bold;">implements</span> TemperatureService <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Random</span> rand <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Random</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	@Override
	<span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>TemperatureInfo<span style="color: #339933;">&gt;</span> getTemperatures<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> city, List<span style="color: #339933;">&lt;</span>Date<span style="color: #339933;">&gt;</span> dates<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		List<span style="color: #339933;">&lt;</span>TemperatureInfo<span style="color: #339933;">&gt;</span> temperatures <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>TemperatureInfo<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// Just return some random data</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Date</span> date <span style="color: #339933;">:</span> dates<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			temperatures.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TemperatureInfo<span style="color: #009900;">&#40;</span>city, date, rand.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">15</span><span style="color: #009900;">&#41;</span>,
					rand.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">15</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">15</span>, <span style="color: #009900;">&#40;</span>rand.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">15</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">2.0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> temperatures<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">This service requires a  data model “TemperatureInfo”, which is a plain java object:</span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mytechtip.robin.springws2example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.Serializable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TemperatureInfo <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Serializable</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">long</span> serialVersionUID <span style="color: #339933;">=</span> 1L<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> city<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Date</span> date<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">double</span> min<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">double</span> max<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">double</span> average<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> TemperatureInfo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> TemperatureInfo<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> city, <span style="color: #003399;">Date</span> date, <span style="color: #000066; font-weight: bold;">double</span> min, <span style="color: #000066; font-weight: bold;">double</span> max, <span style="color: #000066; font-weight: bold;">double</span> average<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">city</span> <span style="color: #339933;">=</span> city<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">date</span> <span style="color: #339933;">=</span> date<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">min</span> <span style="color: #339933;">=</span> min<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">max</span> <span style="color: #339933;">=</span> max<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">average</span> <span style="color: #339933;">=</span> average<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Some getter and setter methods</span>
    <span style="color: #666666; font-style: italic;">// ...</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Based on the above, we create the end point &#8211; “</span><span style="font-size: 11pt;font-family: Georgia;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">TemperatureMarshallingEndpoint”</span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.mytechtip.robin.springws2example</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Calendar</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.beans.factory.annotation.Autowired</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.ws.server.endpoint.annotation.Endpoint</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.ws.server.endpoint.annotation.PayloadRoot</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mytechtip.robin.springws2Example.temperature.schemas.GetTemperaturesRequestDocument</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mytechtip.robin.springws2Example.temperature.schemas.GetTemperaturesRequestDocument.GetTemperaturesRequest</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mytechtip.robin.springws2Example.temperature.schemas.GetTemperaturesResponseDocument</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.mytechtip.robin.springws2Example.temperature.schemas.GetTemperaturesResponseDocument.GetTemperaturesResponse</span><span style="color: #339933;">;</span>
&nbsp;
@Endpoint
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TemperatureMarshallingEndpoint <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> namespaceUri <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://robin.mytechtip.com/springws2example/temperature/schemas&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> TemperatureService temperatureService<span style="color: #339933;">;</span>
&nbsp;
	@Autowired
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setTemperatureService<span style="color: #009900;">&#40;</span>TemperatureService tempService<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">temperatureService</span> <span style="color: #339933;">=</span> tempService<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@PayloadRoot<span style="color: #009900;">&#40;</span>localPart <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;GetTemperaturesRequest&quot;</span>, namespace <span style="color: #339933;">=</span> namespaceUri<span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> GetTemperaturesResponseDocument getTemperatures<span style="color: #009900;">&#40;</span>
			GetTemperaturesRequestDocument request<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		GetTemperaturesRequestDocument requestDoc <span style="color: #339933;">=</span> request<span style="color: #339933;">;</span>
		GetTemperaturesRequest in <span style="color: #339933;">=</span> requestDoc.<span style="color: #006633;">getGetTemperaturesRequest</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		List<span style="color: #339933;">&lt;</span>Date<span style="color: #339933;">&gt;</span> dates <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>Date<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Calendar</span> calendar <span style="color: #339933;">:</span> in.<span style="color: #006633;">getDateArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			dates.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>calendar.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		List<span style="color: #339933;">&lt;</span>TemperatureInfo<span style="color: #339933;">&gt;</span> infos <span style="color: #339933;">=</span> temperatureService.<span style="color: #006633;">getTemperatures</span><span style="color: #009900;">&#40;</span>
				in.<span style="color: #006633;">getCity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, dates<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		GetTemperaturesResponseDocument responseDoc <span style="color: #339933;">=</span> GetTemperaturesResponseDocument.<span style="color: #006633;">Factory</span>
				.<span style="color: #006633;">newInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		GetTemperaturesResponse response <span style="color: #339933;">=</span> responseDoc
				.<span style="color: #006633;">addNewGetTemperaturesResponse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>TemperatureInfo info <span style="color: #339933;">:</span> infos<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			GetTemperaturesResponse.<span style="color: #006633;">TemperatureInfo</span> out <span style="color: #339933;">=</span> response
					.<span style="color: #006633;">addNewTemperatureInfo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			out.<span style="color: #006633;">setCity</span><span style="color: #009900;">&#40;</span>info.<span style="color: #006633;">getCity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			out.<span style="color: #006633;">setAverage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span> info.<span style="color: #006633;">getAverage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #003399;">Calendar</span> calendar <span style="color: #339933;">=</span> <span style="color: #003399;">Calendar</span>.<span style="color: #006633;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			calendar.<span style="color: #006633;">setTime</span><span style="color: #009900;">&#40;</span>info.<span style="color: #006633;">getDate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			out.<span style="color: #006633;">setDate</span><span style="color: #009900;">&#40;</span>calendar<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			out.<span style="color: #006633;">setMax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span> info.<span style="color: #006633;">getMax</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			out.<span style="color: #006633;">setMin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span><span style="color: #009900;">&#41;</span> info.<span style="color: #006633;">getMin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> responseDoc<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Georgia;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">We need to configure the web application and the spring framework to make the web service work.  So the web.xml looks like this.</span></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #00bbdd;">&lt;!DOCTYPE web-app</span>
<span style="color: #00bbdd;">    PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot;</span>
<span style="color: #00bbdd;">    &quot;http://java.sun.com/dtd/web-app_2_3.dtd&quot;&gt;</span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>springws2example<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			org.springframework.ws.transport.http.MessageDispatcherServlet
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;init-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>transformWsdlLocations<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/init-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>springws2example<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/services/*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Georgia;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">and we have the corresponding spring context configuration (“springws2example-servlet.xml” under WEB-INFO) for the servlet “springws2example”  defined in “web.xml”. NOTE: we need to make sure the schema “temperature.xsd” is under  folder “WEB-INF” so it can automatically generate the “WSDL” file, which can be accessed from “http://&lt;host&gt;:&lt;port&gt;/&lt;context-root&gt;/services/temperature.wsdl”.</span></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/beans&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span style="color: #000066;">xmlns:context</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/context&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:sws</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/web-services&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</span>
<span style="color: #009900;">  http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd</span>
<span style="color: #009900;">  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;context:component-scan</span> <span style="color: #000066;">base-package</span>=<span style="color: #ff0000;">&quot;com.mytechtip.robin.springws2example&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sws:annotation-driven</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;com.mytechtip.robin.springws2example.TemperatureServiceImpl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span></span>
<span style="color: #009900;">		<span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;marshaller&quot;</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;marshaller&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;unmarshaller&quot;</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;marshaller&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;marshaller&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.springframework.oxm.xmlbeans.XmlBeansMarshaller&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sws:dynamic-wsdl</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;temperature&quot;</span> <span style="color: #000066;">portTypeName</span>=<span style="color: #ff0000;">&quot;TempeatureService&quot;</span></span>
<span style="color: #009900;">		<span style="color: #000066;">locationUri</span>=<span style="color: #ff0000;">&quot;/services/temperature&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sws:xsd</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;/WEB-INF/temperature.xsd&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sws:dynamic-wsdl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;font-variant: normal;text-decoration: none;vertical-align: baseline">Since I don’t use maven, I need to manually put the following list of required jars into WEB-INFO/lib</span></p>
<blockquote><p>
<code>org.springframework.aop-3.0.5.RELEASE.jar<br />
org.springframework.asm-3.0.5.RELEASE.jar<br />
org.springframework.beans-3.0.5.RELEASE.jar<br />
org.springframework.context.support-3.0.5.RELEASE.jar<br />
org.springframework.context-3.0.5.RELEASE.jar<br />
org.springframework.core-3.0.5.RELEASE.jar<br />
org.springframework.expression-3.0.5.RELEASE.jar<br />
org.springframework.oxm-3.0.5.RELEASE.jar<br />
org.springframework.web.servlet-3.0.5.RELEASE.jar<br />
org.springframework.web-3.0.5.RELEASE.jar<br />
spring-ws-2.0.2.RELEASE-all.jar<br />
temperature.jar<br />
wsdl4j-1.6.1.jar<br />
xbean.jar</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://robin.mytechtip.com/2011/07/06/spring-web-service-2-0-using-xmlbeans-as-xml-marshaling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT CellTable Example (Using AsyncDataProvider)</title>
		<link>http://robin.mytechtip.com/2010/11/17/gwt-celltable-example-using-asyncdataprovider/</link>
		<comments>http://robin.mytechtip.com/2010/11/17/gwt-celltable-example-using-asyncdataprovider/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 05:25:52 +0000</pubDate>
		<dc:creator>robin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://robin.mytechtip.com/?p=134</guid>
		<description><![CDATA[GWT version 2.1 has finally been released with the anticipated business level data presentation widgets and other interesting features. CellTable is one of the new widgets that supports pagination. Therefore, there no need to use PagingScrollTable in the gwt incubator or implementations in other third-party libraries.
From the Google official document on how to use data [...]]]></description>
			<content:encoded><![CDATA[<p>GWT version 2.1 has finally been released with the anticipated business level data presentation widgets and other interesting features. <code>CellTable</code> is one of the new widgets that supports pagination. Therefore, there no need to <a href="http://robin.mytechtip.com/2010/11/15/how-to-use-pagingscrolltable-in-the-gwt-incubator/" >use <code>PagingScrollTable</code> in the gwt incubator</a> or implementations in other third-party libraries.</p>
<p>From the <a href="http://code.google.com/webtoolkit/doc/latest/DevGuideUiCellWidgets.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.google.com');">Google official document on how to use data presentation widgets</a>, you can get some examples of using these cell widgets including <code>CellTable</code>. It also includes a simple example of using <code>CellTable</code> with <code>SimplePager</code> to implement pagination. That example uses <code>ListDataProvider</code> which requires all the data that needs to be paged to be set at the client (browser) side. However, in realty, the common practice is to load only one page of data from the server (mostly pulled from a database) to the browser in order to save the bandwidth and improve the response time.</p>
<p>Of course the document indicates there are ways to implement the asynchronized page data loading from remote server.  It mentions that (at the time of writing of this post) (<strong>Update: the new Google document does not have the following text anymore</strong>):</p>
<blockquote><p><del datetime="2011-01-25T04:37:14+00:00">&#8220;GWT also provides the abstract class <code>AsyncListViewAdapter</code>, which you can  override to connect to an asynchronous data source, such as a database  running on a server.  Just implement the onRangeChanged() method and  request the data in the new Range for the specified cell widget.  When  the data is returned, call updateRowCount() and/or updateRowData() to  push the data to the widgets.&#8221;</del>
</p></blockquote>
<p><del datetime="2011-01-25T04:37:14+00:00">However,  it seems the official GWT 2.1 release does not have the class <code>AsyncListViewAdapter</code>. Instead, <code>AsyncDataProvider</code> is found. (A document bug?)</del></p>
<p>To illustrate how to use <code>AsyncDataProvider</code>, I modified a simple example from GWT below. </p>
<p><strong>Please note the example do not actually calls the server to get the data. It should be quite easy to modify the example to do so as illustrated in the next code snippet.</strong><br />
<script type="text/javascript"><!--
google_ad_client = "pub-3371750151985752";
google_ad_slot = "0950801022";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Arrays</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.cell.client.DateCell</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.core.client.EntryPoint</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.cellview.client.CellTable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.cellview.client.Column</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.cellview.client.SimplePager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.cellview.client.TextColumn</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.client.ui.RootPanel</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.user.client.ui.VerticalPanel</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.view.client.AsyncDataProvider</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.gwt.view.client.HasData</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CellTableExample <span style="color: #000000; font-weight: bold;">implements</span> EntryPoint <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * A simple data type that represents a contact.
   */</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">class</span> Contact <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> address<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Date</span> birthday<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name, <span style="color: #003399;">Date</span> birthday, <span style="color: #003399;">String</span> address<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">birthday</span> <span style="color: #339933;">=</span> birthday<span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">address</span> <span style="color: #339933;">=</span> address<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #008000; font-style: italic; font-weight: bold;">/**
   * The list of data to display.
   */</span>
  @SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;deprecation&quot;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> List<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> CONTACTS <span style="color: #339933;">=</span> <span style="color: #003399;">Arrays</span>.<span style="color: #006633;">asList</span><span style="color: #009900;">&#40;</span>
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;John&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">80</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;123 Abc Avenue&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Joe&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">22</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;22 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Tom&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">22</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;33 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Jack&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">22</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;44 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Tim&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span>, <span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">22</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;55 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Mike&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span>, <span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">22</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;66 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span>, 
      <span style="color: #000000; font-weight: bold;">new</span> Contact<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;George&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">46</span>, <span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span>,<span style="color: #0000ff;">&quot;77 Lance Ln&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onModuleLoad<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Create a CellTable.</span>
    <span style="color: #000000; font-weight: bold;">final</span> CellTable<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> table <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CellTable<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// Display 3 rows in one page</span>
    table.<span style="color: #006633;">setPageSize</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Add a text column to show the name.</span>
    TextColumn<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> nameColumn <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextColumn<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      @Override
      <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getValue<span style="color: #009900;">&#40;</span>Contact object<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> object.<span style="color: #006633;">name</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    table.<span style="color: #006633;">addColumn</span><span style="color: #009900;">&#40;</span>nameColumn, <span style="color: #0000ff;">&quot;Name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Add a date column to show the birthday.</span>
    DateCell dateCell <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateCell<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Column<span style="color: #339933;">&lt;</span>Contact, Date<span style="color: #339933;">&gt;</span> dateColumn <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Column<span style="color: #339933;">&lt;</span>Contact, Date<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span>dateCell<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      @Override
      <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Date</span> getValue<span style="color: #009900;">&#40;</span>Contact object<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> object.<span style="color: #006633;">birthday</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    table.<span style="color: #006633;">addColumn</span><span style="color: #009900;">&#40;</span>dateColumn, <span style="color: #0000ff;">&quot;Birthday&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Add a text column to show the address.</span>
    TextColumn<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> addressColumn <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextColumn<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      @Override
      <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getValue<span style="color: #009900;">&#40;</span>Contact object<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> object.<span style="color: #006633;">address</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    table.<span style="color: #006633;">addColumn</span><span style="color: #009900;">&#40;</span>addressColumn, <span style="color: #0000ff;">&quot;Address&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Associate an async data provider to the table</span>
	<span style="color: #666666; font-style: italic;">// XXX: Use AsyncCallback in the method onRangeChanged</span>
	<span style="color: #666666; font-style: italic;">// to actaully get the data from the server side</span>
    AsyncDataProvider<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> provider <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AsyncDataProvider<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      @Override
      <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onRangeChanged<span style="color: #009900;">&#40;</span>HasData<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> display<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">int</span> start <span style="color: #339933;">=</span> display.<span style="color: #006633;">getVisibleRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getStart</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">int</span> end <span style="color: #339933;">=</span> start <span style="color: #339933;">+</span> display.<span style="color: #006633;">getVisibleRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getLength</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        end <span style="color: #339933;">=</span> end <span style="color: #339933;">&gt;=</span> CONTACTS.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> CONTACTS.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> end<span style="color: #339933;">;</span>
        List<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> sub <span style="color: #339933;">=</span> CONTACTS.<span style="color: #006633;">subList</span><span style="color: #009900;">&#40;</span>start, end<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        updateRowData<span style="color: #009900;">&#40;</span>start, sub<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    provider.<span style="color: #006633;">addDataDisplay</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    provider.<span style="color: #006633;">updateRowCount</span><span style="color: #009900;">&#40;</span>CONTACTS.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    SimplePager pager <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SimplePager<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    pager.<span style="color: #006633;">setDisplay</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    VerticalPanel vp <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> VerticalPanel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    vp.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    vp.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>pager<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Add it to the root panel.</span>
    RootPanel.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>vp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>To make remote calls to retrieve table data from the server, The code snippet should look like the following.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Associate an async data provider to the table</span>
    AsyncDataProvider<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> provider <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AsyncDataProvider<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      @Override
      <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onRangeChanged<span style="color: #009900;">&#40;</span>HasData<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> display<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> start <span style="color: #339933;">=</span> display.<span style="color: #006633;">getVisibleRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getStart</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">int</span> length <span style="color: #339933;">=</span> display.<span style="color: #006633;">getVisibleRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getLength</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        AsyncCallback<span style="color: #339933;">&lt;</span>List<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;&gt;</span> callback <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AsyncCallback<span style="color: #339933;">&lt;</span>List<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          @Override
          <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onFailure<span style="color: #009900;">&#40;</span><span style="color: #003399;">Throwable</span> caught<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">Window</span>.<span style="color: #006633;">alert</span><span style="color: #009900;">&#40;</span>caught.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
          @Override
          <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onSuccess<span style="color: #009900;">&#40;</span>List<span style="color: #339933;">&lt;</span>Contact<span style="color: #339933;">&gt;</span> result<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            updateRowData<span style="color: #009900;">&#40;</span>start, result<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// The remote service that should be implemented</span>
        remoteService.<span style="color: #006633;">fetchPage</span><span style="color: #009900;">&#40;</span>start, length, callback<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://robin.mytechtip.com/2010/11/17/gwt-celltable-example-using-asyncdataprovider/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Bad Request Error with apache mod_rewrite</title>
		<link>http://robin.mytechtip.com/2009/11/05/bad-request-error-with-apache-mod_rewrite/</link>
		<comments>http://robin.mytechtip.com/2009/11/05/bad-request-error-with-apache-mod_rewrite/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 04:09:30 +0000</pubDate>
		<dc:creator>robin</dc:creator>
				<category><![CDATA[configuration]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[clean url]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://robin.mytechtip.com/?p=56</guid>
		<description><![CDATA[If you use apache module mod_alias together with module mod_rewrite, you probably encounter &#8220;Bad Request&#8221; error if the settings are not correctly configured.



For example, if you want to make the folder &#8220;/opt/mysite_v1.2&#8243; have the alias as &#8220;/mysite&#8221; so it can be accessed as http://www.mydomain.com/mysite. And you want to have clean url &#8220;/mysite/page1&#8243; mapped to &#8220;/mysite/index.php?p=page1&#8243;.
To [...]]]></description>
			<content:encoded><![CDATA[<p>If you use apache module mod_alias together with module mod_rewrite, you probably encounter &#8220;Bad Request&#8221; error if the settings are not correctly configured.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3371750151985752";
google_ad_slot = "0950801022";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<br />
For example, if you want to make the folder &#8220;/opt/mysite_v1.2&#8243; have the alias as &#8220;/mysite&#8221; so it can be accessed as http://www.mydomain.com/mysite. And you want to have clean url &#8220;/mysite/page1&#8243; mapped to &#8220;/mysite/index.php?p=page1&#8243;.</p>
<p>To define the alias, just add the following in the httpd.conf file:</p>
<blockquote><p><span style="font-family: Courier New">Alias /mysite/ &#8220;/opt/mysite_v1.2/&#8221; </span><br />
<span style="font-family: Courier New">&lt;Directory &#8220;/opt/mysite_v1.2/&#8221;&gt;</span><br />
<span style="font-family: Courier New"> Options Indexes FollowSymLinks MultiViews</span><br />
<span style="font-family: Courier New"> AllowOverride all</span><br />
<span style="font-family: Courier New"> Order allow,deny</span><br />
<span style="font-family: Courier New"> Allow from all</span><br />
<span style="font-family: Courier New">&lt;/Directory&gt;</span></p></blockquote>
<p>To allow clean URL. you need to have the following in the &#8220;.htaccess&#8221; file in the folder &#8220;/opt/mysite_v1.2&#8243;</p>
<blockquote><p><span style="font-family: Courier New">RewriteEngine On</span><br />
<span style="font-family: Courier New"># Rewrite base</span><br />
<strong>RewriteBase   /mysite</strong></p>
<p><span style="font-family: Courier New">#  now the rewriting rules</span><br />
<span style="font-family: Courier New">RewriteRule   ^([0-9a-zA-Z_]+)$  index.php?p=$1 </span></p></blockquote>
<p>Please NOTE that &#8220;<strong>RewriteBase</strong>&#8221; Directive is very essential. Without it, you will get the well known &#8220;Bad Request&#8221; Error.</p>
<p>More information can be found in <a id="m-3l" title="Apache mod_rewrite document" href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritebase" onclick="javascript:pageTracker._trackPageview('/outbound/article/httpd.apache.org');">Apache mod_rewrite documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://robin.mytechtip.com/2009/11/05/bad-request-error-with-apache-mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

