<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEMARng9fCp7ImA9WhRUFU0.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816</id><updated>2012-01-25T14:40:47.664Z</updated><category term="ruby" /><category term="checkstyle" /><category term="SQL" /><category term="tcserver" /><category term="forerunner" /><category term="keepass" /><category term="junit" /><category term="annotations" /><category term="github" /><category term="tomcat" /><category term="SQLServer" /><category term="jar" /><category term="SingleSignOn" /><category term="grails" /><category term="outofmemory" /><category term="TDD" /><category term="agile" /><category term="ivy" /><category term="easymock" /><category term="spring" /><category term="cycling" /><category term="eclipse" /><category term="hibernate3" /><category term="linux" /><category term="NTLM" /><category term="hibernate" /><category term="TestingAuthenticationToken" /><category term="ant" /><category term="dbunit" /><category term="mysql" /><category term="php" /><category term="restful" /><category term="aop" /><category term="intellij" /><category term="bash" /><category term="SQLCMD" /><category term="oracle" /><category term="dwr" /><category term="android" /><category term="dns" /><category term="namespace" /><category term="ssl" /><category term="dropbox" /><category term="duplicatemappingexception" /><category term="ie7" /><category term="search" /><category term="https" /><category term="jodatime" /><category term="windows7" /><category term="ubuntu" /><category term="jcifs" /><category term="garmin" /><category term="vista" /><title>Bill Comer's Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://billcomer.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/BillComersBlog" /><feedburner:info uri="billcomersblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEMBSX44fCp7ImA9WhRWFkQ.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-4964413725837507501</id><published>2012-01-04T17:00:00.002Z</published><updated>2012-01-04T17:00:58.034Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-04T17:00:58.034Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><title>Multiple search windows in eclipse</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vsQ2JG_8ZJSpAUKU_g6vetLFA78/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vsQ2JG_8ZJSpAUKU_g6vetLFA78/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vsQ2JG_8ZJSpAUKU_g6vetLFA78/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vsQ2JG_8ZJSpAUKU_g6vetLFA78/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;This is a really simple but cute little feature.&lt;br /&gt;
&lt;br /&gt;
If you pin one search window using the pin icon at the right hand end of buttons then the next time you do a search eclipse will open up a new Search window.&lt;br /&gt;
&lt;br /&gt;
There is also a search history that you can look through just to the left of the pin icon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-4964413725837507501?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/FtPFptrmMeo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/4964413725837507501/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=4964413725837507501" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4964413725837507501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4964413725837507501?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/FtPFptrmMeo/multiple-search-windows-in-eclipse.html" title="Multiple search windows in eclipse" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2012/01/multiple-search-windows-in-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QERn8_fip7ImA9WhdVF0U.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-5378964558128741494</id><published>2011-09-23T14:54:00.000+01:00</published><updated>2011-09-23T15:48:27.146+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T15:48:27.146+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><title>finding the correct spring jar for a known class</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/atZ2e6uQjRhY9hxgiYsBufV-Mm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atZ2e6uQjRhY9hxgiYsBufV-Mm0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/atZ2e6uQjRhY9hxgiYsBufV-Mm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/atZ2e6uQjRhY9hxgiYsBufV-Mm0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;With &lt;a href="http://www.springsource.org/download"&gt;Spring 3&lt;/a&gt; you now have to get all the individual jars that you need for an application.&lt;br /&gt;
&lt;br /&gt;
One solution is obviously to download the lot.&lt;br /&gt;
&lt;br /&gt;
But what if you just want to install what is needed.&lt;br /&gt;
How do you easily find which jar a class is in ?&lt;br /&gt;
&lt;br /&gt;
Well I have just found this &lt;a href="http://ebr.springsource.com/repository/app/search"&gt;Spring Bundle Search tool&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can enter just the class name or the class with its full package name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-5378964558128741494?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/R8Ii8Nu6LuM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/5378964558128741494/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=5378964558128741494" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5378964558128741494?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5378964558128741494?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/R8Ii8Nu6LuM/finding-correct-spring-jar-for-class.html" title="finding the correct spring jar for a known class" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/09/finding-correct-spring-jar-for-class.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUEQHo_fyp7ImA9WhdXF0U.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-3976186743086572954</id><published>2011-08-31T09:41:00.002+01:00</published><updated>2011-08-31T09:43:21.447+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T09:43:21.447+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="windows7" /><title>windows7 Administrator mode from the command line</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SgNd-8WphPabAEyVKcyrObR5fTc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SgNd-8WphPabAEyVKcyrObR5fTc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SgNd-8WphPabAEyVKcyrObR5fTc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SgNd-8WphPabAEyVKcyrObR5fTc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Type 'cmd' in the Run window as normal but instead of simply hitting the return key, use Ctrl-Shift-Return&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-3976186743086572954?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/Z75TMoWAg3s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/3976186743086572954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=3976186743086572954" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3976186743086572954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3976186743086572954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/Z75TMoWAg3s/windows7-administrator-mode-from.html" title="windows7 Administrator mode from the command line" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/08/windows7-administrator-mode-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHQHg-fyp7ImA9WhRQFEg.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-8812565792754301054</id><published>2011-07-04T14:27:00.020+01:00</published><updated>2011-12-09T17:00:31.657Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T17:00:31.657Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><category scheme="http://www.blogger.com/atom/ns#" term="aop" /><category scheme="http://www.blogger.com/atom/ns#" term="annotations" /><title>Auditing using AOP and annotations in Spring</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RH1RqnUOIo0OuVT9Nek1Q2qTFc4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RH1RqnUOIo0OuVT9Nek1Q2qTFc4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RH1RqnUOIo0OuVT9Nek1Q2qTFc4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RH1RqnUOIo0OuVT9Nek1Q2qTFc4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Lord, how I dislike the old XML configuration for &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;AOP&lt;/a&gt; (among other things).&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have not given myself the opportunity to try out &lt;a href="http://static.springsource.org/spring/docs/2.0.x/reference/aop.html"&gt;Spring's annotation based AOP&lt;/a&gt; in spring, until now and boy is it easy (with one minor gotcha).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here are the building blocks:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1) &lt;a href="http://www.java2s.com/Tutorial/Java/0020__Language/CreatingAnnotations.htm"&gt;Make your own Annotation&lt;/a&gt;. This is a simple way to mark all methods you want to audit.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(153, 153, 153); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(153, 153, 153); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(153, 153, 153); border-top-style: dashed; border-top-width: 1px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 14px;"&gt;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ParmsAudit
{
  ActionAuditType  auditType();
}&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black; font-size: 12px; line-height: 14px;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2) ActionAuditType  is an enum that will be used to identify the thing being audited.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public enum ActionAuditType {
USER_LOGGED_IN("User Logged In"),
USER_LOGGED_OUT("User Logged Out");

private String mDescription;
&lt;/code&gt;&lt;code&gt;  private ActionAuditType(String aDescription) {
 mDescription = aDescription;
}


public String getDescription() {
 return mDescription;
}
public void setDescription(String aDescription) {
 mDescription = aDescription;
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
3) Create an Aspect. This is the code that is run when the method marked by the annotation is called.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;Here is the minor gotcha - well for me atleast.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;  I had to list the full package path to the Annotation in the @Before statement.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;
@Aspect
public class AuditAspect {

@Before(value="execution(@uk.co.billcomer.audit.ParmsAudit * *(..)) &amp;amp;&amp;amp;   @annotation(parmsAudit)", argNames="parmsAudit")
public void logTheAuditActivity(JoinPoint aPoint, ParmsAudit parmsAudit) {
 String userName = getUserName();
 mlogger.info("Parms Auditing User Name: " + userName);
 mlogger.info("auditType:" + parmsAudit.auditType().getDescription());

 String arguments = getArgs(aPoint.getArgs());

 if (arguments.length() &amp;gt; 0) {
 mlogger.info("args-" + arguments);
 }
}

private String getArgs(Object[] args) {
 String arguments = "";
 int argCount = 0;

 for (Object object : args) {
   if (argCount &amp;gt; 0) {
     arguments += ", ";
   }
   arguments += "arg[" + ++argCount + "]=" + "[" + object + "]";
 }
 return arguments;
}

private String getUserName() {
 try {
   return SecurityContextHolder.getContext().getAuthentication().getName();
 } catch (NullPointerException npe) {
   return "Unknown User";
 }
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
4) Mark the method to be audited.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(153, 153, 153); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(153, 153, 153); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(153, 153, 153); border-top-style: dashed; border-top-width: 1px; color: black; font-family: 'Andale Mono', 'Lucida Console', Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;"&gt;&lt;code&gt;
@Service("parms.DummyAuditThing")
public class DummyAuditThing implements DummyAudit {

@Override
@ParmsAudit(auditType = ActionAuditType.USER_LOGGED_IN)
public void aspectAuditMethodTwoParams(String param1, Long param2) {
 mlogger.info("In method to be audited param1[" + param1 + "], p2[" + param2 + "]");
}
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&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;
5) Context configuration&lt;/div&gt;
&lt;div&gt;
This is needed to speed up the compilation process. Essentially it tells the compiler what classes will have Aspects&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border-bottom-color: rgb(153, 153, 153); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(153, 153, 153); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(153, 153, 153); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(153, 153, 153); border-top-style: dashed; border-top-width: 1px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;"&gt;&lt;code style="color: black; font-family: 'Andale Mono', 'Lucida Console', Monaco, fixed, monospace; font-size: 12px; line-height: 14px;"&gt; &amp;nbsp; &lt;/code&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 14px;"&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;   &amp;lt;aop:aspectj-autoproxy proxy-target-class="true"/&amp;gt;   
   
   &amp;lt;bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/&amp;gt;
   &amp;lt;bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/&amp;gt;
   
   &amp;lt;bean id="bill.auditAspect" class="uk.co.billcomer.audit.AuditAspect" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Andale Mono', 'Lucida Console', Monaco, fixed, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 14px;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-8812565792754301054?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/oD8ldL94ZN0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/8812565792754301054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=8812565792754301054" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8812565792754301054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8812565792754301054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/oD8ldL94ZN0/auditing-using-aop-and-annotations-in.html" title="Auditing using AOP and annotations in Spring" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/07/auditing-using-aop-and-annotations-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMR3c-fCp7ImA9WhZVGUw.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-5906833354605743753</id><published>2011-06-01T08:07:00.002+01:00</published><updated>2011-06-01T08:13:06.954+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-01T08:13:06.954+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>android phone calendar not synching</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YedSkFFnqcybA2jhu76ynoUyVPE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YedSkFFnqcybA2jhu76ynoUyVPE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YedSkFFnqcybA2jhu76ynoUyVPE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YedSkFFnqcybA2jhu76ynoUyVPE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The other day the calendar on my &lt;a href="http://www.android.com/"&gt;android &lt;/a&gt;phone stopped synching correctly to my google calendars.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was partly way there. It new about the calendars but would not display any of the data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I found &lt;a href="http://www.google.com/support/forum/p/android/thread?tid=574e234a1cd6e410&amp;amp;hl=en"&gt;this &lt;/a&gt;which did not describe my solution 100% but put me on the right track.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Go to Settings-&amp;gt;Applications-&amp;gt;Manage Applications-&amp;gt;Calendar and select 'Clear data'.&lt;/div&gt;&lt;div&gt;This will give you a pop up box saying all the applications data willbe deleted permanently. Do not worry &amp;amp; select the the 'OK'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now go back to your calendar app and you will find all your calendars restored.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-5906833354605743753?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/4Dy2axdTwwk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/5906833354605743753/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=5906833354605743753" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5906833354605743753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5906833354605743753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/4Dy2axdTwwk/android-phone-calendar-not-synching.html" title="android phone calendar not synching" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/06/android-phone-calendar-not-synching.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4FQ3w5eSp7ImA9WhZVFEw.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-2533337433633660755</id><published>2011-05-26T14:44:00.003+01:00</published><updated>2011-05-26T14:51:52.221+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T14:51:52.221+01:00</app:edited><title>unix WC command out by 1 - wtf</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lX3NhF__eDIgMMmvRxzSfK2uy3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lX3NhF__eDIgMMmvRxzSfK2uy3g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lX3NhF__eDIgMMmvRxzSfK2uy3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lX3NhF__eDIgMMmvRxzSfK2uy3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I am develop on a windows PC (for my sins) but to keep me feeling secure I use &lt;a href="http://www.cygwin.com/"&gt;cygwin &lt;/a&gt;(a unix shell for windows. Today this has done me in.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The application I am working has to create files and in the final line of the file it has to include the number of the lines in the file. All simple enough and it did exactly what it was supposed to do.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However when I came to check the results manually I used the unix '&lt;a href="http://en.wikipedia.org/wiki/Wc_(Unix)"&gt;wc&lt;/a&gt;' command and this gave me a row count 1 less than what I was expecting and what the footer said was in the file. Strange.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I edited the file with '&lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt;' and low &amp;amp; behold wc was incorrect - what is going on ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then edited the file with &lt;a href="http://www.physics.ohio-state.edu/~prewett/hexedit/"&gt;hexEdit &lt;/a&gt;and noticed there was no CR &amp;amp; LF on the last line. Adding these made wc give the correct count.&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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-2533337433633660755?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/P-1RcIOeGSs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/2533337433633660755/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=2533337433633660755" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2533337433633660755?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2533337433633660755?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/P-1RcIOeGSs/unix-wc-command-out-by-1-wtf.html" title="unix WC command out by 1 - wtf" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/05/unix-wc-command-out-by-1-wtf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAFQnkyfip7ImA9Wx9aF0s.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-248792830730144956</id><published>2011-03-10T14:05:00.004Z</published><updated>2011-03-10T14:18:33.796Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-10T14:18:33.796Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hibernate" /><title>Logging bind variables with hibernate</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MlZEKh9CmY0zDHAFjul_PSOR_KM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MlZEKh9CmY0zDHAFjul_PSOR_KM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MlZEKh9CmY0zDHAFjul_PSOR_KM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MlZEKh9CmY0zDHAFjul_PSOR_KM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;You could use something like &lt;a href="http://sourceforge.net/projects/p6spy/"&gt;p6spy&lt;/a&gt;  as suggested by a friend of mine &lt;a href="http://andykayley.blogspot.com/2008/07/how-to-print-out-bind-variables-in-java.html"&gt;Andy&lt;/a&gt;, but I wanted something that was trivial to configure and potentially available to the live application and easy to set up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After a bit of digging I found &lt;a href="http://sathyasekar.wordpress.com/2008/12/29/enabling-log4j-logging-in-hibernate/"&gt;Sathya&lt;/a&gt;'s blog with the solution I needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I already had the &lt;a href="http://logging.apache.org/log4j/1.2/"&gt;log4j&lt;/a&gt; jar.&lt;/div&gt;&lt;div&gt;What I was missing was the &lt;span class="Apple-style-span" style="color: rgb(124, 166, 83)"&gt;&lt;a href="http://www.slf4j.org/"&gt;slf4j-log4j12&lt;/a&gt; &lt;/span&gt;jar&lt;/div&gt;&lt;br /&gt;&lt;div&gt;and the following line in my log4j.properties&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;log4j.logger.org.hibernate.type=TRACE&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(124, 166, 83); font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(124, 166, 83); font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px; "&gt;&lt;br /&gt;&lt;/span&gt;&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/9220321694195024816-248792830730144956?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/oCKPQVNq6vk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/248792830730144956/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=248792830730144956" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/248792830730144956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/248792830730144956?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/oCKPQVNq6vk/logging-bind-variables-with-hibernate.html" title="Logging bind variables with hibernate" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/03/logging-bind-variables-with-hibernate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUEQ3s4eSp7ImA9Wx9bFUk.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-1024571197375430282</id><published>2011-02-24T09:48:00.005Z</published><updated>2011-02-24T10:43:22.531Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T10:43:22.531Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><title>FileUpload with multipart/form-data in Spring 2.5.x and Annotations</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w6GJ31QEjJPGR-maC7egtroXI4k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w6GJ31QEjJPGR-maC7egtroXI4k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w6GJ31QEjJPGR-maC7egtroXI4k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w6GJ31QEjJPGR-maC7egtroXI4k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Firstly a qualifier, This is for Spring 2.5.x with annotations.&lt;div&gt;I have not had the pleasure of upgrading to Spring 3.X yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is some excellent documentation on &lt;a href="http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html"&gt;File Upload with Spring&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However for an annotation driven Controller it misses out one important step, namely  the &lt;a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/InitBinder.html"&gt;@InitBinder&lt;/a&gt; annotation.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;@InitBinder&lt;br /&gt;public void initBinder(ServletRequestDataBinder aBinder) throws ServletException {&lt;br /&gt;// to actually be able to convert Multipart instance to a String&lt;br /&gt;// we have to register a custom editor&lt;br /&gt;aBinder.registerCustomEditor(String.class, new StringMultipartFileEditor());&lt;br /&gt;// now Spring knows how to handle multipart object and convert them&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&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/9220321694195024816-1024571197375430282?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/8v0WA_k2cPM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/1024571197375430282/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=1024571197375430282" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/1024571197375430282?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/1024571197375430282?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/8v0WA_k2cPM/fileupload-with-multipartform-data-in.html" title="FileUpload with multipart/form-data in Spring 2.5.x and Annotations" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/02/fileupload-with-multipartform-data-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcHQ3c4fSp7ImA9Wx9UGUk.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-9173633651337822154</id><published>2011-02-17T11:36:00.003Z</published><updated>2011-02-17T11:43:52.935Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-17T11:43:52.935Z</app:edited><title>Chrome and Grouping/Organising tabs</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FdmqNBJejvP-4vqtIqjXt0EamAM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdmqNBJejvP-4vqtIqjXt0EamAM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FdmqNBJejvP-4vqtIqjXt0EamAM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FdmqNBJejvP-4vqtIqjXt0EamAM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;Do you find that you end up with loads of tabs open for several different subjects, and not wanting to close them......just yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Well today I found this chrome &lt;a href="https://chrome.google.com/extensions/detail/nmidkjogcjnnlfimjcedenagjfacpobb?hl=en-us"&gt;plugin for grouping tabs&lt;/a&gt;. It is something I have wanted for a while.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is not quite as funky as Forefox's soon to be released &lt;a href="http://www.mozilla.com/en-US/firefox/beta/features/"&gt;Release 4 Tab Organising&lt;/a&gt; but it does the job nicely.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-9173633651337822154?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/PVr9gUKdy4U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/9173633651337822154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=9173633651337822154" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/9173633651337822154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/9173633651337822154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/PVr9gUKdy4U/chrome-and-groupingorganising-tabs.html" title="Chrome and Grouping/Organising tabs" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2011/02/chrome-and-groupingorganising-tabs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBQHo6eSp7ImA9Wx9RGUw.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-1518430654425990515</id><published>2010-12-21T07:58:00.004Z</published><updated>2010-12-21T08:17:31.411Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-21T08:17:31.411Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="keepass" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>keepass on android</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YovtpjZ2qD2ZuWdzlz1EOfJcD7Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YovtpjZ2qD2ZuWdzlz1EOfJcD7Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YovtpjZ2qD2ZuWdzlz1EOfJcD7Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YovtpjZ2qD2ZuWdzlz1EOfJcD7Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I have just entered the 21st century phonewise and got an &lt;a href="http://www.android.com/"&gt;android &lt;/a&gt;phone, the motorola defy, and very pleased with it I am.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first two apps I put on the phone are &lt;a href="http://www.appbrain.com/app/keepassdroid/com.android.keepass"&gt;keepassdroid &lt;/a&gt;and &lt;a href="http://www.appbrain.com/app/dropbox/com.dropbox.android"&gt;dropbox&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have blogged about &lt;a href="http://billcomer.blogspot.com/2010/09/keepass-and-dropbox-combined.html"&gt;these in the past&lt;/a&gt; and now I have my phone synced to the same keepass database. For all those i-phone users there is of course an i-phone version too. It all works a treat so I still do not need to know any of my passwords.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One slight issue I had, my PC version of keepass was out of date so I had to upgrade that to get the two keepass clients to work together. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-1518430654425990515?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/vr3udkpV3Lk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/1518430654425990515/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=1518430654425990515" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/1518430654425990515?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/1518430654425990515?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/vr3udkpV3Lk/keepass-on-android.html" title="keepass on android" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/12/keepass-on-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMR3g_eSp7ImA9Wx9TFkw.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-3305096814521674715</id><published>2010-11-24T14:48:00.004Z</published><updated>2010-11-24T14:54:46.641Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-24T14:54:46.641Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><category scheme="http://www.blogger.com/atom/ns#" term="junit" /><title>eclipse, junit &amp; static imports</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FGtn_Lh--8A_N0uDGV49dLUygvY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FGtn_Lh--8A_N0uDGV49dLUygvY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FGtn_Lh--8A_N0uDGV49dLUygvY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FGtn_Lh--8A_N0uDGV49dLUygvY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;It was annoying me that eclipse was not finding the static imports needed by &lt;a href="http://www.junit.org/"&gt;junit &lt;/a&gt;4 unit tests.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A quick google tuned up this &lt;a href="http://www.vogella.de/articles/JUnit/article.html#usingjunit_staticimports"&gt;gem&lt;/a&gt;, which I have grabbed below:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, sans-serif; font-size: small; "&gt;&lt;p&gt;Open the Preferences via Window -&gt; Preferences and select Java &gt; Editor &gt; Content Assist &gt; Favorites. Add then via "New Member" the methods you need. For example this makes the assertTrue, assertFalse and assertEquals method available.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="mediaobject"&gt;&lt;img src="http://www.vogella.de/articles/JUnit/images/staticimport10.gif" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; " /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;You can now use Content Assist (Ctrl+Space) to add the method and the import.&lt;/p&gt;&lt;p&gt;He suggests to add at least the following new members.&lt;/p&gt;&lt;div class="itemizedlist"&gt;&lt;ul type="disc"&gt;&lt;li&gt;&lt;p&gt;org.junit.Assert.assertTrue&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;org.junit.Assert.assertFalse&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;org.junit.Assert.assertEquals&lt;/p&gt;&lt;/li&gt;&lt;li&gt;org.junit.Assert.fail&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I suggest also adding&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;org.junit.Assert.assertNotNull&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-3305096814521674715?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/x4H5ULlCaf4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/3305096814521674715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=3305096814521674715" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3305096814521674715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3305096814521674715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/x4H5ULlCaf4/eclipse-junit-static-imports.html" title="eclipse, junit &amp; static imports" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/11/eclipse-junit-static-imports.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYDRH88cCp7ImA9Wx9TFE8.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-2161731867627257180</id><published>2010-11-19T08:30:00.002Z</published><updated>2010-11-22T11:42:55.178Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T11:42:55.178Z</app:edited><title>pidgin - Unable to validate certificate error</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lB1wrfohLCziBlJDG0YN6qDcrcY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lB1wrfohLCziBlJDG0YN6qDcrcY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lB1wrfohLCziBlJDG0YN6qDcrcY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lB1wrfohLCziBlJDG0YN6qDcrcY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia; COLOR: black; FONT-SIZE: 12pt"&gt;If you are having  the '&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Arial; COLOR: #333333"&gt;Unable to validate  certificate' error from pidgin then do the following:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia; COLOR: black"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ol type="1"&gt; &lt;li style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Arial; COLOR: #333333; FONT-SIZE: 12pt"&gt;go to&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;a title="http://developer.pidgin.im/ticket/12906" href="http://developer.pidgin.im/ticket/12906"&gt;&lt;span title="http://developer.pidgin.im/ticket/12906"&gt;&lt;span style="FONT-FAMILY: 'Times New Roman'" title="http://developer.pidgin.im/ticket/12906"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, download  the certificate&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Arial; COLOR: #333333; FONT-SIZE: 10pt"&gt;&lt;a title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem View attachment" href="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;&lt;span title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;&lt;span style="FONT-FAMILY: 'Times New Roman'; COLOR: #e66926; FONT-SIZE: 12pt" title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;omega.contacts.msn.com.pem&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;   &lt;/li&gt;&lt;li style="COLOR: black; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Arial; COLOR: #333333; FONT-SIZE: 12pt"&gt;in pidgin go to  tools/certificates&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li style="COLOR: black; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia; FONT-SIZE: 12pt"&gt;delete the cert&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Arial; COLOR: #333333; FONT-SIZE: 10pt"&gt;&lt;a title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem View attachment" href="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;&lt;span title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;&lt;span style="FONT-FAMILY: 'Times New Roman'; COLOR: #e66926; FONT-SIZE: 12pt" title="http://developer.pidgin.im/attachment/ticket/12906/omega.contacts.msn.com.pem"&gt;omega.contacts.msn.com.pem&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li style="COLOR: black; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia; FONT-SIZE: 12pt"&gt;add the new downloaded  cert&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li style="COLOR: black; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1" class="MsoNormal"&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia; FONT-SIZE: 12pt"&gt;and away you go&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="FONT-FAMILY: Georgia"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;b&gt;UPDATE - &lt;/b&gt;or as I have said in the comment, now you can download the new version with a fix - see or better still update to the latest version that now has the fix - http://www.pidgin.im/&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-2161731867627257180?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/ZSOsTBAQPRI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/2161731867627257180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=2161731867627257180" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2161731867627257180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2161731867627257180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/ZSOsTBAQPRI/pidgin-unable-to-validate-certificate.html" title="pidgin - Unable to validate certificate error" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/11/pidgin-unable-to-validate-certificate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BQnk9cSp7ImA9Wx5UFko.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-2937553591994410329</id><published>2010-10-21T10:43:00.006+01:00</published><updated>2010-10-21T15:54:13.769+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-21T15:54:13.769+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>SQLdeveloper &amp; showing the full date</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MA64i_CdnAVnbfVxK6h676O6e-Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MA64i_CdnAVnbfVxK6h676O6e-Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MA64i_CdnAVnbfVxK6h676O6e-Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MA64i_CdnAVnbfVxK6h676O6e-Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I keep getting this every time I install &lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html"&gt;SQLDeveloper&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The date shown is just dd/mm/yyyy with no hours:minutes:seconds&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The solution can be found &lt;a href="http://www.zen-workshop.com/blog/v2/learning/default-date-field-display-format-in-oracle-sql-developer/"&gt;here&lt;/a&gt; on Zenx's blog, but to save me looking here it is also.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 20px; "&gt;1. From SQL Developer, open menu &lt;em&gt;Tools &gt;&gt; Preferences&lt;/em&gt;.&lt;br /&gt;2. From the Preferences dialog, select &lt;em&gt;Database &gt;&gt; NLS Parameters&lt;/em&gt; from the left panel.&lt;br /&gt;3. From the list of NLS parameters, enter &lt;code style="font-size: 11px; font-family: 'Courier New', Courier, monospace; white-space: pre; "&gt;DD-MON-RR HH24:MI:SS&lt;/code&gt; into the Date Format field.&lt;br /&gt;4. Save and close the dialog, done!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   &gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 20px; "&gt;Thanks Zenx.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 20px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 20px; "&gt;Also, if you want milli-seconds add ':SSSSS' at the end.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 20px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-2937553591994410329?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/JFjwbNtem5Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/2937553591994410329/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=2937553591994410329" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2937553591994410329?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2937553591994410329?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/JFjwbNtem5Y/sqldeveloper-showing-full-date.html" title="SQLdeveloper &amp; showing the full date" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/10/sqldeveloper-showing-full-date.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YHRHs4eyp7ImA9Wx5UFUo.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-4335792661468848671</id><published>2010-10-20T10:15:00.005+01:00</published><updated>2010-10-20T11:38:55.533+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-20T11:38:55.533+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="github" /><title>git &amp; github from windows</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gi4acJVNIyu1dJ-t15eYg6K1R34/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gi4acJVNIyu1dJ-t15eYg6K1R34/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gi4acJVNIyu1dJ-t15eYg6K1R34/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gi4acJVNIyu1dJ-t15eYg6K1R34/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;While learning &lt;a href="http://grails.org/"&gt;Grails &lt;/a&gt;and working though '&lt;a href="http://www.manning.com/gsmith/"&gt;Grails in Action&lt;/a&gt;' I wanted to save my work to a repository. SVN can be a pain to setup on windows and many people use &lt;a href="http://github.com/"&gt;github &lt;/a&gt;&amp;amp; so I thought I would give it a go.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sadly I am on a windows PC but I have just been so pleasantly surprised as to how easy it was.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is what I had to do:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;I work from a cygwin command shell. In this I had to have ssh &amp;amp; git executables installed.&lt;/li&gt;&lt;li&gt;help to set up the ssh key is &lt;a href="http://help.github.com/msysgit-key-setup/"&gt;here &lt;/a&gt;. &lt;/li&gt;&lt;li&gt;I did not realise that git acts as a local repository as well as a public repository so you are under no obligation to upload your work. The local set up is a breeze and is described in this excellent &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html"&gt;tutorial&lt;/a&gt;, running the commands from my cygwin shell.&lt;/li&gt;&lt;li&gt;There is even a GUI with the command '&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/gitk.html"&gt;gitk&lt;/a&gt;'&lt;/li&gt;&lt;li&gt;Once you want to upload the code to a public &lt;a href="http://github.com/"&gt;github &lt;/a&gt;repository it is a simple case of running the following two commands&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px; white-space: pre;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;cd existing_git_repo&lt;br /&gt;git remote add origin git@github.com:bill-comer/hubbub.git&lt;br /&gt;git push origin master&lt;/code&gt;&lt;/pre&gt;&lt;li&gt;And you can download code from github using the following:&lt;/li&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;git clone   git@github.com:bill-comer/hubbub.git&lt;/code&gt;&lt;/pre&gt;&lt;/ol&gt;&lt;/div&gt;Now go ahead and enjoy a free and easy to use code repository.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-4335792661468848671?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/esvcpkKB50s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/4335792661468848671/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=4335792661468848671" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4335792661468848671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4335792661468848671?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/esvcpkKB50s/git-github-from-windows.html" title="git &amp; github from windows" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/10/git-github-from-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4NQXYyfip7ImA9Wx5VGEQ.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-8923598420048267732</id><published>2010-09-30T09:36:00.021+01:00</published><updated>2010-10-12T15:16:30.896+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-12T15:16:30.896+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><title>Grails &amp; 'Grails in Action' - some notes &amp; comments</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ogOgsGgO6xt8VxBpZWoOjLujDIY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ogOgsGgO6xt8VxBpZWoOjLujDIY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ogOgsGgO6xt8VxBpZWoOjLujDIY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ogOgsGgO6xt8VxBpZWoOjLujDIY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;I have just started playing with &lt;a href="http://grails.org/"&gt;grails&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;I am using '&lt;a href="http://www.manning.com/gsmith/"&gt;Grails in Action&lt;/a&gt;' as my reference.&lt;/div&gt;&lt;div&gt;My current version of grails is 1.3.4&lt;/div&gt;&lt;div&gt;I am using the &lt;a href="http://www.springsource.com/developer/sts"&gt;STS eclipse IDE&lt;/a&gt; with their built in grails plugin&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some initial notes on GOTCHAs I have found with the book and grails itself.&lt;/div&gt;&lt;div&gt;NB I will continue to update this one page with other gotchas, instaed of creating many pages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Comments on 'Grails in Action'&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1) p28, list 1.22&lt;div&gt;  'render' should be 'response.outputStream &lt;&lt;'&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) logo.png &amp;amp; snazzy.css are needed for chapt 1 &amp;amp; can be got from &lt;a href="http://github.com/pledbrook/graina/tree/master/source-code/ch01/"&gt;github&lt;/a&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;b&gt;Comments on Grails 1.3.4&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://github.com/pledbrook/graina/tree/master/source-code/ch01/"&gt;&lt;/a&gt;1) can not create integration tests - getting error &lt;/div&gt;&lt;div&gt;     &lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; color: rgb(51, 51, 51); line-height: 17px; white-space: pre; "&gt;Error executing script CreateIntegrationTest: No such property: type for class: CreateIntegrationTest&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Courier; font-size: 11px; color: rgb(51, 51, 51); line-height: 13px; "&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: monospace; font-size: 1.2em; overflow-x: auto; overflow-y: auto; max-height: 30em; line-height: 1.3em; "&gt;No such property: type for class: CreateIntegrationTest&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: monospace; font-size: 1.2em; overflow-x: auto; overflow-y: auto; max-height: 30em; line-height: 1.3em; "&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div&gt;   edit the file scripts/CreateIntegrationTest.groovy in your grails installation&lt;/div&gt;&lt;div&gt;   and add the line&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;       def type = "Tests"&lt;/div&gt;&lt;div&gt;    after the line&lt;/div&gt;&lt;div style="text-align: center;"&gt;       depends(checkVersion, parseArguments)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;  solution from &lt;a href="http://jira.codehaus.org/browse/GRAILS-6606"&gt;http://jira.codehaus.org/browse/GRAILS-6606&lt;/a&gt;&lt;/div&gt;&lt;div&gt;NB this is fixed in 1.3.5&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) when running the test via 'grails test-app' the url for the report is incorrect&lt;/div&gt;&lt;div&gt;  and is missing the trailing 's' from the URL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   edit the file scripts/_GrailsTest.groovy line 402 and add a space after the the closing brace of testReportsDir and before the double quote&lt;/div&gt;&lt;div style="text-align: center;"&gt;msg += " - view reports in ${testReportsDir} "&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;3) 1.3.5 bug - add a contraint that specifies the size of the field then it does not check for null.&lt;/div&gt;&lt;div&gt;IE This will allow a nulll value in name:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static constraints = {&lt;br /&gt;   name (size:3..8)&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The work around is to do this:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;br /&gt;&lt;code&gt;static constraints = {&lt;br /&gt;  name (size:3..8, blank:false)&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;bug &lt;a href="http://jira.codehaus.org/browse/GRAILS-6821"&gt;GRAILS-6821&lt;/a&gt; has been raised on version 1.3.5&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-8923598420048267732?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/VoVns5N2mz8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/8923598420048267732/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=8923598420048267732" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8923598420048267732?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8923598420048267732?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/VoVns5N2mz8/grails-grails-in-action-some-notes.html" title="Grails &amp; 'Grails in Action' - some notes &amp; comments" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/09/grails-grails-in-action-some-notes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQESH86cSp7ImA9Wx5WEUk.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-853851225330609596</id><published>2010-09-21T20:21:00.009+01:00</published><updated>2010-09-22T09:31:49.119+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-22T09:31:49.119+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="keepass" /><category scheme="http://www.blogger.com/atom/ns#" term="dropbox" /><title>keepass and dropbox combined.</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OT1HYiVH75PDQUS1lFECwsBk-qA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OT1HYiVH75PDQUS1lFECwsBk-qA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OT1HYiVH75PDQUS1lFECwsBk-qA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OT1HYiVH75PDQUS1lFECwsBk-qA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A while ago I blogged about using &lt;a href="http://keepass.info/"&gt;keepass&lt;/a&gt; as a secure password &amp;amp; data storage tool.&lt;div&gt;The blog entry is &lt;a href="http://billcomer.blogspot.com/2009/03/keepass-secure-password-and-data.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The issue I have always had is keeping the keepass db in sync between my different PCs at work &amp;amp; at home and on the move. I used to use a memory stick but decided that was prone to getting lost or damaged.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have recently started using &lt;a href="http://www.dropbox.com/"&gt;dropbox&lt;/a&gt;. This tool provides online storage allowing sync between any number of devices and supports linux, i-phones, android, iPad as well as Microsoft platforms. It is free for the first 2GB and you get to earn additional storage by either nominating others or getting nominated by an existing member.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From the reviews I have read it appears secure so I have started using it for my keepass database as well as any every day stuff I want to share. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As for reviewing keepass I am still very pleased and impressed with it.&lt;/div&gt;&lt;div&gt;My family now all have their own keepass databases to keep their personal data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you want to try dropbox, follow &lt;a href="http://www.dropbox.com/referrals/NTExODQ0MzM2OQ"&gt;this referral link&lt;/a&gt; and try it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&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/9220321694195024816-853851225330609596?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/p2ftKb5QIns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/853851225330609596/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=853851225330609596" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/853851225330609596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/853851225330609596?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/p2ftKb5QIns/keepass-and-dropbox-combined.html" title="keepass and dropbox combined." /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/09/keepass-and-dropbox-combined.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIEQHg4fip7ImA9Wx5WEEo.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-3803933305865914130</id><published>2010-09-16T12:10:00.005+01:00</published><updated>2010-09-21T14:58:21.636+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T14:58:21.636+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><title>tomcat IE and parse locale Exceptions</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QTBLsp8eU4cX_PqrcAiDr1ov1vU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QTBLsp8eU4cX_PqrcAiDr1ov1vU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QTBLsp8eU4cX_PqrcAiDr1ov1vU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QTBLsp8eU4cX_PqrcAiDr1ov1vU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span"&gt;I have just done an upgrade for a customer that involved new java, tomcat as well as a new version of our application software.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;br /&gt;The webapp was failing with the following Exception:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;Caused by: javax.servlet.jsp.JspException: In &amp;amp;lt;parseNumber&amp;amp;gt;, a parse locale can not be established&lt;br /&gt; at org.apache.taglibs.standard.tag.common.fmt.ParseNumberSupport.doEndTag(ParseNumberSupport.java:134)&lt;br /&gt; at org.apache.jsp.tag.web.shared.paging_tag._jspx_meth_fmt_005fparseNumber_005f0(paging_tag.java:598)&lt;br /&gt; at org.apache.jsp.tag.web.shared.paging_tag.doTag(paging_tag.java:241)&lt;br /&gt; at org.apache.jsp.pages.jsp.type3Footer_jsp._jspx_meth_tag_005fpaging_005f0(type3Footer_jsp.java:220)&lt;br /&gt; at org.apache.jsp.pages.jsp.type3Footer_jsp._jspService(type3Footer_jsp.java:114)&lt;br /&gt; ... 73 more&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Some googling pointed me to adding locale java options:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/1153521/setting-default-locale-for-tomcat-service-in-windows-xp"&gt;&lt;span class="Apple-style-span"&gt;http://stackoverflow.com/questions/1153521/setting-default-locale-for-tomcat-service-in-windows-xp&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://stackoverflow.com/questions/1153521/setting-default-locale-for-tomcat-service-in-windows-xp"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 14px; border-collapse: collapse; line-height: 18px; white-space: pre; "&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;java &lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;Duser&lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;language&lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;en &lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span class="typ" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;Duser&lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class="pln" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;region&lt;/span&gt;&lt;/span&gt;&lt;span class="pun" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: black; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-style-span"&gt;=GB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 14px; line-height: 18px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;This just shifted the problem to Oracle Exceptions complaining about NLS_LANG and suggesting&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 14px; border-collapse: collapse; line-height: 18px; white-space: pre; "&gt;&lt;span class="Apple-style-span"&gt; that I do a regedit&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: 14px; border-collapse: collapse; line-height: 18px; white-space: pre; "&gt;&lt;a href="http://www.dba-oracle.com/t_ora_12705_error.htm"&gt;&lt;span class="Apple-style-span"&gt;http://www.dba-oracle.com/t_ora_12705_error.htm&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"&gt;That was a step too far&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"&gt;After all the application worked fine before.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;So what was my final solution.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Very simple. In IE go to Tools-&gt;Internet Options-&gt;General/Languages.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;found out there were no languages set&lt;/li&gt;&lt;li&gt;Add the appropriate one &lt;/li&gt;&lt;li&gt;English (United Kingdom) [en-gb] in my case.&lt;/li&gt;&lt;/ul&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-3803933305865914130?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/3ELWnqnpnGU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/3803933305865914130/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=3803933305865914130" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3803933305865914130?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/3803933305865914130?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/3ELWnqnpnGU/tomcat-ie-and-parse-locale-exceptions.html" title="tomcat IE and parse locale Exceptions" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/09/tomcat-ie-and-parse-locale-exceptions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQ3YzcSp7ImA9Wx5REkQ.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-5851147302922836181</id><published>2010-08-20T10:02:00.003+01:00</published><updated>2010-08-20T10:07:22.889+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-20T10:07:22.889+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="intellij" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><title>IntelliJ Live Templates for Eclipse ...more</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ovqVrTT9sNagQhL5qscN0SFdiR0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ovqVrTT9sNagQhL5qscN0SFdiR0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ovqVrTT9sNagQhL5qscN0SFdiR0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ovqVrTT9sNagQhL5qscN0SFdiR0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;This is an update from an earlier &lt;a href="http://billcomer.blogspot.com/2008/03/intellij-live-templates-for-eclipse.html"&gt;post of mine&lt;/a&gt; so save me following two links &amp;amp; then having to edit the file.&lt;br /&gt;&lt;br /&gt;To Import them into eclipse go to Window -&gt; Preferences -&gt; Java -&gt; Editor -&gt; Templates and import away.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;templates&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate over array with temporary variable" enabled="true" name="itar"&amp;gt;for (int ${index} = 0; ${index} &amp;amp;lt; ${array}.length; ${index}++) { ${array_type} ${array_element} = ${array}[${index}]; ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate over collection" enabled="true" name="itco"&amp;gt;for (Iterator ${iterator} = ${collection}.iterator(); ${iterator}.hasNext(); ) { ${type} ${element} = (${type}) ${iterator}.next(); ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate with enumeration" enabled="true" name="iten"&amp;gt;while (${enumeration}.hasMoreElements()) { ${type} ${element} = (${type}) ${enumeration}.nextElement(); ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate over an array or Iterable" enabled="true" name="iter"&amp;gt;for (${iterable_type} ${iterable_element} : ${iterable}) { ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate with iterator" enabled="true" name="itit"&amp;gt;while (${iterator}.hasNext()) { ${type} ${element} = (${type}) ${iterator}.next(); ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="iterate over list elements" enabled="true" name="itli"&amp;gt;for (int ${i} = 0; ${i} &amp;amp;lt; ${list}.size(); i++) { ${type} ${element} = (${type}) ${list}.get(${i}); ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="public static final" enabled="true" name="psf"&amp;gt;public static final ${} = ${cursor};&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="public static final int" enabled="true" name="psfi"&amp;gt;public static final int ${} = ${cursor};&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="public static final String" enabled="true" name="psfs"&amp;gt;public static final String ${} = ${cursor};&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="main method" enabled="true" name="psvm"&amp;gt;public static void main(String[] args) { ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="public void test" enabled="true" name="pvt"&amp;gt;public void test${NAME}() throws Exception { ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="print to standard error" enabled="true" name="serr"&amp;gt;System.err.println(${word_selection}${});${cursor}&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="print to standard out" enabled="true" name="sout"&amp;gt;System.out.println(${word_selection}${});${cursor}&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="print method name to system out" enabled="true" name="soutm"&amp;gt;System.out.println("${enclosing_type}.${enclosing_method}(${enclosing_method_arguments})"); ${cursor}&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="print variable out to System out" enabled="true" name="soutv"&amp;gt;System.out.println("${VALUE} = " + ${VALUE});&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;template autoinsert="true" context="java" deleted="false" description="public void test" enabled="true" name="test"&amp;gt;public void test${NAME}() throws Exception { ${cursor} }&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;/templates&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-5851147302922836181?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/CuRBTq0vmps" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/5851147302922836181/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=5851147302922836181" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5851147302922836181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5851147302922836181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/CuRBTq0vmps/intellij-live-templates-for-eclipse.html" title="IntelliJ Live Templates for Eclipse ...more" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/08/intellij-live-templates-for-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4AR304fCp7ImA9WxFbE04.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-5753503450754533372</id><published>2010-07-05T14:49:00.002+01:00</published><updated>2010-07-05T15:09:06.334+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T15:09:06.334+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><title>Getting eclipse to connect to a running tomcat</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5mUiwyBSL4Ck1DdiPLdJxiX6Jig/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5mUiwyBSL4Ck1DdiPLdJxiX6Jig/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5mUiwyBSL4Ck1DdiPLdJxiX6Jig/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5mUiwyBSL4Ck1DdiPLdJxiX6Jig/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Firstly tomcat needs to set up to allow a debug connection.&lt;br /&gt;&lt;br /&gt;These instructions are for windows - sorry.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Go to the tomcat/bin directory and run tomcat6w.exe&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on the java tab&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To connect on port 8002 add the line:&lt;br /&gt;-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8002&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And start tomcat normally&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Now go to eclipse.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Go the Debug perspective&lt;br /&gt;&lt;li&gt; Click on the 'bug' arrow and select 'Debug Configurations'&lt;br /&gt;&lt;li&gt; Double click 'Remote Java Application'&lt;br /&gt;&lt;li&gt; Give it a name EG 'tomcat'&lt;br /&gt;&lt;li&gt; Select the project&lt;br /&gt;&lt;li&gt; Select the server if it is not localhost (the default)&lt;br /&gt;&lt;li&gt; Select the port that you used above eg 8002&lt;br /&gt;&lt;li&gt; Click on the 'debug' button and you are now debugging the tomcat session.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;If you want to save that config to use again do the following&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Click on the 'bug' arrow and select 'organise Favourites'&lt;br /&gt;&lt;li&gt; Select 'Add'&lt;br /&gt;&lt;li&gt; Search down for the name of the debug session and tick the box&lt;br /&gt;&lt;li&gt; Select OK.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-5753503450754533372?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/vlrVVYWNHkw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/5753503450754533372/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=5753503450754533372" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5753503450754533372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5753503450754533372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/vlrVVYWNHkw/getting-eclipse-to-connect-to-running.html" title="Getting eclipse to connect to a running tomcat" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/07/getting-eclipse-to-connect-to-running.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkACSHoyeip7ImA9WxFXEUQ.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-4763834296094031908</id><published>2010-05-18T11:38:00.008+01:00</published><updated>2010-05-18T14:52:49.492+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-18T14:52:49.492+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><title>AgileNorth - May 2010</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UlqXEqV-BKk212g40I__jT87eYs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UlqXEqV-BKk212g40I__jT87eYs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UlqXEqV-BKk212g40I__jT87eYs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UlqXEqV-BKk212g40I__jT87eYs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;On Friday I attended &lt;a href="http://www.agilenorth.org/"&gt;AgileNorth May 2010&lt;/a&gt; at Preston UCLAN.&lt;br /&gt;&lt;br /&gt;It was an excellent day and thankyou to all the organizers and sponsers &lt;a href="http://www.valtech.co.uk/uk/index.html"&gt;Valtech&lt;/a&gt;, &lt;a href="http://www.thoughtworks.com/"&gt;Thoughtworks&lt;/a&gt; to name two.&lt;br /&gt;&lt;br /&gt;The opening keynote was by &lt;a href="mailto:kevin.murray@valtech.co.uk"&gt;Kevin Murray&lt;/a&gt;  of Valtech, titled '&lt;span style="font-weight:bold;"&gt;Agile in Waterfall Case Studies&lt;/span&gt;'. Kevin talked about two case studies where he had been the project manager and introduced agile working practises. Both were large goverment waterfall projects with the latter being a project rescue.&lt;br /&gt;&lt;br /&gt;The second project was especially interesting. He was the 14th PM in 2 years and the team members were desperately demotivated. Kevin identified the following benefits:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;increased morale&lt;/li&gt;&lt;br /&gt;&lt;li&gt;increased motivation&lt;/li&gt;&lt;br /&gt;&lt;li&gt;feeling of ownership&lt;/li&gt;&lt;br /&gt;&lt;li&gt;issues addressed earlier&lt;/li&gt;&lt;br /&gt;&lt;li&gt;visibility to all of status&lt;/li&gt;&lt;br /&gt;&lt;li&gt;better quality&lt;/li&gt;&lt;br /&gt;&lt;li&gt;less bugs at FAT&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Kevin emphasised that introducing agile especially into large government style projects must not:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;compromize estimates&lt;/li&gt;&lt;br /&gt;&lt;li&gt;question or sacrifice governance&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The second talk I attended was by Nick Mckenna of &lt;a href="http://www.mckennaconsultants.com/"&gt;Mckenna Consultants&lt;/a&gt;.&lt;br /&gt;Nick is an agile consultant based in Harrogate offering training and consultancy and his talk was titled '&lt;span style="font-weight:bold;"&gt;Agile Adoption&lt;/span&gt;'. The talk was good and interesting but felt to me like we were getting the first hour of a 1 day talk. His main point was to define a timetable when starting with agile and that could typically be about 3 months. He also emphasised the following:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;get everyone to agree&lt;/li&gt;&lt;br /&gt;&lt;li&gt;identify roles&lt;/li&gt;&lt;br /&gt;&lt;li&gt;spend some time on training&lt;/li&gt;&lt;br /&gt;&lt;li&gt;take it slow&lt;/li&gt;&lt;br /&gt;&lt;li&gt;prepare to compromise&lt;/li&gt;&lt;br /&gt;&lt;li&gt;make it visible&lt;/li&gt;&lt;br /&gt;&lt;li&gt;keep everyone informed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the timetable must be &lt;span style="font-style:italic;"&gt;agile&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;review the time table&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The third talk was by &lt;a href="mailto:paul.shannon@codeweavers.net"&gt;Paul Shannon&lt;/a&gt; (&lt;a href="http://twitter.com/bluerezz"&gt;twitter&lt;/a&gt;) and &lt;a href="mailto:craig.judson@codeweavers.net"&gt;Craig Judson&lt;/a&gt; (&lt;a href="http://twitter.com/craigjudson"&gt;twitter&lt;/a&gt;) of &lt;a href="http://www.codeweavers.net/"&gt;Codeweavers&lt;/a&gt; titled '&lt;span style="font-weight:bold;"&gt;From Chaos to Kanban&lt;/span&gt;'&lt;br /&gt;&lt;br /&gt;Their talk discussed the life story of how Codeweavers had adopted and adapted agile over the last 2 or 3 years along with the help of the agile consultant &lt;a href="http://www.kevinrutherford.co.uk/"&gt;Kevin Rutherford&lt;/a&gt;. They are clearly exstatic with where they are now in terms of performance and quality. They emphasised to me how agile is in itself agile. how they started doing scrum by the book and ended up with their own kanban solution and board. Their slides are available &lt;a href="http://codeweavers.wordpress.com/2010/05/10/agile-north/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;An excellent lunch was followed by a workshop from Sam Wessel also of Codeweavers on '&lt;span style="font-weight:bold;"&gt;CRC - the forgotten Design Tool&lt;/span&gt;'. Here is one link to &lt;a href="http://www.agilemodeling.com/artifacts/crcModel.htm"&gt;CRC - Class Responsibility Collaborator&lt;/a&gt;. This was a fun workshop designing a library application. It showed how to really break down an issue and see your self as the objects in the problem along with their inter-reactions and roles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The penultimate talk was by the Agile consultant &lt;a href="mailto:kevin@rutherford-software.com"&gt;Kevin Rutherford&lt;/a&gt; of &lt;a href="http://www.kevinrutherford.co.uk/"&gt;Rutherford Software&lt;/a&gt; (&lt;a href="http://twitter.com/kevinrutherford"&gt;twitter&lt;/a&gt;)  entitled '&lt;span style="font-weight:bold;"&gt;Flow&lt;/span&gt;'. The aim of the talk was to show how agile increases the speed with which changes can flow through from requirements to an end product. I really like Kevin's dry and straight talking style. His blog write up of the talk is &lt;a href="http://silkandspinach.net/2010/05/18/links-for-my-agilenorth-2010-session/"&gt;here&lt;/a&gt;. Here are some of his points:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;YAGNI - do not do what you do not need now&lt;/li&gt;&lt;br /&gt;&lt;li&gt;question or sacrifice governance&lt;/li&gt;&lt;br /&gt;&lt;li&gt;thin sliced MMFs (minimal marketable feature) - IE breakdown the work into small chunks&lt;/li&gt;&lt;br /&gt;&lt;li&gt;continuous integration&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Theory of constraints&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.pinnacle-strategies.com/The-Goal.htm"&gt;The Goal by Goldratt&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The closing keynote - phew it was a long day - was by Jim Barritt and Mark Crossfield. Mark is a &lt;a href="http://www.blogger.com/%3Ca%20href=" com=""&gt;Thoughtworks &lt;/a&gt;"&gt;Thoughtworks consultant and Jim works for Autotrader. There talk covered the issues of working running an agile product with a rapidly expanding workforce.&lt;br /&gt;&lt;br /&gt;Two interesting tools that I came across in talks and will investigate soon are&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://code.google.com/p/migratordotnet/"&gt;Migratordotnet&lt;/a&gt; - This is based on the idea of Rails ActiveRecord Migrations. Interestingly it puts the migrations into a dll making them easy to run &amp;amp; install on a windows PC without the need for Rails or other bespoke software.&lt;br /&gt;&lt;br /&gt;2) &lt;a href="http://www.agilezen.com/"&gt;AgileZen&lt;/a&gt; - This is an online kanban board, free to use for a single project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The next AgileNorth will be October time and will be free&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Find other links on AgileNorth via this &lt;a href="http://delicious.com/tag/agilenorth2010"&gt;delicious tag&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally here are some twitter links:&lt;br /&gt;@BlueReZZ - Paul Shannon of Codeweavers&lt;br /&gt;@craigjudson - Craig Judson of Codeweavers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-4763834296094031908?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/ov6jLn8AoaU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/4763834296094031908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=4763834296094031908" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4763834296094031908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/4763834296094031908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/ov6jLn8AoaU/agilenorth-may-2010.html" title="AgileNorth - May 2010" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/05/agilenorth-may-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8DQn8ycSp7ImA9WxFREE4.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-5001662119925790075</id><published>2010-03-03T11:46:00.023Z</published><updated>2010-04-23T17:07:53.199+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-23T17:07:53.199+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ssl" /><category scheme="http://www.blogger.com/atom/ns#" term="https" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><title>SSL, tomcat and self signed certificates</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1CbQfiJe2TJ8CjZryT9YwS4Vurg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1CbQfiJe2TJ8CjZryT9YwS4Vurg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1CbQfiJe2TJ8CjZryT9YwS4Vurg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1CbQfiJe2TJ8CjZryT9YwS4Vurg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I have been through the process of getting an application to work via https before but I have always muddled through and never documented exactly what I have done.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I must also admit that I never quite understood exactly  what I had done and why.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One problem is that I can not find one place that covers everything you need in one place.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I think I am pretty well there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This post describes what I have done to get a simple client application working using HTTPS posting to tomcat server and using a self signed certificate with the help of several refereneces in particular:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.akadia.com/services/ssh_test_certificate.html"&gt;How to create a self signed certificate&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html#Configuration"&gt;Tomcat SSL Configuration How-To&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Developing-Web-Services-Apache-Axis/dp/1411670329"&gt;Developing Web Services with Apache Axis&lt;/a&gt; by Tong Ka Iok, Kent ISBN 1-4116-7032-9&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last reference has a chapter which is pretty well SSL for dummies and explains things very nicely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The steps that need to be done are:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Create a self signed certificate authority (CA)&lt;/li&gt;&lt;li&gt;Sign a test key via the CA&lt;/li&gt;&lt;li&gt;Add both these keys to a keystore&lt;/li&gt;&lt;li&gt;Setup the application (client) and tomcat (the server) to use this keystore.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) Create a self signed certificate authority (CA) and keystore&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  This is described in &lt;a href="http://www.akadia.com/services/ssh_test_certificate.html"&gt;How to create a self signed certificate&lt;/a&gt;, but I will show the steps here&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What is happening here:&lt;/div&gt;&lt;div&gt;   you will create a CA that later will be added to your keystore file. By adding this CA to your keystore you are saying it is trusted like verisign and any certificates signed by it are then also trusted.&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;div&gt;1.1) make a directory to hold the certs and keystore. This might be something like:&lt;/div&gt;&lt;div&gt;    &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;C:\ssl&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;1.2) generate a private key for the server &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;openssl genrsa -des3 -out server.key 1024&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;1.3) generate a CSR (Certificate Signing Request)&lt;br /&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;openssl req -new -key server.key -out server.csr&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;1.4) Remove the passphrasse from the key&lt;br /&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;cp server.key server.key.org&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;openssl rsa -in server.key.org -out server.key&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;1.5) Generate the self signed certificate&lt;br /&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2) Create a certificate for tomcat and add both to the keystore&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.1) cd to where the keystore is held. This might be something like:&lt;/div&gt;&lt;div&gt;    &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;C:\ssl&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.2) Create a keypair for 'tomcat'&lt;/div&gt;&lt;div&gt; &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -genkey -alias tomcat  -keyalg RSA -keystore tomcat.ks&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.3) Generate a CSR (Certificate Signing Request) for tomcat&lt;/div&gt;&lt;div&gt;  &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -keystore tomcat.ks -alias tomcat -certreq -file tomcat.csr&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.4) create unique serial number&lt;/div&gt;&lt;div&gt;  &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;echo 02 &amp;gt; serial.txt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.5) Sign the tomcat CSR&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;openssl x509 -CA server.crt -CAkey server.key -CAserial serial.txt -req -in tomcat.csr -out tomcat.cer -days 365&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.6) Import the server CA certificate into the keystore&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -import -alias serverCA -file server.crt -keystore tomcat.ks&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.7) add the tomcat certificate to the keystore&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -import -alias tomcat -file tomcat.cer -keystore tomcat.ks&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3) Tomcat configuration&lt;/b&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;3.1) Tomcat needs to be configured to use SSL&lt;/div&gt;&lt;div&gt;  This is described in more detail at &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html#Configuration"&gt;Tomcat SSL Configuration How-To&lt;/a&gt;&lt;/div&gt;&lt;div&gt;  However all that is needed here is to edit the server.xml to enable SSL&lt;/div&gt;&lt;div&gt;  This section is already in the server.xml but commented out.&lt;/div&gt;&lt;div&gt;  NB that the location of the keystore has been added.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&amp;lt;!-- Define a SSL HTTP/1.1 Connector on port 8443&lt;/div&gt;&lt;div&gt;         This connector uses the JSSE configuration, when using APR, the &lt;/div&gt;&lt;div&gt;         connector should be using the OpenSSL style configuration&lt;/div&gt;&lt;div&gt;         described in the APR documentation --&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"&lt;/div&gt;&lt;div&gt;        maxThreads="150" scheme="https" secure="true"&lt;/div&gt;&lt;div&gt;        keystoreFile="C:\ssl\tomcat.ks"&lt;/div&gt;&lt;div&gt;        keystorePass="changeit"&lt;/div&gt;&lt;div&gt;               clientAuth="false" sslProtocol="TLS" /&amp;gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.2) test tomcat&lt;/div&gt;&lt;div&gt;   start tomcat and go to &lt;a href="https://localhost:8443/"&gt;https://localhost:8443/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   your browser will return an error such as "sites certificate is not trusted"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.3) import the CA certificate server.crt into your browser's tructed root certificates&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.4) test again at &lt;a href="https://localhost:8443/"&gt;https://localhost:8443/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   this time you should see the tomcat home page&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4) Test your application&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  4.1) I have a unit test run from eclipse that I have been using to post off to my test server. This produces the error; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;/div&gt;&lt;div&gt;    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)&lt;/div&gt;&lt;div&gt;    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)&lt;/div&gt;&lt;div&gt;    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; 4.2) The reason for this is that eclipse is not referring to the keystore that we have created. At the time of writing I have not sussed out how to make eclipse use this - Do you know ?&lt;/div&gt;&lt;div&gt;So instead I have added the same two certs to javas keystore&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.3) cd to the directory where java's keystore is held. This might be something like:&lt;/div&gt;&lt;div&gt;  &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;C:\java\jdk1.6.0_18\jre\lib\security&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.4) the keystore is a file called cacerts&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.5) copy the files c:\ssl\server.crt and c:\ssl\tomcat.cer to this directory&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.6) import the server CA into the java keystore&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -import -alias serverCA -file server.crt -keystore cacerts&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;4.7 import tomcats cert into the java keystore&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;keytool -import -alias tomcat -file tomcat.cer -keystore cacerts&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5) Test your app again.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;  Hopefully all will be hunkdory. Enjoy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;6) Caveats:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6.1) the passwords for all keystores and certs are 'changeit'. this is the default keystore password&lt;/div&gt;&lt;div&gt;and I suggest you change this for a production system&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6.2) Using a self signed cert is great for a test environment of for a private system but not for a commercial released application. For this you will need to get &amp;amp; pay for a signed certificate from an approved authority such as Verisign.&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/9220321694195024816-5001662119925790075?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/1_P-4V_wCiU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/5001662119925790075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=5001662119925790075" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5001662119925790075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/5001662119925790075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/1_P-4V_wCiU/ssl-tomcat-and-self-signed-certificates.html" title="SSL, tomcat and self signed certificates" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/03/ssl-tomcat-and-self-signed-certificates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4FSXozcCp7ImA9WxBVGUw.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-6152315826827946239</id><published>2010-02-23T09:46:00.003Z</published><updated>2010-02-23T09:55:18.488Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-23T09:55:18.488Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="restful" /><title>train times using RESTful urls</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fdQbC4a-44r4U5Jh7ZnnJ19_QTI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fdQbC4a-44r4U5Jh7ZnnJ19_QTI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fdQbC4a-44r4U5Jh7ZnnJ19_QTI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fdQbC4a-44r4U5Jh7ZnnJ19_QTI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;While travelling by train in this arctic winter I came across this really nice simple train times site using &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;RESTful &lt;/a&gt;URLs to great effect.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://traintimes.org.uk/blackburn/entwsitle/16:00/today"&gt;http://traintimes.org.uk/blackburn/entwsitle/16:00/today&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is really clear and simple making it great for display on small phone screens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&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/9220321694195024816-6152315826827946239?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/7IZUN4LK4QE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/6152315826827946239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=6152315826827946239" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/6152315826827946239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/6152315826827946239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/7IZUN4LK4QE/train-times-using-restful-urls.html" title="train times using RESTful urls" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2010/02/train-times-using-restful-urls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkENQHszfSp7ImA9WxNaGUk.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-2662898999325351709</id><published>2009-12-04T15:18:00.016Z</published><updated>2009-12-04T16:38:11.585Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-04T16:38:11.585Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ivy" /><category scheme="http://www.blogger.com/atom/ns#" term="ant" /><title>Apache Ivy - Working with the Apache tutorial</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MYgcynop4tsKsVFsGudaDshB-oU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MYgcynop4tsKsVFsGudaDshB-oU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MYgcynop4tsKsVFsGudaDshB-oU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MYgcynop4tsKsVFsGudaDshB-oU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ant.apache.org/ivy/"&gt;Apache Ivy&lt;/a&gt; is a dependancy manager and appears to be flavour of the month in some circles and claims to be less complicated than &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a quick tutorial that expands on &lt;a href="http://ant.apache.org/ivy/history/latest-milestone/tutorial.html"&gt;Apaches tutorial page&lt;/a&gt;.  They provide one very small build.xml in a style that they say is not best practise for a number of reasons:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;it is standalone&lt;/li&gt;&lt;li&gt;it contains the code within the build.xml&lt;/li&gt;&lt;li&gt;it downloads ivy locally instead of using a remote installation&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;I struggled to find a simple example of a build in the accepted syntax so I will attempt here to describe how this build.xml can be changed in 4 steps to ultimately work in the conventional style with a build.xml and ivy.xml files and a remote installation of ivy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My next project will be to 'ivyfy' a spring project. Hopefully I will be successfull - watch this space.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;prerequisites:&lt;/div&gt;&lt;div&gt;    &lt;a href="http://ant.apache.org/"&gt;Apache Ant&lt;/a&gt; installed to 1.6 or greater&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1) The basic Tutorial from Apache Ivy&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Essentially follow their instructions &amp;amp; download the &lt;a href="http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml"&gt;build.xml&lt;/a&gt; from the &lt;a href="http://ant.apache.org/ivy/history/latest-milestone/tutorial.html"&gt;tutorial page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;I had to edit the downloaded file to remove the dashes at the start of some lines&lt;/li&gt;&lt;li&gt;run 'ant'&lt;/li&gt;&lt;li&gt;I also changed the following line to refer to the latest formal release of ivy, but both will work.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;from:&lt;/div&gt;&lt;div&gt;&lt;div&gt; &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt; &amp;lt;property name="ivy.install.version" value="2.0.0-beta1" /&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Georgia, serif;font-size:16px;"&gt;to:&lt;/span&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;  &lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;    &amp;lt;property name="ivy.install.version" value="2.1.0" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;2) Tutorial with no ivy&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;One of things about ivy is that you are supposed to take an existing project and 'ivyfy' - IE remove your local third party jars and rely on ivy to fullfill your dependancies&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;So this tutorial simply takes the results from the previous example and gets it to work without ivy.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;It therefore needs the src folder &amp;amp; its contents, the commons-lang jar in a lib dir in the project and a build.xml&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;The file structure for this and future tutorials is:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;.&lt;br /&gt;./build.xml&lt;br /&gt;./file&lt;br /&gt;./filestructure&lt;br /&gt;./lib&lt;br /&gt;./lib/commons-lang-2.1.jar&lt;br /&gt;./src&lt;br /&gt;./src/example&lt;br /&gt;./src/example/Hello.java&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;The build.xml required is:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;project name="go-ivy" default="go" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="build.dir" value="build" /&amp;gt;&lt;br /&gt;&amp;lt;property name="src.dir" value="src" /&amp;gt;&lt;br /&gt;&amp;lt;property name="lib.path.id" value="lib" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;path id="compile.classpath"&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${lib.path.id}"&amp;gt;&lt;br /&gt; &amp;lt;include name="**/*.jar"/&amp;gt;&lt;br /&gt;&amp;lt;/fileset&amp;gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt;     target: go Go ivy, go!&lt;br /&gt;    ================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="go" depends=""&lt;br /&gt;       description="--&amp;gt; resolve dependencies, compile and run the project"&amp;gt;&lt;br /&gt;   &amp;lt;echo message="NOT using ivy to resolve commons-lang 2.1..."/&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;echo message="compiling..."/&amp;gt;&lt;br /&gt;   &amp;lt;mkdir dir="${build.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;javac srcdir="${src.dir}" destdir="${build.dir}" &amp;gt;&lt;br /&gt;      &amp;lt;classpath refid="compile.classpath"/&amp;gt;&lt;br /&gt;   &amp;lt;/javac&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;java classname="example.Hello"&amp;gt;&lt;br /&gt;       &amp;lt;classpath&amp;gt;&lt;br /&gt;          &amp;lt;fileset dir="${lib.path.id}"&amp;gt;&lt;br /&gt;            &amp;lt;include name="**/*.jar"/&amp;gt;&lt;br /&gt;          &amp;lt;/fileset&amp;gt;&lt;br /&gt;          &amp;lt;path location="${build.dir}" /&amp;gt;&lt;br /&gt;       &amp;lt;/classpath&amp;gt;&lt;br /&gt;   &amp;lt;/java&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt;     target: clean         &lt;br /&gt;    ================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="clean" description="--&amp;gt; clean the project"&amp;gt;&lt;br /&gt;   &amp;lt;delete includeemptydirs="true" quiet="true"&amp;gt;&lt;br /&gt;       &amp;lt;fileset dir="${src.dir}" /&amp;gt;&lt;br /&gt;       &amp;lt;fileset dir="${build.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;/delete&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3) Tutorial with ivy.xml&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;In the above example everything is defined in the build.xml. The clever thing with ivy and maven is that your project does not explicitly contain third party jars. &lt;/li&gt;&lt;li&gt;Instead these are defined in a config file, ivy.xml in this case. &lt;/li&gt;&lt;li&gt;This step moves the dependancies defined in build.xml into a seperate ivy.xml&lt;/li&gt;&lt;li&gt;again simply run 'ant' to test.&lt;/li&gt;&lt;li&gt;&lt;b&gt;For this and subsequent tutorials I did not generate the src files. I kept them from the first tutorial&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Therefore for this and subsequent  tutorials all you need is the src folder with the src file, the build.xml &amp;amp; ivy.xml&lt;/li&gt;&lt;li&gt;Here is the ivy.xml&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;ivy-module version="2.0"&amp;gt;&lt;br /&gt;&amp;lt;info organisation="Utilisoft" module="Test-withivy.xml"/&amp;gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;&amp;lt;dependency org="commons-lang" name="commons-lang" rev="2.1"/&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/ivy-module&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Here is the new build.xml - I have removed much of the comments to make it smaller.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;project name="go-ivy-with-ivy.xml" default="go" xmlns:ivy="antlib:org.apache.ivy.ant" basedir="."&amp;gt;&lt;br /&gt;&amp;lt;!-- here is the version of ivy we will use. change this property to try a newer&lt;br /&gt;version if you want --&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.install.version" value="2.1.0" /&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.jar.dir" value="${basedir}/ivy" /&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name = "ivy.lib.dir" value="${basedir}\newlib" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;path id="lib.path.id"&amp;gt;&lt;br /&gt;  &amp;lt;fileset dir="${ivy.lib.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="build.dir" value="build" /&amp;gt;&lt;br /&gt;&amp;lt;property name="src.dir" value="src" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt;target: go Go ivy, go!&lt;br /&gt;================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="go" depends="resolve "&lt;br /&gt;description="--&amp;gt; resolve dependencies, compile and run the project"&amp;gt;&lt;br /&gt;&amp;lt;echo message="using ivy to resolve commons-lang 2.1 with ivy.xml"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="compiling..."/&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="lib.path.id" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;java classname="example.Hello"&amp;gt;&lt;br /&gt;&amp;lt;classpath&amp;gt;&lt;br /&gt;  &amp;lt;path refid="lib.path.id" /&amp;gt;&lt;br /&gt;  &amp;lt;path location="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;/classpath&amp;gt;&lt;br /&gt;&amp;lt;/java&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt;target: clean&lt;br /&gt;================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="clean" description="--&amp;gt; clean the project"&amp;gt;&lt;br /&gt;&amp;lt;delete includeemptydirs="true" quiet="true"&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${src.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;/delete&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="resolve" depends="install-ivy" description="Resolve the dependencies"&amp;gt;&lt;br /&gt;&amp;lt;ivy:retrieve/&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt;target: install-ivy&lt;br /&gt;this target is not necessary if you put ivy.jar in your ant lib directory&lt;br /&gt;if you already have ivy in your ant lib, you can simply remove this&lt;br /&gt;target and the dependency the 'go' target has on it&lt;br /&gt;================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="install-ivy" depends="download-ivy" description="--&amp;gt; install ivy"&amp;gt;&lt;br /&gt;&amp;lt;!-- try to load ivy here from local ivy dir, in case the user has not already dropped&lt;br /&gt;it into ant's lib dir (note that the latter copy will always take precedence).&lt;br /&gt;We will not fail as long as local lib dir exists (it may be empty) and&lt;br /&gt;ivy is in at least one of ant's lib dir or the local lib dir. --&amp;gt;&lt;br /&gt;&amp;lt;path id="ivy.lib.path"&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${ivy.jar.dir}" includes="*.jar"/&amp;gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&amp;lt;taskdef resource="org/apache/ivy/ant/antlib.xml"&lt;br /&gt;    uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="download-ivy" unless="skip.download"&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${ivy.jar.dir}"/&amp;gt;&lt;br /&gt;&amp;lt;!-- download Ivy from web site so that it can be used even without any special installation --&amp;gt;&lt;br /&gt;&amp;lt;echo message="installing ivy..."/&amp;gt;&lt;br /&gt;&amp;lt;get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;4) Tutorial with remote Ivy&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;Hopefully you are still with me. This is the last step in this tutorial set.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;The above example still downloads ivy locally &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;This example will now use ivy as part of your apache and installation&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;In the last example a ivy.jar file appeared in an 'ivy' directory. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;Determine the location of your apache ant installation and copy this jar into the apache ant lib directory.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;Ensure you have an ANT_HOME environment variable pointing to the apache4 ant installation directory&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;Below is the new build.xml file you will need.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;project name="go-ivy-with-ivy.xml" default="go" xmlns:ivy="antlib:org.apache.ivy.ant" basedir="."&amp;gt;&lt;br /&gt;&amp;lt;!-- here is the version of ivy we will use. change this property to try a newer&lt;br /&gt;version if you want --&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.install.version" value="2.1.0" /&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.jar.dir" value="${basedir}/ivy" /&amp;gt;&lt;br /&gt;&amp;lt;property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name = "ivy.lib.dir" value="${basedir}\newlib" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;path id="lib.path.id"&amp;gt;&lt;br /&gt;       &amp;lt;fileset dir="${ivy.lib.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="build.dir" value="build" /&amp;gt;&lt;br /&gt;&amp;lt;property name="src.dir" value="src" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt; target: go&lt;br /&gt;           Go ivy, go!&lt;br /&gt;================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="go" depends="resolve "&lt;br /&gt;   description="--&amp;gt; resolve dependencies, compile and run the project"&amp;gt;&lt;br /&gt;&amp;lt;echo message="using ivy to resolve commons-lang 2.1 with ivy.xml"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="compiling..."/&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="lib.path.id" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo&amp;gt;&lt;br /&gt;We are now ready to execute our simple program with its dependency on commons-lang.&lt;br /&gt;Let's go!&lt;br /&gt;&amp;lt;/echo&amp;gt;&lt;br /&gt;&amp;lt;java classname="example.Hello"&amp;gt;&lt;br /&gt;   &amp;lt;classpath&amp;gt;&lt;br /&gt;       &amp;lt;path refid="lib.path.id" /&amp;gt;&lt;br /&gt;       &amp;lt;path location="${build.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;/classpath&amp;gt;&lt;br /&gt;&amp;lt;/java&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- =================================&lt;br /&gt; target: clean     &lt;br /&gt;================================= --&amp;gt;&lt;br /&gt;&amp;lt;target name="clean" description="--&amp;gt; clean the project"&amp;gt;&lt;br /&gt;&amp;lt;delete includeemptydirs="true" quiet="true"&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${src.dir}" /&amp;gt;&lt;br /&gt;   &amp;lt;fileset dir="${build.dir}" /&amp;gt;&lt;br /&gt;&amp;lt;/delete&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="resolve" depends="" description="Resolve the dependencies"&amp;gt;&lt;br /&gt;&amp;lt;ivy:retrieve/&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;And to the future. I have two immediate aims:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Get a build of a spring hibernate using Ivy&lt;/li&gt;&lt;li&gt;Get a project with dependant projects using spring and hibernate using ivy.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-2662898999325351709?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/-TsoOxBIa2Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/2662898999325351709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=2662898999325351709" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2662898999325351709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/2662898999325351709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/-TsoOxBIa2Q/apache-ivy-working-with-apache-tutorial.html" title="Apache Ivy - Working with the Apache tutorial" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2009/12/apache-ivy-working-with-apache-tutorial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8AQ3Y9eyp7ImA9WxNaFko.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-6922543552364286193</id><published>2009-12-01T14:11:00.002Z</published><updated>2009-12-01T14:14:02.863Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T14:14:02.863Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>oracle - listing all tables in a schema</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WVFeZkR1ROBtDgLL6Ck3mrxMSDM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WVFeZkR1ROBtDgLL6Ck3mrxMSDM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WVFeZkR1ROBtDgLL6Ck3mrxMSDM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WVFeZkR1ROBtDgLL6Ck3mrxMSDM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;select table_name,&lt;/div&gt;&lt;div&gt;      to_number( extractvalue( xmltype(&lt;/div&gt;&lt;div&gt;          dbms_xmlgen.getxml('select count(*) c from '||table_name))&lt;/div&gt;&lt;div&gt;           ,'/ROWSET/ROW/C')) count&lt;/div&gt;&lt;div&gt; from user_tables;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;courtesy of &lt;a href="http://www.dba-oracle.com/t_count_tables_schema.htm"&gt;Burleson&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-6922543552364286193?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/5XgAzsZdpd0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/6922543552364286193/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=6922543552364286193" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/6922543552364286193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/6922543552364286193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/5XgAzsZdpd0/oracle-listing-all-tables-in-schema.html" title="oracle - listing all tables in a schema" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2009/12/oracle-listing-all-tables-in-schema.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMRX09cSp7ImA9WxNbGUo.&quot;"><id>tag:blogger.com,1999:blog-9220321694195024816.post-8627149412808379382</id><published>2009-11-23T09:56:00.002Z</published><updated>2009-11-23T09:59:44.369Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-23T09:59:44.369Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title>SQL info for oracle/sqlserver/mysql</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/33khRr4nJybI5F8fJoJd8-rLiV4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/33khRr4nJybI5F8fJoJd8-rLiV4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/33khRr4nJybI5F8fJoJd8-rLiV4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/33khRr4nJybI5F8fJoJd8-rLiV4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;While performing some testing to ensure my app was compliant with multiple db flavours I came across this site.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is a useful reference to quickly see how the different flavours perform some common operations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.sqlinfo.net/"&gt;http://www.sqlinfo.net/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9220321694195024816-8627149412808379382?l=billcomer.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillComersBlog/~4/WsAgy2Zq4qw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://billcomer.blogspot.com/feeds/8627149412808379382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9220321694195024816&amp;postID=8627149412808379382" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8627149412808379382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9220321694195024816/posts/default/8627149412808379382?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BillComersBlog/~3/WsAgy2Zq4qw/sql-info-for-oraclesqlservermysql.html" title="SQL info for oracle/sqlserver/mysql" /><author><name>Bill Comer</name><uri>http://www.blogger.com/profile/05556699120557412622</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_zbt981t2Jy8/So5xRi3tp-I/AAAAAAAABFk/A8g04LjWoms/S220/me.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://billcomer.blogspot.com/2009/11/sql-info-for-oraclesqlservermysql.html</feedburner:origLink></entry></feed>

