<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6255079811497987677</id><updated>2012-01-11T07:39:14.001-08:00</updated><category term='modules'/><category term='GWT'/><category term='google web toolkit'/><category term='validation'/><category term='gwt framework'/><title type='text'>Ashton Thomas</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-8119524980556826568</id><published>2011-11-11T06:31:00.000-08:00</published><updated>2011-11-11T08:15:05.631-08:00</updated><title type='text'>Common MyBatis: Mapped Statements collection does not contain value for....</title><content type='html'>Correct namespaces&lt;br /&gt;Correct package structure (same java package)&lt;br /&gt;SQL Syntax (maybe a single small query has an extra "," at the end of the select..)&lt;br /&gt;Classpath issues pulling correct jar dependencies &lt;br /&gt;needing a resultMap instead of javaType or related inconsistencies in the mapping files..&lt;br /&gt;&lt;br /&gt;and the list will grow...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-8119524980556826568?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/8119524980556826568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/11/common-mybatis-mapped-statements.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/8119524980556826568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/8119524980556826568'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/11/common-mybatis-mapped-statements.html' title='Common MyBatis: Mapped Statements collection does not contain value for....'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-3484449623708164762</id><published>2011-10-03T23:10:00.001-07:00</published><updated>2011-10-03T23:11:35.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt framework'/><category scheme='http://www.blogger.com/atom/ns#' term='google web toolkit'/><title type='text'>Building a GWT Framework</title><content type='html'>Post on posterous about building custom gwt apps/frameworks&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ashtonthomas.posterous.com/building-a-gwt-framework"&gt;http://ashtonthomas.posterous.com/building-a-gwt-framework&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-3484449623708164762?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/3484449623708164762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/10/building-gwt-framework_03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/3484449623708164762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/3484449623708164762'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/10/building-gwt-framework_03.html' title='Building a GWT Framework'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-198182531809817899</id><published>2011-09-05T17:56:00.000-07:00</published><updated>2011-09-05T17:59:50.061-07:00</updated><title type='text'>Debit/Credit Card Machines</title><content type='html'>We've all gone through the process of swiping our card and entering our pin and saying "No" to cash back..&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I have never had a machine make a noise when is shows a new screen or change the UI in some way to grab my attention to act. So after I click continue and it starts to process some stuff and I lose attention, I waste a few seconds before noticing I have to click another button.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I little "beep" sound or at least a screen flash or something would save 1-3 seconds of my day..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-198182531809817899?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/198182531809817899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/09/debitcredit-card-machines.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/198182531809817899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/198182531809817899'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/09/debitcredit-card-machines.html' title='Debit/Credit Card Machines'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-7543759166505256689</id><published>2011-09-05T17:53:00.001-07:00</published><updated>2011-09-05T17:56:27.988-07:00</updated><title type='text'>Restaurants HCI</title><content type='html'>You know how restaurants ask you for your name, enter your name, and then swipe your credit/debit card? &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why don't they swipe your card first and the the IT system can take your first name from the card? Then the server can ask for your name and if it sounds similar to the name the system pulled from the card, all the server has to do is click "Yes" or "No, enter name"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would think most of the time the name would be the same. You could even display all the names (2-3: first middle last) and have the server click the name that the customer says or "Enter Other"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Easy modification might help...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-7543759166505256689?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/7543759166505256689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/09/restaurants-hci.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/7543759166505256689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/7543759166505256689'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/09/restaurants-hci.html' title='Restaurants HCI'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-5279648577798166380</id><published>2011-07-25T04:39:00.000-07:00</published><updated>2011-07-25T04:40:10.165-07:00</updated><title type='text'>Social Apps</title><content type='html'>&lt;a href="http://ashtonthomas.com/analyze_social_apps.html"&gt;http://ashtonthomas.com/analyze_social_apps.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-5279648577798166380?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/5279648577798166380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/07/social-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/5279648577798166380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/5279648577798166380'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/07/social-apps.html' title='Social Apps'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-5442548535045347613</id><published>2011-03-10T09:01:00.001-08:00</published><updated>2011-03-10T09:26:46.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='google web toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><title type='text'>GWT Validation on Client &amp; Server</title><content type='html'>&lt;div&gt;Validation isn't easy in a GWT environment. Ruby on Rails provides very nice ways of validating and it would be nice to incorporate something similar. However, that isn't possible when application logic is split between Client and Server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;for my purposes I have used the following diagram to think through how I would like to do validation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-EUhUa48nULU/TXkEGFMv2tI/AAAAAAAAAAY/DNQwApRdlF4/s1600/gwt_validation_phases.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 118px;" src="http://3.bp.blogspot.com/-EUhUa48nULU/TXkEGFMv2tI/AAAAAAAAAAY/DNQwApRdlF4/s320/gwt_validation_phases.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5582497715623811794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are roughly 4 areas that you can do validation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Input Fields / Pre-client-side-object-creation&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- this is nice because once everything checks out, you can easily take the values from the form elements and construct your DTO in order to send an RPC.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- At this point you can also easily make any UI updates/provide feedback &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Client-side Object Creation&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- If you validate after you have your DTO constructed you can easily share more code between Client-Server (Since the server will only deal with the actual object as opposed to form elements)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- However, it may be a little bit more tricky to update the UI to provide feedback&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) Pre-Database (or external service)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- Of course you want to validate on the server too. You can choose to only validate on the server but you may have errors when trying to go from a form element to a specific type during object creation. At this point you can only double check the client side validation. Any more and you will probably have to hit the database (or some other service)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) Database or External Service&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;- You will need to validate uniqueness or referential integrity and you will have to use the DB for that. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the Client, you need to decide how often to validate since GWT makes it easy to validate on every keystroke, a new onFocus, or on submit. You will also have to decide how interactive you want to be when updating the UI. If you don't care about the UI, you may be able to get away with just creating the client-side objects (any form value not compatible with the java type can just be null? or 0? oh this is a problem...)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the server you would like to reuse the validation code used in client but that is not always possible given the route you choose to take and the complexity of your solution. You will probably want to provide some sort of Exception that the client can handle and update appropriately. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My Solution:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have decided to validate on the client before creating the DTO object. I have built a framework which allows me to create a "check" for each form element by passing it a UIObject (which it uses to abstract the value and updates accordingly on any errors) and another optional UIObject (SimplePanel) which I use to inject any messages. I then call a chain of methods on this "check" object setting the properties of the check (nil, blank, only_if, min, max, range, a list of possible values, etc) (I got this chaining idea from &lt;a href="http://gwt-vl.sourceforge.net/"&gt;http://gwt-vl.sourceforge.net/&lt;/a&gt;). Currently I only have IntegerValidator and StringValidator which both extend a general Validator which provides base functionality for updating the UIObject and extracting the appropriate value for a range of UIObjects - Will need to add things like Date/Time/Etc Validator&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since I want to do certain actions on the client that I do not need on the server, I have found it easier to just recreate the IntegerServerValidator and use a very similar format.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the server I have been battling with what type of Exceptions do I throw when there is an error. I have created regular custom exceptions for "UserAlreadyExists" etc. However, know I am toying with creating a single Exception which will wrap other Errors allowing me to pass in multiple errors at a time and bundle some functionality.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many different approaches and many available libraries. It requires a good bit of thought and planning to either create your own framework or use someone else's &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-5442548535045347613?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/5442548535045347613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/03/gwt-validation-on-client-server.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/5442548535045347613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/5442548535045347613'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/03/gwt-validation-on-client-server.html' title='GWT Validation on Client &amp; Server'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-EUhUa48nULU/TXkEGFMv2tI/AAAAAAAAAAY/DNQwApRdlF4/s72-c/gwt_validation_phases.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-8763666057572942599</id><published>2011-02-09T06:43:00.000-08:00</published><updated>2011-02-09T06:52:59.821-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='modules'/><category scheme='http://www.blogger.com/atom/ns#' term='google web toolkit'/><title type='text'>Multiple Modules in Google Web Toolkit (GWT)</title><content type='html'>Sometimes you may want to have a GWT application that has multiple EntrePoints/Modules. An example of this may be an Administration module. If your host page is MyApp.html and your Module and Entrypoint is MyApp.gwt.xml and MyApp.java, you can always add MyAdmin.html in the war directory and add the new module.&lt;br /&gt;&lt;br /&gt;1) Add the new host file&lt;br /&gt;2) Add another gwt.xml module file&lt;br /&gt;3) Add the new module&lt;br /&gt;4) Update your build xml&lt;br /&gt;&lt;br /&gt;Since you may have a gwt app configured slightly different, I will add my details here and you can adjust them if needed&lt;br /&gt;&lt;br /&gt;com.myapp/&lt;br /&gt;- MyApp.gwt.xml&lt;br /&gt;- MyAdmin.gwt.xml (&lt;module rename-to='MyAdmin'&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;com.myapp.client.admin&lt;br /&gt;- MyAdmin.java (extends EntryPoint)&lt;br /&gt;- com.myapp.client.admin.activity&lt;br /&gt;- com.myapp.client.admin.place&lt;br /&gt;- com.myapp.client.admin.etc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;com.myapp.client.main&lt;br /&gt;- MyApp.java (extends EntryPoint)&lt;br /&gt;Sometimes you may want to have a GWT application that has multiple EntrePoints/Modules. An example of this may be an Administration module. If your host page is MyApp.html and your Module and Entrypoint is MyApp.gwt.xml and MyApp.java, you can always add MyAdmin.html in the war directory and add the new module.&lt;br /&gt;&lt;br /&gt;1) Add the new host file&lt;br /&gt;2) Add another gwt.xml module file&lt;br /&gt;3) Add the new module&lt;br /&gt;4) Update your build xml&lt;br /&gt;&lt;br /&gt;Since you may have a gwt app configured slightly different, I will add my details here and you can adjust them if needed&lt;br /&gt;&lt;br /&gt;com.myapp/&lt;br /&gt;- MyApp.gwt.xml&lt;br /&gt;- MyAdmin.gwt.xml (&lt;module rename-to='MyAdmin'&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;com.myapp.client.admin&lt;br /&gt;- MyAdmin.java (extends EntryPoint)&lt;br /&gt;- com.myapp.client.main.activity&lt;br /&gt;- com.myapp.client.main.place&lt;br /&gt;- com.myapp.client.main.etc&lt;br /&gt;&lt;br /&gt;war/&lt;br /&gt;- MyApp.html:     &lt;script type="text/javascript" language="javascript" src="MyApp/MyApp.nocache.js"&gt;&lt;/script&gt;&lt;br /&gt;- MyAdmin.html:     &lt;script type="text/javascript" language="javascript" src="MyAdmin/MyAdmin.nocache.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;build.xml:&lt;br /&gt;&lt;br /&gt;  &lt;target name="gwtc" depends="javac" description="GWT compile to JavaScript"&gt;&lt;br /&gt;    &lt;java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"&gt;&lt;br /&gt;      &lt;classpath&gt;&lt;br /&gt;        &lt;pathelement location="src"/&gt;&lt;br /&gt;        &lt;path refid="project.class.path"/&gt;&lt;br /&gt;      &lt;/classpath&gt;&lt;br /&gt;      &lt;!-- add jvmarg -Xss16M or similar if you see a StackOverflowError --&gt;&lt;br /&gt;      &lt;jvmarg value="-Xmx512M"/&gt;&lt;br /&gt;      &lt;!-- Additional arguments like -style PRETTY or -logLevel DEBUG --&gt;&lt;br /&gt;      &lt;arg value="-compileReport"/&gt; &lt;br /&gt;      &lt;arg value="-XsoycDetailed"/&gt;&lt;br /&gt;      &lt;arg value="com.myapp.MyAdmin"/&gt;&lt;br /&gt;      &lt;arg value="com.myapp.MyApp"/&gt;&lt;br /&gt;    &lt;/java&gt;&lt;br /&gt;  &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You may want to structure this a little bit different based on how connected the modules are or what your particular use is..&lt;br /&gt;You may also need to work with the web.xml or servlets file depending on your configuration (rpcs coming into /MyApp/something and /MyAdmin/something.rpc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-8763666057572942599?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/8763666057572942599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/8763666057572942599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/8763666057572942599'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html' title='Multiple Modules in Google Web Toolkit (GWT)'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-2410783905328543904</id><published>2010-07-20T09:29:00.000-07:00</published><updated>2010-07-20T09:34:42.626-07:00</updated><title type='text'>Facebook is Crawlable?</title><content type='html'>Google is making a push to help AJAX applications (Websites/apps that are normally not very friendly to Google's search engine) act more like regular sites which are easily crawlable/indexable/etc.&lt;br /&gt;&lt;br /&gt;http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html&lt;br /&gt;&lt;br /&gt;You can tell a search engine (the indexer/crawler) that your AJAX app does adhere to these new standards by putting a "#!" in the URL.&lt;br /&gt;&lt;br /&gt;I haven't looked very far into this but Facebook uses this (http://www.facebook.com/#!/ashtonthomas)&lt;br /&gt; which makes me wonder why my facebook profile should be crawlable by search engines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-2410783905328543904?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/2410783905328543904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2010/07/facebook-is-crawlable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/2410783905328543904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/2410783905328543904'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2010/07/facebook-is-crawlable.html' title='Facebook is Crawlable?'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-6119285236109855465</id><published>2010-04-11T08:31:00.000-07:00</published><updated>2010-04-11T08:40:56.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>Learning GWT</title><content type='html'>Over the next few months I will be researching and educating myself on everything that is involved with GWT RIA Application. I doubt I am alone in this challenge, so I will be posting updates as I find good resources and discover new things.&lt;br /&gt;&lt;br /&gt;GWT Fundamentals, Organization &amp; Structure, Architecture &amp; Patterns, Database Connection, Deployment, and more&lt;br /&gt;&lt;br /&gt;Some Links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ajaxian.com/by/topic/gwt"&gt;Ajaxian&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.hivedevelopment.co.uk/2009/08/google-web-toolkit-gwt-mvp-example.html"&gt;GWT Examples and Design Patterns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=2&amp;ved=0CBQQFjAB&amp;url=ftp%3A%2F%2Fftp.software.ibm.com%2Fsoftware%2Fdw%2Fwes%2Fhipods%2FAdvanced_AJAX_with_GWT_wp16Feb.pdf&amp;ei=VuzBS_TfO4TGlQfrq4TbBA&amp;usg=AFQjCNGgu6qsqe50B-gYi9M0I142J5PPFw&amp;sig2=_pZsoXHAhdFp9iPUlh1s4g"&gt;IBM PDF for using GWT 2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/library/j-ajax4/index.html"&gt;IBM Exploring GWT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/library/os-ad-gwt1/"&gt;IBM GWT Tutorial Apache Derby &amp; Eclipse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-6119285236109855465?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/6119285236109855465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2010/04/learning-gwt.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/6119285236109855465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/6119285236109855465'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2010/04/learning-gwt.html' title='Learning GWT'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255079811497987677.post-7960350838953052185</id><published>2009-11-21T10:32:00.000-08:00</published><updated>2009-11-22T08:45:12.726-08:00</updated><title type='text'>Google Wave, HTML 5 and the Internet</title><content type='html'>&lt;span style="font-size:100%;"&gt;(Please let me no if their are any errors with content, spelling or grammer:)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-family:Georgia;font-size:100%;"  &gt;&lt;b&gt;Google Wave:&lt;/b&gt;&lt;br /&gt;"a personal communication and collaboration tool" (Wikipedia)&lt;br /&gt;&lt;br /&gt;"If email were invented today.." What does this really mean?&lt;br /&gt;&lt;br /&gt;Google Wave is a &lt;b&gt;bundle of technologies &lt;/b&gt;working together to change  the way we communicate. We use &lt;u&gt;Email&lt;/u&gt;, &lt;u&gt;Instant Messages&lt;/u&gt;, &lt;u&gt; Blogs&lt;/u&gt;, &lt;u&gt;Twitter&lt;/u&gt;, &lt;u&gt;Word Documents&lt;/u&gt;, &lt;u&gt;Wikis&lt;/u&gt;, &lt;u&gt;Social  Networks&lt;/u&gt;, etc..&lt;br /&gt;&lt;br /&gt;Well, each one of these means of communication use a different "&lt;b&gt;Data  Model&lt;/b&gt;" to organize the data and information.&lt;br /&gt;&lt;br /&gt;Google Wave uses a "Data Model" that is very &lt;b&gt;&lt;i&gt;fundamental&lt;/i&gt;&lt;/b&gt;(simple)  and very &lt;b&gt;&lt;i&gt;flexible &lt;/i&gt;&lt;/b&gt;allowing for a &lt;u&gt;convergence &lt;/u&gt;or &lt;u&gt; integration &lt;/u&gt;of all these means of communication techniques.&lt;br /&gt;&lt;br /&gt;What does this mean?&lt;br /&gt;Email has a problem because it is sequential and you send the whole  message each time and not just the new part&lt;br /&gt;Instant Message is Sequential as well and requires your continuous attention.&lt;br /&gt;Wikis have a problem because it is hard to understand who contributed  what and at what point in the time line of the article.&lt;br /&gt;Social Networks have a hard time creating an organized and productive  means of communication instead of a "just catching up environment"&lt;br /&gt;&lt;br /&gt;There is more to this but this is enough to explain where Google Wave  fits in...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Google Wave says:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We are going to organize our Threads, our Communication Sessions, our  Documents, our Living Documents in the most fundamental way possible.&lt;br /&gt;Instead of using a data model which is just optimized for one means  of communication.&lt;br /&gt;Our new way of organizing our data (Our Data Model) will satisfy the  complete integration of all the means listed above.&lt;br /&gt;&lt;br /&gt;We are going to make lightweight pieces of information that can be connected  in a variety of ways and at different points in time to integrate the  above applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can start a communication session or thread that can be updated  in many different ways. More users can be added to the conversation.  you can control what parts of the conversation are seen by what other  members. You can update and edit previous parts of the communication  messages and be able to easily determine who updated and changed what  parts of the messages ("messages" or "pieces" is  more accurate because each "session" or "thread"  is made up of many "pieces" which can be inserted anywhere  and at anytime and can be updated/edited by anyone). You can also do  everything in real time with different people editing different parts  and have real time keystroke updates from the other members. You can  have the message thread or session or "Wave" integrated with  external applications. You can also replay the time line of the "Wave"  to see a very accurate depiction of what happened (If you were not there  the whole time to see &lt;i&gt;what&lt;/i&gt; happened &lt;i&gt;when&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Current Limitations:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Currently, it is very difficult to implement applications like Google  Wave because of a lack of updated Standards.&lt;br /&gt;HTML 5 will hopefully remedy some of these limitations&lt;br /&gt;&lt;br /&gt;Applications like Wave need to keep connections to the server open&lt;br /&gt;(This is different from just being able to send a request, get a response,  and be done)&lt;br /&gt;now you have to be able to communicate constantly which eats up server  resources very fast.&lt;br /&gt;&lt;br /&gt;HTML5 will include new visualization methods (Canvas and 2D modeling  &amp;amp; new Video/Media embedding techniques), Drag and Drop Features  (to drag and drop media from Local computers to remote application ::  Easy upload or download :: Fade the boundary from Web Based Application  and Desktop Application), Offline Storage Capabilities (Database for  Web App to use while not connected to internet or remote application  :: Again Fading the boundary between remote/web based and desktop),  and WebSockets which create a more resource efficient means of communicating  "upstream" and "downstream" concurrently and continuously  (for instant and live updating and stuff:)&lt;br /&gt;&lt;br /&gt;How Does this apply to Networks&lt;br /&gt;&lt;br /&gt;Well the visualizations and drag and drop features are more for the  user.&lt;br /&gt;&lt;br /&gt;The Offline Storage Capabilities means that we can lose network connection  (which means our dependency on network and connection goes down and  fault tolerance goes up :: but this almost means nothing because the  amount of time you go without a connection will drop as these technologies  become more prevalent :: no BIG deal but kinda a big deal)&lt;br /&gt;&lt;br /&gt;The Kicker is the WebSocket. We have probably heard of AJAX (whether  or not you know exactly what it is or does, you know it is involved  with sending new data from the server to client (Browser).&lt;br /&gt;The other technology less commonly known is Comet (Comet is, more or  less, a hack. it is a way of getting data to and from computers on the  internet in a seemingly instant or real-time fashion. Also, Comet can  easily be misused since it not an actual thing. it is just a way of  achieving this seemingly real-time communication connection)&lt;br /&gt;&lt;br /&gt;HTML 5 introduces WebSockets which are more fundamental to the Internet,  Browsers, and HTML standards. Therefore, it is less commonly viewed  as a "hack".&lt;br /&gt;&lt;br /&gt;Google Wave uses HTML 5 and I am not sure about its actual implementation  of WebSockets... let's just assume they are using these WebSocket things  which aren't fully standardized (just like most things in HTML 5 even  though most Browsers already support the standards... hopefully this  isn't confusing even though it is confusing ..:)&lt;br /&gt;&lt;br /&gt;This new implementation more efficiently uses network resources:&lt;br /&gt;&lt;br /&gt;"The HTML 5 specification introduces the Web Socket interface,  which defines a &lt;b&gt;full-duplex &lt;/b&gt;communications channel that operates  over a &lt;b&gt;single socket &lt;/b&gt;and is exposed via a JavaScript interface  in HTML 5 compliant browsers."&lt;br /&gt;(&lt;a href="http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket" target="_blank"&gt;http://www.kaazing.org/&lt;wbr&gt;confluence/display/KAAZING/&lt;wbr&gt;What+is+an+HTML+5+WebSocket&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This means we use ONE SINGLE SOCKET "full-duplex" connection  which reduces the number of concurrent connections and reduces the stress  of the servers and network traffic (the last bit on reducing network  traffic may not be accurate but I think it's true)&lt;br /&gt;&lt;br /&gt;The part of the quote about JavaScript accessible in HTML 5 means that  if you are dealing with an HTML5 compliant Browser you can write an  application which uses WebSockets by using pure JavaScript. Since this  still does not make a whole bunch of sense lets say: Your web developer  or the person creating the web application does not need to implement  any "hacks" or technologies not fundamental to your normal  Web technologies (HTML and JavaScript are the most fundamental technologies  :: Flash, JAVA, and Microsoft Silverlight, Comet-ish stuff are NOT fundamental  and are viewed more as hacks and just workarounds because of current  web limitations; hopefully this make sense)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Google Wave and Future Implications:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Reduce the use of Email (create a more efficient means of communication  and improve collaborations and communication).&lt;br /&gt;Force Microsoft Internet Explorer to accept HTML 5.&lt;br /&gt;Increase the movement not to use Microsoft Internet Explorer.&lt;br /&gt;Support the Adoption and Agreement on HTML 5.&lt;br /&gt;Support the Adoption and Development of the new Wave Protocol.&lt;br /&gt;Create an environment where Google really will rule the earth (or just  create a more sustainable market for growth).&lt;br /&gt;And more stuff...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255079811497987677-7960350838953052185?l=ashtoncthomas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ashtoncthomas.blogspot.com/feeds/7960350838953052185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ashtoncthomas.blogspot.com/2009/11/google-wave-html-5-and-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/7960350838953052185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255079811497987677/posts/default/7960350838953052185'/><link rel='alternate' type='text/html' href='http://ashtoncthomas.blogspot.com/2009/11/google-wave-html-5-and-internet.html' title='Google Wave, HTML 5 and the Internet'/><author><name>Ashton Thomas</name><uri>http://www.blogger.com/profile/04824210258049738100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
