<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12346179</id><updated>2012-02-15T22:35:28.056-08:00</updated><category term='linux ubuntu vmware'/><category term='linux ubuntu vpn juniper'/><category term='java hibernate sybase identity insert'/><category term='ubuntu'/><category term='linux rhapsody firefox'/><category term='java jython linux'/><category term='maven junit surefire'/><category term='oracle'/><category term='linux ubuntu edgy eft vmware dbus'/><title type='text'>Autoedification</title><subtitle type='html'>Tech stuff for my own enlightenment.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12346179.post-2207751188687411607</id><published>2007-12-13T09:06:00.000-08:00</published><updated>2007-12-13T09:23:45.727-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux rhapsody firefox'/><title type='text'>Technical Error with Rhapsody on Linux</title><content type='html'>I use Rhapsody's streaming service from within Firefox 2.0 on Linux.  It works as a Firefox plugin.&lt;br /&gt;&lt;br /&gt;Recently (maybe when upgrading to Ubuntu 7.10?) it refused to play any music.  I found a couple of issues:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It wouldn't authenticate me properly.  I found that by deleting all my Rhapsody cookies and restarting Firefox that problem went away.&lt;/li&gt;&lt;li&gt;It simply refused to play music, each time reporting a "Technical Error".  Selecting "Try again" never worked and it eventually crashed Firefox.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The cause of the technical error appears to be due to the "esd" process running under Gnome.  &lt;a href="http://en.wikipedia.org/wiki/Enlightened_Sound_Daemon"&gt;ESD&lt;/a&gt; apparently is a mixer that lets multiple apps play sound at the same time (it probably does a lot more too).&lt;br /&gt;&lt;br /&gt;A number of people suggest killing it and that worked for me.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://www.gregwhitescarver.com/blog/2006/10/10/why-rhapsody-doesnt-work-in-ubuntu"&gt;http://www.gregwhitescarver.com/blog/2006/10/10/why-rhapsody-doesnt-work-in-ubuntu&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=394127"&gt;http://ubuntuforums.org/showthread.php?t=394127&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://real.lithium.com/real/board/message?board.id=InstallingRhapsody&amp;amp;thread.id=23279"&gt;http://real.lithium.com/real/board/message?board.id=InstallingRhapsody&amp;amp;thread.id=23279&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;The steps are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open a terminal window&lt;/li&gt;&lt;li&gt;killall esd&lt;/li&gt;&lt;li&gt;Restart Firefox&lt;/li&gt;&lt;li&gt;Use Rhapsody again&lt;/li&gt;&lt;/ol&gt;This works every time for me.&lt;br /&gt;&lt;br /&gt;I'm speculating that Rhapsody refuses to work when that is running to try and prevent people from capturing the streaming audio?&lt;br /&gt;&lt;br /&gt;I currently have an issue open with Real Networks.  I documented the above workaround but outlined that it would be great if it either gave a much more obvious error message, or worked without requiring termination of esd.  Here was their last reply.  I don't hold out much hope.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hello,&lt;br /&gt;&lt;br /&gt;My name is ******. I am a Real Networks Tier 2 Technical Support Representative. Your case has been escalated to our department due to severity. Thank you for your continued patience, and I would like to apologize for any inconvenience you may have experienced so far.&lt;br /&gt;&lt;br /&gt;I have followed this thread since the day you initiated it. As I understand it you wish for a better work-around to technical errors playing Rhapsody Online content. I can help you with this.&lt;br /&gt;&lt;br /&gt;I have forwarded the information regarding this work-around to the Rhapsody team for further investigation. However since there is limited support for Linux and Rhapsody Online I do not know if/when another solution will be available.&lt;br /&gt;&lt;br /&gt;Please reply to this email with any further questions or concerns.&lt;br /&gt;&lt;br /&gt;Thank you,&lt;br /&gt;&lt;br /&gt;RealNetworks Technical Support&lt;br /&gt;Tier 2 Escalation Department&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-2207751188687411607?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/2207751188687411607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=2207751188687411607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/2207751188687411607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/2207751188687411607'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2007/12/technical-error-with-rhapsody-on-linux.html' title='Technical Error with Rhapsody on Linux'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-5606023822109177016</id><published>2007-01-27T10:52:00.000-08:00</published><updated>2007-01-27T11:22:42.123-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java hibernate sybase identity insert'/><title type='text'>Hibernate identity column insert ignores update count on Sybase</title><content type='html'>Ran into a problem whereby an insert into a Sybase database failed but Hibernate reported no error.  Instead a PK value of zero was assigned.&lt;br /&gt;&lt;br /&gt;Posted a question on the forums&lt;br /&gt;&lt;a href="http://forum.hibernate.org/viewtopic.php?t=970219"&gt;Sybase numeric overflow on insert does not fail as expected&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;but then decided to file a &lt;a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-2388"&gt;JIRA issue HHH-2388: Insert w/ identity column fails on Sybase but no exception occurs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-5606023822109177016?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/5606023822109177016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=5606023822109177016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5606023822109177016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5606023822109177016'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2007/01/hibernate-identity-column-insert.html' title='Hibernate identity column insert ignores update count on Sybase'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-1169996804266690525</id><published>2007-01-23T13:53:00.000-08:00</published><updated>2007-01-27T11:21:48.224-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven junit surefire'/><title type='text'>Maven 2 Surefire plugin works with Junit 4</title><content type='html'>The latest snapshot of the Surefire plugin for Maven2 now works with JUnit4.  Read about it on the &lt;a href="http://jira.codehaus.org/browse/SUREFIRE-31"&gt;JIRA issue&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To use it right now you'll need to add a pluginRepository and declare a specific version of the plugin.&lt;br /&gt;&lt;br /&gt;Here is a complete pom.xml&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;  &amp;lt;groupId&amp;gt;test-junit4&amp;lt;/groupId&amp;gt;&lt;br /&gt;  &amp;lt;artifactId&amp;gt;test&amp;lt;/artifactId&amp;gt;&lt;br /&gt;  &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;  &amp;lt;dependencies&amp;gt;&lt;br /&gt;    &amp;lt;dependency&amp;gt;&lt;br /&gt;      &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;&lt;br /&gt;      &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;&lt;br /&gt;      &amp;lt;version&amp;gt;4.1&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;  &amp;lt;build&amp;gt;&lt;br /&gt;    &amp;lt;defaultGoal&amp;gt;test&amp;lt;/defaultGoal&amp;gt;&lt;br /&gt;    &amp;lt;plugins&amp;gt;&lt;br /&gt;      &amp;lt;plugin&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;maven-surefire-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;2.3-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;      &amp;lt;/plugin&amp;gt;&lt;br /&gt;    &amp;lt;/plugins&amp;gt;&lt;br /&gt;  &amp;lt;/build&amp;gt;&lt;br /&gt;  &amp;lt;pluginRepositories&amp;gt;&lt;br /&gt;    &amp;lt;pluginRepository&amp;gt;&lt;br /&gt;      &amp;lt;id&amp;gt;maven-snapshot-repository&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;url&amp;gt;http://people.apache.org/maven-snapshot-repository&amp;lt;/url&amp;gt;&lt;br /&gt;      &amp;lt;releases&amp;gt;&lt;br /&gt;        &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;&lt;br /&gt;      &amp;lt;/releases&amp;gt;&lt;br /&gt;      &amp;lt;snapshots&amp;gt;&lt;br /&gt;        &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&lt;br /&gt;      &amp;lt;/snapshots&amp;gt;&lt;br /&gt;    &amp;lt;/pluginRepository&amp;gt;&lt;br /&gt;  &amp;lt;/pluginRepositories&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-1169996804266690525?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/1169996804266690525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=1169996804266690525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/1169996804266690525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/1169996804266690525'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2007/01/junit4-works-with-maven-2.html' title='Maven 2 Surefire plugin works with Junit 4'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-4936430631889794555</id><published>2006-11-22T07:48:00.000-08:00</published><updated>2009-02-02T18:39:30.612-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ubuntu vmware'/><title type='text'>VMware guest clock runs fast</title><content type='html'>I'm running VMWare Server on a dual core laptop with Ubuntu.  I was finding the guest clock on my Windows XP guest was running fast.  Since I use the Windows guest for running Outlook, I found my meeting reminders were appearing hours early.&lt;br /&gt;&lt;br /&gt;The problem appears to be due to cpu frequency scaling.  The article &lt;a href="http://kb.vmware.com/vmtnkb/search.do?cmd=displayKC&amp;docType=kc&amp;externalId=1591&amp;sliceId=SAL_Public"&gt;Host Power Management Causes Problems with Guest Timekeeping on Linux Hosts&lt;/a&gt; has details on solving the problem.&lt;br /&gt;&lt;br /&gt;You have to edit a config file to specify your max cpu frequency.  You can find it out in a couple of ways:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq &lt;br /&gt;1833000&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cpufreq-info&lt;br /&gt;cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006&lt;br /&gt;Report errors and bugs to linux@brodo.de, please.&lt;br /&gt;analyzing CPU 0:&lt;br /&gt;  driver: centrino&lt;br /&gt;  CPUs which need to switch frequency at the same time: 0&lt;br /&gt;  hardware limits: 1000 MHz - 1.83 GHz&lt;br /&gt;  available frequency steps: 1.83 GHz, 1.33 GHz, 1000 MHz&lt;br /&gt;  available cpufreq governors: userspace, powersave, ondemand, conservative, performance&lt;br /&gt;  current policy: frequency should be within 1000 MHz and 1.83 GHz.&lt;br /&gt;                  The governor "ondemand" may decide which speed to use&lt;br /&gt;                  within this range.&lt;br /&gt;  current CPU frequency is 1000 MHz.&lt;br /&gt;analyzing CPU 1:&lt;br /&gt;  driver: centrino&lt;br /&gt;  CPUs which need to switch frequency at the same time: 1&lt;br /&gt;  hardware limits: 1000 MHz - 1.83 GHz&lt;br /&gt;  available frequency steps: 1.83 GHz, 1.33 GHz, 1000 MHz&lt;br /&gt;  available cpufreq governors: userspace, powersave, ondemand, conservative, performance&lt;br /&gt;  current policy: frequency should be within 1000 MHz and 1.83 GHz.&lt;br /&gt;                  The governor "ondemand" may decide which speed to use&lt;br /&gt;                  within this range.&lt;br /&gt;  current CPU frequency is 1000 MHz.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or (verified on Mac)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sysctl -a | grep cpufreq&lt;br /&gt;hw.cpufrequency = 2400000000&lt;br /&gt;hw.cpufrequency_max: 2400000000&lt;br /&gt;hw.cpufrequency_min: 2400000000&lt;br /&gt;hw.cpufrequency: 2400000000&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Since my max CPU is 1.83 GHz, I added these lines to /etc/vmware/config:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;host.cpukHz = 1830000&lt;br /&gt;host.noTSC = TRUE&lt;br /&gt;ptsc.noTSC = TRUE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I restarted VMware.  So far, it seems to be keeping time.  I think it simply stops the clock getting ahead of itself, then the VMWare Tools time synchronization ensures if it runs slow, it periodically catches up to the correct time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-4936430631889794555?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/4936430631889794555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=4936430631889794555' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/4936430631889794555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/4936430631889794555'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/11/vmware-guest-clock-runs-fast.html' title='VMware guest clock runs fast'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-8064813491016106414</id><published>2006-10-03T10:22:00.001-07:00</published><updated>2006-10-03T10:22:44.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ubuntu edgy eft vmware dbus'/><title type='text'>Vmware won't start on Edgy Eft</title><content type='html'>After upgrading to Ubuntu 6.10 Edgy Eft (beta), vmware fails to start.&lt;br /&gt;&lt;br /&gt;Problem outlined here: &lt;a href="https://launchpad.net/distros/ubuntu/+source/hal/+bug/59232"&gt;libhal1 0.5.7.1-0ubuntu8 with new dbus breaks vmware&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://launchpad.net/distros/ubuntu/+source/hal/+bug/59232/comments/4"&gt;Comment #4&lt;/a&gt; solves it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-8064813491016106414?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://launchpad.net/distros/ubuntu/+source/hal/+bug/59232' title='Vmware won&apos;t start on Edgy Eft'/><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/8064813491016106414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=8064813491016106414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/8064813491016106414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/8064813491016106414'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/10/vmware-wont-start-on-edgy-eft.html' title='Vmware won&apos;t start on Edgy Eft'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-1460445847453830636</id><published>2006-10-03T00:43:00.000-07:00</published><updated>2007-10-22T09:08:16.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ubuntu vpn juniper'/><title type='text'>Juniper Networks network connect on Ubuntu</title><content type='html'>Was trying to get the Java-applet / browser based network connect to work on Ubuntu.&lt;br /&gt;&lt;br /&gt;This site &lt;a href="http://www.continuousthinking.com/2006/9/6/kubuntu-dapper-juniper-ssl-vpn"&gt;Kubuntu Dapper, Juniper SSL VPN&lt;/a&gt; got most of the way.&lt;br /&gt;&lt;br /&gt;My only issue were the names of the openssl and crypto libraries.  Mine were 0.9.8 instead.  Aside from that, everything worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-1460445847453830636?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/1460445847453830636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=1460445847453830636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/1460445847453830636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/1460445847453830636'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/10/juniper-networks-network-connect-on.html' title='Juniper Networks network connect on Ubuntu'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-5284403330936831393</id><published>2006-09-26T08:26:00.000-07:00</published><updated>2006-09-26T08:34:03.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java jython linux'/><title type='text'>Up arrow in Java console input on Linux</title><content type='html'>[edit]  Whaddaya know, this is documented here: &lt;a href="http://wiki.python.org/jython/ReadlineSetup"&gt;http://wiki.python.org/jython/ReadlineSetup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I was running &lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt; on Linux which has a console application for entering Jython commands.  Unfortunately pressing the up-arrow did not recall the last command in the history.  Instead, it printed the escape code for up-arrow (^[[A).&lt;br /&gt;&lt;br /&gt;I've seen this problem before on Linux.  Not sure if it is limited to Java console applications.  I'm not even sure why it occurs.  Perhaps something to do with buffered input?&lt;br /&gt;&lt;br /&gt;Anyway, I did find a solution:  &lt;a href="http://jline.sourceforge.net/"&gt;JLine&lt;/a&gt;.  You don't even have to modify a program to get it to work.  You can wrap the invocation of the Java main class as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java -cp jline-0.9.9.jar jline.ConsoleRunner MyMainClass&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So my command line for Jython became:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java -classpath "jline-0.9.9.jar:jython.jar:$CLASSPATH" jline.ConsoleRunner org.python.util.jython&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can simply edit the Jython startup script to add the JLine jar and insert the jline.ConsoleRunner before the jython main class.&lt;br /&gt;&lt;br /&gt;Up-arrow now recalls the last command.  Left, right and down arrow work too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-5284403330936831393?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/5284403330936831393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=5284403330936831393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5284403330936831393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5284403330936831393'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/up-arrow-in-java-console-input-on-linux.html' title='Up arrow in Java console input on Linux'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-3803462392009396005</id><published>2006-09-18T10:28:00.000-07:00</published><updated>2006-09-18T10:35:39.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Enabling Oracle Managed Files</title><content type='html'>It turns out I was wrong about &lt;a href="http://autoedification.blogspot.com/2006/09/oracle-10g-standard-edition-on-ubuntu.html"&gt;Oracle XE not supporting Oracle Managed Files&lt;/a&gt;.  It is just turned off by default.  Here is how to turn it on:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sqlplus system@XE&lt;br /&gt;...&lt;br /&gt;SQL&amp;gt; alter system set db_create_file_dest='/usr/lib/oracle/xe/oradata/';&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can confirm it works with:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SQL&amp;gt; create tablespace my_test_tablespace datafile size 1M;&lt;br /&gt;&lt;br /&gt;Tablespace created.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; select file_name from dba_data_files;&lt;br /&gt;&lt;br /&gt;FILE_NAME&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;/usr/lib/oracle/xe/oradata/XE/users.dbf&lt;br /&gt;/usr/lib/oracle/xe/oradata/XE/sysaux.dbf&lt;br /&gt;/usr/lib/oracle/xe/oradata/XE/undo.dbf&lt;br /&gt;/usr/lib/oracle/xe/oradata/XE/system.dbf&lt;br /&gt;/usr/lib/oracle/xe/oradata/XE/datafile/o1_mf_my_test__2jxoyjpr_.dbf&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; drop tablespace my_test_tablespace;&lt;br /&gt;&lt;br /&gt;Tablespace dropped.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; exit&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-3803462392009396005?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/3803462392009396005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=3803462392009396005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/3803462392009396005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/3803462392009396005'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/enabling-oracle-managed-files.html' title='Enabling Oracle Managed Files'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-4834337646947704543</id><published>2006-09-18T09:38:00.000-07:00</published><updated>2006-09-18T09:42:22.784-07:00</updated><title type='text'>Oracle 10g Standard Edition on Ubuntu</title><content type='html'>I've been using Oracle XE on Ubuntu 6.06 (installed from &lt;a href="http://oss.oracle.com/debian"&gt;http://oss.oracle.com/debian&lt;/a&gt;).  It works fine.  However, I was trying to create a database from scripts provided to me that assumed Oracle Managed Files were supported.&lt;br /&gt;&lt;br /&gt;That is, the scripts attempted to create a tablespace without explicitly naming the datafile.&lt;br /&gt;&lt;br /&gt;This failed on XE.  I figured I could install Oracle 10g Standard Edition.  However, the installer wouldn't even run.  It fails after performing a distribution check.&lt;br /&gt;&lt;br /&gt;You can workaround this issue with the following command to run the installer:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;./runInstaller -ignoreSysPrereqs&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The only other issue I encountered is documented here:&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=413032&amp;tstart=0"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=413032&amp;amp;tstart=0&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Make sure that you either remove Oracle XE or override $ORACLE_HOME to point to your new Oracle home before executing those commands.&lt;br /&gt;&lt;br /&gt;This also seems to be a good reference &lt;a href="http://www.dizwell.com/prod/node/52"&gt;http://www.dizwell.com/prod/node/52&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-4834337646947704543?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/4834337646947704543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=4834337646947704543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/4834337646947704543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/4834337646947704543'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/oracle-10g-standard-edition-on-ubuntu.html' title='Oracle 10g Standard Edition on Ubuntu'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-5578034512246631964</id><published>2006-09-13T11:26:00.000-07:00</published><updated>2006-09-13T11:37:10.103-07:00</updated><title type='text'>Unnecessary transitive Maven2 dependencies considered harmful</title><content type='html'>While deploying an EAR, I kept getting this error when instantiating my Spring beans which happen to use Hibernate to talk to the database:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java.lang.ClassCastException: org.jboss.tm.TxManager&lt;br /&gt;        at org.hibernate.transaction.JNDITransactionManagerLookup.getTransactionManager(JNDITransactionManagerLookup.java:23)&lt;br /&gt;        at org.hibernate.impl.SessionFactoryImpl.&lt;init&gt;(SessionFactoryImpl.java:302)&lt;br /&gt;        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)&lt;br /&gt;        at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:825)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Of course, good old ClassCastException doesn't tell me what class it expected, only what class it got.  From looking at the javadocs, its expecting a javax.transaction.TransactionManager.  However, org.jboss.tm.TxManager does, in fact, implement that interface.&lt;br /&gt;&lt;br /&gt;So what gives?  Well, its going to be a classloader issue.  Again, ClassCastException (or most likely the caller) fails to realize that a class's name isn't enough to uniquely identify a class.  The classloader that loads it is very important.&lt;br /&gt;&lt;br /&gt;Given that I'm using Maven2, I figured that I must be including a copy of javax.transaction.TxManager somewhere.  &lt;br /&gt;&lt;br /&gt;This command will list the contents of all jars:&lt;br /&gt;&lt;pre&gt;find -name '*.jar' -exec unzip -l '{}' \;&lt;/pre&gt;&lt;br /&gt;Redirect that to a text file, then grep for javax/transaction/TransactionManager&lt;br /&gt;&lt;br /&gt;I found I was bundling jta-1.0.1B.jar in my ear.  How did that get there?  Transitive dependencies, of course.  I didn't have to guess too hard as to who might be including that: Hibernate.  Now, I thought I was already exlcuding the jta dependency.  Turns out I'd only done it in a sub-project.  I decided to fix it for all hibernate dependencies in my project by adding it in the parent pom.xml:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;      &amp;lt;dependency&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.hibernate&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;hibernate&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;3.1.3&amp;lt;/version&amp;gt;&lt;br /&gt;        &amp;lt;exclusions&amp;gt;&lt;br /&gt;          &amp;lt;!-- &lt;br /&gt;            This is container-provided; we don't need the dependency here;&lt;br /&gt;            In fact, java.lang.ClassCastException: org.jboss.tm.TxManager may occur if we&lt;br /&gt;            accidentally include a jta jar&lt;br /&gt;          --&amp;gt;&lt;br /&gt;          &amp;lt;exclusion&amp;gt;&lt;br /&gt;            &amp;lt;groupId&amp;gt;javax.transaction&amp;lt;/groupId&amp;gt;&lt;br /&gt;            &amp;lt;artifactId&amp;gt;jta&amp;lt;/artifactId&amp;gt;&lt;br /&gt;          &amp;lt;/exclusion&amp;gt;&lt;br /&gt;        &amp;lt;/exclusions&amp;gt;&lt;br /&gt;      &amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With that, the problem is solved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-5578034512246631964?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/5578034512246631964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=5578034512246631964' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5578034512246631964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5578034512246631964'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/unnecessary-transitive-maven2.html' title='Unnecessary transitive Maven2 dependencies considered harmful'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-8138767492315709623</id><published>2006-09-13T11:02:00.000-07:00</published><updated>2006-09-13T11:05:07.809-07:00</updated><title type='text'>Maven2 antrun plugin and xdoclet issues</title><content type='html'>I was adding a custom ant task to maven2 pom.xml.  It worked just fine when I built from the sub-project.  E.g:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       &amp;lt;plugin&amp;gt;&lt;br /&gt;         &amp;lt;artifactId&amp;gt;maven-antrun-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;         &amp;lt;executions&amp;gt;&lt;br /&gt;           &amp;lt;execution&amp;gt;&lt;br /&gt;             &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;&lt;br /&gt;             &amp;lt;goals&amp;gt;&lt;br /&gt;               &amp;lt;goal&amp;gt;run&amp;lt;/goal&amp;gt;&lt;br /&gt;             &amp;lt;/goals&amp;gt;&lt;br /&gt;           &amp;lt;/execution&amp;gt;&lt;br /&gt;         &amp;lt;/executions&amp;gt;&lt;br /&gt;         &amp;lt;configuration&amp;gt;&lt;br /&gt;           &amp;lt;tasks&amp;gt;&lt;br /&gt;             &amp;lt;echo&amp;gt;Hello&amp;lt;/echo&amp;gt;&lt;br /&gt;           &amp;lt;/tasks&amp;gt;&lt;br /&gt;         &amp;lt;/configuration&amp;gt;&lt;br /&gt;       &amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;However, when I stepped back up to the parent project and ran the build, it failed with:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[ERROR] BUILD ERROR&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Internal error in the plugin manager executing goal 'org.apache.maven.plugins:maven-antrun-plugin:1.0:run': Unable to find the mojo 'org.apache.maven.plugins:maven-antrun-plugin:1.0:run' in the plugin 'org.apache.maven.plugins:maven-antrun-plugin'&lt;br /&gt;Component descriptor cannot be found in the component repository: org.apache.maven.plugin.Mojoorg.apache.maven.plugins:maven-antrun-plugin:1.0:run.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It turns out that when building from the parent build, XDOclet is used by certain sub-projects.  XDoclet depends on the maven antrun plugin version 1.0.  With Maven 2.0.4 the default antrun plugin is 1.1.  Thus, a conflict arises.&lt;br /&gt;&lt;br /&gt;Found this reference: &lt;a href="http://jira.codehaus.org/browse/MANTRUN-37"&gt;http://jira.codehaus.org/browse/MANTRUN-37&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While there is no fix (XDoclet can't [yet?] be modified to use antrun 1.1, there is a workaround:  Simply specify version 1.0 of the antrun plugin.  I did this in pluginManagement in my parent pom.xml:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;  &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;  &amp;lt;artifactId&amp;gt;maven-antrun-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;  &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-8138767492315709623?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/8138767492315709623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=8138767492315709623' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/8138767492315709623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/8138767492315709623'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/maven2-antrun-plugin-and-xdoclet-issues.html' title='Maven2 antrun plugin and xdoclet issues'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-5190406447180473999</id><published>2006-09-13T10:40:00.000-07:00</published><updated>2006-09-13T11:00:41.737-07:00</updated><title type='text'>Maven2 ejb-client woes</title><content type='html'>The Maven2 ejb plugin can automatically generate an ejb-client for you:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       &amp;lt;plugin&amp;gt;&lt;br /&gt;         &amp;lt;artifactId&amp;gt;maven-ejb-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;         &amp;lt;configuration&amp;gt;&lt;br /&gt;           &amp;lt;archive&amp;gt;&lt;br /&gt;             &amp;lt;manifest&amp;gt;&lt;br /&gt;               &amp;lt;addClasspath&amp;gt;true&amp;lt;/addClasspath&amp;gt;&lt;br /&gt;             &amp;lt;/manifest&amp;gt;&lt;br /&gt;           &amp;lt;/archive&amp;gt;&lt;br /&gt;           &amp;lt;generateClient&amp;gt;true&amp;lt;/generateClient&amp;gt;&lt;br /&gt;         &amp;lt;/configuration&amp;gt;&lt;br /&gt;       &amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This can be dependend-upon from other projects:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;dependency&amp;gt;&lt;br /&gt;   &amp;lt;groupid&amp;gt;com.shopzilla.ca.bidding.impl.google&amp;lt;/groupid&amp;gt;&lt;br /&gt;   &amp;lt;artifactid&amp;gt;ejbs&amp;lt;/artifactid&amp;gt;&lt;br /&gt;   &amp;lt;type&amp;gt;ejb-client&amp;lt;/type&amp;gt;&lt;br /&gt; &amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, it often includes many classes / resources that you don't want to provide to the client.  The default excludes get rid of some stuff.  In my case, I had a beanRefContext.xml Spring config file in there that broke clients (since it referred to other Spring xml files that are in a server-side jar).&lt;br /&gt;&lt;br /&gt;Supposedly you can add &amp;lt;clientexcludes&amp;gt; elements:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        &amp;lt;clientexcludes&amp;gt;&lt;br /&gt;          &amp;lt;clientexclude&amp;gt;beanRefContext.xml&amp;lt;/clientexclude&amp;gt;&lt;br /&gt;          &amp;lt;clientexclude&amp;gt;META-INF/ejb-jar.xml&amp;lt;/clientexclude&amp;gt;&lt;br /&gt;          &amp;lt;clientexclude&amp;gt;META-INF/jboss.xml&amp;lt;/clientexclude&amp;gt;&lt;br /&gt;          &amp;lt;clientexclude&amp;gt;**/mdb/&amp;lt;/clientexclude&amp;gt;&lt;br /&gt;        &amp;lt;/clientexcludes&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Sadly, that doesn't work with Maven 2.0.4 due to a bug in the ejb plugin: &lt;a href="http://jira.codehaus.org/browse/MEJB-19"&gt;http://jira.codehaus.org/browse/MEJB-19&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My workaround was to add an Ant task that rather heavy-handedly simulated this by unzipping the client jar and re-zipping with the exlcuded files.  here it is:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       &amp;lt;plugin&amp;gt;&lt;br /&gt;         &amp;lt;artifactId&amp;gt;maven-antrun-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;         &amp;lt;executions&amp;gt;&lt;br /&gt;           &amp;lt;execution&amp;gt;&lt;br /&gt;             &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;&lt;br /&gt;             &amp;lt;goals&amp;gt;&lt;br /&gt;               &amp;lt;goal&amp;gt;run&amp;lt;/goal&amp;gt;&lt;br /&gt;             &amp;lt;/goals&amp;gt;&lt;br /&gt;           &amp;lt;/execution&amp;gt;&lt;br /&gt;         &amp;lt;/executions&amp;gt;&lt;br /&gt;         &amp;lt;configuration&amp;gt;&lt;br /&gt;           &amp;lt;!-- Manually strip client files since clientExcludes doesn't work on ejb plugin --&amp;gt;&lt;br /&gt;           &amp;lt;tasks&amp;gt;&lt;br /&gt;             &amp;lt;property name="ejb-client-excludes-list" value="beanRefContext.xml, META-INF/ejb-jar.xml, META-INF/jboss.xml, **/mdb/" /&amp;gt;&lt;br /&gt;             &amp;lt;echo&amp;gt;Manually excluding from ejb client jar: ${ejb-client-excludes-list}&amp;lt;/echo&amp;gt;&lt;br /&gt;             &amp;lt;property name="ejb-client-expanded.dir" value="${project.build.directory}/tmpClient" /&amp;gt;&lt;br /&gt;             &amp;lt;property name="ejb-client-artifact-name"&lt;br /&gt;               value="${project.build.directory}/${project.artifactId}-${project.version}-client.jar" /&amp;gt;&lt;br /&gt;             &amp;lt;delete dir="${ejb-client-expanded.dir}" /&amp;gt;&lt;br /&gt;             &amp;lt;unzip src="${ejb-client-artifact-name}" dest="${ejb-client-expanded.dir}" /&amp;gt;&lt;br /&gt;             &amp;lt;delete file="${ejb-client-artifact-name}" /&amp;gt;&lt;br /&gt;             &amp;lt;zip destfile="${ejb-client-artifact-name}" basedir="${ejb-client-expanded.dir}"&lt;br /&gt;               excludes="${ejb-client-excludes-list}" /&amp;gt;&lt;br /&gt;           &amp;lt;/tasks&amp;gt;&lt;br /&gt;         &amp;lt;/configuration&amp;gt;&lt;br /&gt;       &amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-5190406447180473999?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/5190406447180473999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=5190406447180473999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5190406447180473999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/5190406447180473999'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/maven2-ejb-client-woes.html' title='Maven2 ejb-client woes'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-7591864533406872525</id><published>2006-09-01T10:06:00.000-07:00</published><updated>2006-09-01T10:17:45.176-07:00</updated><title type='text'>Sending emails in Spring using Freemarker</title><content type='html'>Create a mail sender&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"&amp;gt;&lt;br /&gt;    &amp;lt;property name="host" value="localhost"&amp;gt;&lt;br /&gt;    &amp;lt;property name="port" value="25"&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Create the freemarker configuration&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;bean id="freemarkerMailConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"&amp;gt;&lt;br /&gt;    &amp;lt;property name="templateLoaderPath" value="/WEB-INF/mail"&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Create a class for sending the mail:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class InfoSenderMail implements InfoSender {&lt;br /&gt;&lt;br /&gt;    private Configuration configuration;&lt;br /&gt;    private String freemarkerTemplate;&lt;br /&gt;    private MailSender mailSender;&lt;br /&gt;&lt;br /&gt;    public void send() throws SendException {&lt;br /&gt;        SimpleMailMessage message = new SimpleMailMessage();&lt;br /&gt;&lt;br /&gt;        // Add stuff to them model for inserting into the template&lt;br /&gt;        final Map model = new HashMap();&lt;br /&gt;        model.put("name", "Tim");&lt;br /&gt;&lt;br /&gt;        // Merge the model into the template&lt;br /&gt;        final String result;&lt;br /&gt;        try {&lt;br /&gt;            result = FreeMarkerTemplateUtils.processTemplateIntoString(configuration.getTemplate(&lt;br /&gt;                        freemarkerTemplate), model);&lt;br /&gt;        } catch (IOException e) {&lt;br /&gt;            throw new SendException(&lt;br /&gt;                "Unable to read or process freemarker configuration or template", e);&lt;br /&gt;        } catch (TemplateException e) {&lt;br /&gt;            throw new SendException("Problem initializing freemarker or rendering template '"&lt;br /&gt;                + freemarkerTemplate + "'", e);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Construct and send the message&lt;br /&gt;        message.setTo("someone@somewhere.com");&lt;br /&gt;        message.setSubject("Here is the info you requested");&lt;br /&gt;        message.setText(result);&lt;br /&gt;&lt;br /&gt;        mailSender.send(message);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setFreemarkerMailConfiguration(Configuration configuration) {&lt;br /&gt;        this.configuration = configuration;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setFreemarkerTemplate(String freemarkerTemplate) {&lt;br /&gt;        this.freemarkerTemplate = freemarkerTemplate;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setMailSender(MailSender mailSender) {&lt;br /&gt;        this.mailSender = mailSender;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Define the bean; the template should be in the location specified by templateLoaderPath (e.g. /WEB-INF/mail)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;bean id="infoSender" class="InfoSenderMail"&lt;br /&gt;    &amp;lt;property name="mailSender" ref="mailSender"&amp;gt;&lt;br /&gt;    &amp;lt;property name="freemarkerMailConfiguration" ref="freemarkerMailConfiguration"&amp;gt;&lt;br /&gt;    &amp;lt;property name="freemarkerTemplate" value="mytemplate.txt"&amp;gt;&lt;br /&gt;  &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Create the template.  E.g. mytemplate.txt&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Hello, ${name}!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then simply inject the bean in another class and invoke send();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-7591864533406872525?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/7591864533406872525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=7591864533406872525' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/7591864533406872525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/7591864533406872525'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/09/sending-emails-in-spring-using.html' title='Sending emails in Spring using Freemarker'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-115645894528729338</id><published>2006-08-24T15:29:00.000-07:00</published><updated>2006-08-24T15:35:45.296-07:00</updated><title type='text'>MSN Messenger doesn't like Hibernate code?</title><content type='html'>So I was in the middle of an IM conversation using MSN messenger when I pasted some java code which uses Hibernate's APIs when I got this error:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Message could not be sent because a connection error occurred&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Weird... everything else I'd typed was fine.  Subsequent messages were fine.  Here is what I tried to send:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ScrollableResults scrollableResults = query.scroll();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Of course, silly me!  MSN messenger doesn't let you send a message with the characters ".scr" in it.  Thanks to Wikipedia for a &lt;a href="http://en.wikipedia.org/wiki/Windows_Live_Messenger#Filtering"&gt;full explanation&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-115645894528729338?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/115645894528729338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=115645894528729338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/115645894528729338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/115645894528729338'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/08/msn-messenger-doesnt-like-hibernate.html' title='MSN Messenger doesn&apos;t like Hibernate code?'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-114235370662315943</id><published>2006-03-14T08:24:00.000-08:00</published><updated>2006-03-22T09:48:28.410-08:00</updated><title type='text'>Classpath Gymnastics: JAXP, Java5 and JBoss</title><content type='html'>&lt;p&gt;&lt;br /&gt;Started to get a problem with JBoss and Java5.  Not sure what caused it to _start_ occurring.  I'm using isolated EAR deployments and excluding all xml-apis and xerces jars from my EARs since all this stuff should be provided by the java runtime.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Anyway, started to get this error:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFctory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;It turns out you can enable jaxp debugging with the following system property:&lt;br /&gt; -Djaxp.debug=true&lt;br /&gt;&lt;br /&gt;This resulted in some useful messages:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;08:17:52,874 INFO  [STDOUT] JAXP: using thread context class loader (org.jboss.util.loading.DelegatingClassLoader@11c9fcc) for search&lt;br /&gt;08:17:52,875 INFO  [STDOUT] JAXP: Looking up system property 'javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom'&lt;br /&gt;08:17:52,875 INFO  [STDOUT] JAXP: The property is undefined.&lt;br /&gt;08:17:52,876 INFO  [STDOUT] JAXP: found null in $java.home/jaxp.properties&lt;br /&gt;08:17:52,876 INFO  [STDOUT] JAXP: no META-INF/services/javax.xml.xpath.XPathFactory file was found&lt;br /&gt;08:17:52,876 INFO  [STDOUT] JAXP: attempting to use the platform default W3C DOM XPath lib&lt;br /&gt;08:17:52,876 INFO  [STDOUT] JAXP: instanciating org.apache.xpath.jaxp.XPathFactoryImpl&lt;br /&gt;08:17:52,877 INFO  [STDOUT] JAXP: failed to instanciate org.apache.xpath.jaxp.XPathFactoryImpl&lt;br /&gt;08:17:52,880 INFO  [STDOUT] java.lang.ClassNotFoundException: No ClassLoaders found for: org.apache.xpath.jaxp.XPathFactoryImpl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Looking at the JAXP sources revealed the problem. In the source for Java5 javax.xml.xpath.XPathFactoryFinder we see this:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;debugPrintln("attempting to use the platform default W3C DOM XPath lib");&lt;br /&gt;return createInstance("com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the log, we see this message:   instanciating org.apache.xpath.jaxp.XPathFactoryImpl&lt;br /&gt;&lt;br /&gt;&lt;b&gt;com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl != org.apache.xpath.jaxp.XPathFactoryImpl&lt;/b&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So why is this?  Looking at the JBoss endorsed directory at &lt;jbosshome&gt;/lib/endorsed we can see it contains xml-apis.jar which contains javax.xml.xpath.XPathFactoryFinder which overrides the Java5 version.  That overridden version tries to lookup org.apache.xpath.jaxp.XPathFactoryImpl but that doesn't exist in Java5; it was renamed. And since I've excluded all xml jars from my EARs, I don't have that class anywhere.&lt;br /&gt;&lt;/jbosshome&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Of course, I'm not the first to have this problem.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.jboss.org/index.html?module=bb&amp;op=viewtopic&amp;amp;p=3878353#3878353"&gt;http://www.jboss.org/index.html?module=bb&amp;op=viewtopic&amp;amp;p=3878353#3878353&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="*%20http://forums.java.net/jive/thread.jspa?threadID=688&amp;tstart=0"&gt;http://forums.java.net/jive/thread.jspa?threadID=688&amp;amp;tstart=0&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I simply renamed the lib/endorsed directory and restarted.  This seemed to work, although based on the second link above, there might be more work to do  later.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-114235370662315943?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/114235370662315943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=114235370662315943' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/114235370662315943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/114235370662315943'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/03/classpath-gymnastics-jaxp-java5-and.html' title='Classpath Gymnastics: JAXP, Java5 and JBoss'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-114081276451121005</id><published>2006-02-24T12:26:00.000-08:00</published><updated>2006-02-24T12:28:50.106-08:00</updated><title type='text'>MacBook Pro vs Dell Pentium M w/ Ubuntu Linux</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;Matt Raible &lt;a href="http://raibledesigns.com/page/rd?anchor=macbook_pro_kicking_ass_and"&gt;documents his experience&lt;/a&gt; with unwrapping his new Duo Core MacBook Pro.&lt;br /&gt;&lt;br /&gt;For grins, I decided to compare his performance measurements with my 10-month old Dell Inspiron 9300 laptop. Obviously this test is far from scientific. Anyway, here are my specs:&lt;br /&gt;&lt;br /&gt;Dell Inspiron 9300&lt;br /&gt;Intel Pentium M @ 2Ghz&lt;br /&gt;2Gb RAM&lt;br /&gt;60gb 7200 RPM HDD&lt;br /&gt;Ubuntu Linux 5.10 w/ Kernel 2.6.12-10-686&lt;br /&gt;&lt;br /&gt;This laptop cost less than $3K in April 2005. Here is the precise cpuinfo specs:&lt;br /&gt;vendor_id : GenuineIntel&lt;br /&gt;cpu family : 6&lt;br /&gt;model : 13&lt;br /&gt;model name : Intel(R) Pentium(R) M processor 2.00GHz&lt;br /&gt;stepping : 8&lt;br /&gt;&lt;br /&gt;And here are my results. Note: I ran each test 4 times.&lt;br /&gt;&lt;br /&gt;ant clean package-web&lt;br /&gt;16 seconds&lt;br /&gt;14 seconds&lt;br /&gt;13 seconds&lt;br /&gt;13 seconds&lt;br /&gt;&lt;br /&gt;ant setup test-all&lt;br /&gt;1 minute 25 seconds&lt;br /&gt;1 minute 21 seconds&lt;br /&gt;1 minute 23 seconds&lt;br /&gt;1 minute 23 seconds&lt;br /&gt;&lt;br /&gt;His results on the new MacBook Pro were 12 seconds for the first test and 1 minute 28 seconds for the second test.&lt;br /&gt;&lt;br /&gt;Conclusion? Its all about the file-system and cacheing. Running OS X or Linux greater improves file IO, 2 Gb RAM allows the OS to aggressively cache disk access and a 7200 RPM HDD offers substantial performance improvements when it does have to hit the disk.&lt;br /&gt;&lt;br /&gt;In my opinion CPU and clock speed matters the least.&lt;br /&gt;&lt;br /&gt;Here is how I reproduced his tests:&lt;br /&gt;Prerequsite:&lt;br /&gt;* Mysql installed and running;&lt;br /&gt;* CATALINA_HOME environment variable pointing to Tomcat 5.5 installation&lt;br /&gt;&lt;br /&gt;cvs -d :pserver:guest@cvs.dev.java.net:/cvs login&lt;br /&gt;cvs -d :pserver:guest@cvs.dev.java.net:/cvs checkout appfuse&lt;br /&gt;cd appfuse&lt;br /&gt;ant clean package-web&lt;br /&gt;ant clean package-web&lt;br /&gt;ant clean package-web&lt;br /&gt;ant clean package-web&lt;br /&gt;ant setup test-all&lt;br /&gt;ant setup test-all&lt;br /&gt;ant setup test-all&lt;br /&gt;ant setup test-all&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/performance" rel="tag"&gt;&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/12346179-114081276451121005?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/114081276451121005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=114081276451121005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/114081276451121005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/114081276451121005'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/02/macbook-pro-vs-dell-pentium-m-w-ubuntu.html' title='MacBook Pro vs Dell Pentium M w/ Ubuntu Linux'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-113951518349266957</id><published>2006-02-09T11:48:00.000-08:00</published><updated>2006-02-09T11:59:44.196-08:00</updated><title type='text'>Maven2 and xdoclet and antrun</title><content type='html'>I found it very difficult to get the maven2 xdoclet plugin to generate my struts config xml file.&lt;br /&gt;&lt;br /&gt;I first tried this&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;xdoclet-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-alpha-2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;  &amp;lt;execution&amp;gt;&lt;br /&gt;    &amp;lt;configuration&amp;gt;&lt;br /&gt;      &amp;lt;tasks&amp;gt;&lt;br /&gt;        &amp;lt;webdoclet destdir="target/generated-sources/xdoclet" mergedir="src/main/xdoclet" verbose="true"&amp;gt;&lt;br /&gt;          &amp;lt;fileset dir="src/main/java"/&amp;gt;&lt;br /&gt;          &amp;lt;strutsconfigxml validatexml="true" version="1.1" destinationFile="struts-config.xml" /&amp;gt;&lt;br /&gt;        &amp;lt;/webdoclet&amp;gt;&lt;br /&gt;      &amp;lt;/tasks&amp;gt;&lt;br /&gt;    &amp;lt;/configuration&amp;gt;&lt;br /&gt;    &amp;lt;phase&amp;gt;generate-sources&amp;lt;/phase&amp;gt;&lt;br /&gt;    &amp;lt;goals&amp;gt;&lt;br /&gt;      &amp;lt;goal&amp;gt;xdoclet&amp;lt;/goal&amp;gt;&lt;br /&gt;    &amp;lt;/goals&amp;gt;&lt;br /&gt;  &amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;which procedded to generate an empty struts-config.xml (well, it merged in my merge files but I had no actions or forms).  It turns out that since my Forms and Actions inherit from a sub-class defined elsewhere, that class must be available in the classpath of the plugin.  Unfortunately, there does not seem to be a way to modify a plugin's classpath.&lt;br /&gt;&lt;br /&gt;I tried adding dependencies to the plugin, but none of that worked.&lt;br /&gt;&lt;br /&gt;I tried the xdoclet2 maven2 plugin;  it produced garbage struts-config.xml files; it seems to screw up the merge files.&lt;br /&gt;&lt;br /&gt;I finally settled on using the antrun plugin to use the ant tasks.  This allowed me to modify the webdoclet's classpath:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;plugin&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;maven-antrun-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;  &amp;lt;tasks&amp;gt;&lt;br /&gt;    &amp;lt;taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask" classpathref="maven.compile.classpath" /&amp;gt;&lt;br /&gt;    &amp;lt;webdoclet destdir="${project.build.directory}/generated-sources/xdoclet" mergedir="src/main/xdoclet" verbose="true"&amp;gt;&lt;br /&gt;      &amp;lt;fileset dir="src/main/java" /&amp;gt;&lt;br /&gt;      &amp;lt;strutsconfigxml validatexml="true" version="1.1" destinationFile="struts-config.xml" /&amp;gt;&lt;br /&gt;    &amp;lt;/webdoclet&amp;gt;&lt;br /&gt;  &amp;lt;/tasks&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&amp;lt;executions&amp;gt;&lt;br /&gt;  &amp;lt;execution&amp;gt;&lt;br /&gt;    &amp;lt;phase&amp;gt;generate-sources&amp;lt;/phase&amp;gt;&lt;br /&gt;    &amp;lt;goals&amp;gt;&lt;br /&gt;      &amp;lt;goal&amp;gt;run&amp;lt;/goal&amp;gt;&lt;br /&gt;    &amp;lt;/goals&amp;gt;&lt;br /&gt;  &amp;lt;/execution&amp;gt;&lt;br /&gt;&amp;lt;/executions&amp;gt;&lt;br /&gt;&amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What do you know, it worked!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-113951518349266957?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/113951518349266957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=113951518349266957' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113951518349266957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113951518349266957'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/02/maven2-and-xdoclet-and-antrun.html' title='Maven2 and xdoclet and antrun'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-113928118417383237</id><published>2006-02-07T14:11:00.000-08:00</published><updated>2006-02-07T14:16:29.826-08:00</updated><title type='text'>Struts Menu - Velocity Rendering</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;a href="http://struts-menu.sourceforge.net/"&gt;Struts Menu Tag Library - Overview&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I recently started using Struts-menu to replace a home-grown menu system. It works well, although there were a couple of small speedbumps along the way, mostly with the Velocity rendering:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Velocity rendered didn't invoke my custom permissions adapter for all menu items; it only checked one level deep.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Velocity renderer modifies the application-scoped menu definition when checking permissions; thus if permissions are on a per-user (i.e. per-session) basis, each user trashes the other users' menus.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I also found that I couldn't really define a menu that was a Struts action in another module; the menu always appended the current module to the generated link.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;To solve (1) I modified the VelocityMenuDisplayer to recurse into all levels.  I submitted a JIRA issue with a patch: &lt;a href="http://issues.appfuse.org/browse/SM-2"&gt;http://issues.appfuse.org/browse/SM-2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To solve (2) I defined a Session-listener (very similar to MenuContextListener) that loaded the menu definition into session scope.  The taglib is already coded to find the menu definition at the lowest scope, so it picked it up from there.&lt;br /&gt;&lt;br /&gt;To solve (3) I added a "module" attribute to the menu and modified the taglib to compute the URL with the module (if any).  I submitted a JIRA issue with a patch: &lt;a href="http://issues.appfuse.org/browse/SM-1"&gt;http://issues.appfuse.org/browse/SM-1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is my session-scoped listener.  There is a lot of duplication with the MenuContextListener class.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import javax.servlet.http.HttpSessionEvent;&lt;br /&gt;import javax.servlet.http.HttpSessionListener;&lt;br /&gt;import net.sf.navigator.menu.MenuRepository;&lt;br /&gt;import net.sf.navigator.util.LoadableResourceException;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Session listener for loading Struts-menu into session.&lt;br /&gt;* &amp;lt;p&amp;gt;&lt;br /&gt;* This is necessary since the Velocity displayer trashes the menu based on permissions.&lt;br /&gt;* Thus we can't store it in application scope.&lt;br /&gt;* &amp;lt;/p&amp;gt;&lt;br /&gt;* @author Tim Morrow&lt;br /&gt;* @since Feb 6, 2006&lt;br /&gt;*/&lt;br /&gt;public class MenuSessionContextListener implements HttpSessionListener {&lt;br /&gt;&lt;br /&gt;private static final Log log = LogFactory.getLog(MenuSessionContextListener.class);&lt;br /&gt;&lt;br /&gt;private static final String DEFAULT_MENU_CONFIG_LOCATION = "/WEB-INF/menu-config.xml";&lt;br /&gt;&lt;br /&gt;public void sessionCreated(HttpSessionEvent event) {&lt;br /&gt;&lt;br /&gt; if (log.isDebugEnabled()) {&lt;br /&gt;     log.debug("Starting struts-menu initialization");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; String menuConfig = DEFAULT_MENU_CONFIG_LOCATION;&lt;br /&gt;&lt;br /&gt; // check for menuConfigLocation context-param&lt;br /&gt; String override = event.getSession().getServletContext().getInitParameter("menuConfigLocation");&lt;br /&gt; if (override != null) {&lt;br /&gt;     if (log.isDebugEnabled()) {&lt;br /&gt;         log.debug("using menuConfigLocation: " + override);&lt;br /&gt;     }&lt;br /&gt;     menuConfig = override;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; MenuRepository repository = new MenuRepository();&lt;br /&gt; repository.setLoadParam(menuConfig);&lt;br /&gt; repository.setServletContext(event.getSession().getServletContext());&lt;br /&gt;&lt;br /&gt; try {&lt;br /&gt;     repository.load();&lt;br /&gt;     event.getSession().setAttribute(MenuRepository.MENU_REPOSITORY_KEY, repository);&lt;br /&gt;&lt;br /&gt;     log.info("struts-menu successfully loaded into session scope from " + menuConfig);&lt;br /&gt;&lt;br /&gt; } catch (LoadableResourceException lre) {&lt;br /&gt;     log.fatal("Failure initializing struts-menu: " + lre.getMessage());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void sessionDestroyed(HttpSessionEvent event) {&lt;br /&gt; event.getSession().removeAttribute(MenuRepository.MENU_REPOSITORY_KEY);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Usage is the same as the servlet context MenuContextListener:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;    &amp;lt;listener-class&amp;gt;MenuSessionContextListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;lt;/listener&amp;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/12346179-113928118417383237?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/113928118417383237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=113928118417383237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113928118417383237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113928118417383237'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2006/02/struts-menu-velocity-rendering.html' title='Struts Menu - Velocity Rendering'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-113535635549648499</id><published>2005-12-23T08:37:00.000-08:00</published><updated>2005-12-23T08:46:59.136-08:00</updated><title type='text'>Hibernate assertion failure</title><content type='html'>Q: So what is the likely cause of the following Hibernate exception:&lt;br /&gt;&lt;br /&gt;[AssertionFailure] (JMS SessionPool Worker-2:)  an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)  org.hibernate.AssertionFailure: null id in entry (don't flush the Session after an exception occurs)&lt;br /&gt;&lt;br /&gt;A: After much scratching of heads it turns out it was as simple as a mandatory field not filled in on an object being saved.&lt;br /&gt;&lt;br /&gt;So why did we get that message?  I've no idea.  Maybe its due to one or more of these factors:&lt;br /&gt;* We're using MS SQL and the table had an identity column&lt;br /&gt;* We're using Spring's TransactionSynchronizationManager to manage the transaction&lt;br /&gt;* There is some logical explanation based on a thorough understanding of hibernate's internal mechanisms as to why this particular error means a missing mandatory field.  I looked at the source code, but couldn't figure it out.&lt;br /&gt;&lt;br /&gt;Its likely that the original error got buried somewhere and this one was a side-effect.  However we couldn't see anything in our logs.&lt;br /&gt;&lt;br /&gt;Well, now we know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-113535635549648499?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/113535635549648499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=113535635549648499' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113535635549648499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113535635549648499'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/12/hibernate-assertion-failure.html' title='Hibernate assertion failure'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-113087905284244138</id><published>2005-11-01T15:42:00.000-08:00</published><updated>2006-02-12T12:19:31.863-08:00</updated><title type='text'>Struts w/ Ajax and submitting editable dynamic content</title><content type='html'>I wanted to dynamically render a portion of a page using AJAX.  I started by reading &lt;a href="http://today.java.net/pub/a/today/2005/10/27/sprinkle-ajax-magic-into-struts-webapp.html"&gt;Sprinkle Some AJAX Magic in Your Struts Web Application&lt;/a&gt; by Paul Browne, but felt this fell short for a number of reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;I wanted to minimize the amount of Javascript I had to maintain for perform the round-trips&lt;/li&gt;&lt;br /&gt; &lt;li&gt;I wanted to use Struts actions and JSP to render the dynamic content&lt;/li&gt;&lt;br /&gt; &lt;li&gt;My dynamic content contains input elements which must be submittable and maintained across submits&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;I took a quick look at the prototype.js and decided to use it for performing the asynchronous stuff. It doesn't seem to have much documentation, but browsing the Javascript source helped. I found &lt;a href="http://www.sergiopereira.com/articles/prototype.js.html"&gt;Using prototype.js v1.3.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Modifying the main JSP page to dynamically include some content was easy.  I had a select list which, when a new value was selected, would asynchronously load some data then present it in a table using displaytags.   The values would be editable.  Here is what it looked like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;html:select property="configureApplicationId" styleid="configureApplicationId"&amp;gt;&lt;br /&gt;    &amp;lt;html:optionscollection property="configureApplicationOptions"&amp;gt;&lt;br /&gt;&amp;lt;/html:select&amp;gt;&lt;br /&gt;&amp;lt;html:errors property="configureApplicationId"&amp;gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;div id="configurationSettingsId"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;    new Form.Element.EventObserver(&lt;br /&gt;        'configureApplicationId',&lt;br /&gt;        function(element, value) {&lt;br /&gt;            new Ajax.Updater(&lt;br /&gt;                'configurationSettingsId',&lt;br /&gt;                'myAction.do',&lt;br /&gt;                {parameters: Form.Element.serialize(element)}&lt;br /&gt;            )&lt;br /&gt;        }&lt;br /&gt;    );&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This sets up an event listener on the change to the configureApplicationId which invokes an asynchronous HTTP post to myAction.do with the parameter configureApplicationId=value.  On return, it replaces the content of the configurationSettingsId element with the result of the invocation.  &lt;br /&gt;The action is a regular Struts action which populates a form with the given parameter. The action forwards to a plain JSP page which renders the form content.  Since the JSP page doesn't contain an &amp;lt;html:form&amp;gt; Struts tag, you have to add the name="formname" attribute to each &amp;lt;html:...&amp;gt; input element as so:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;html:hidden name="configureForm" property="configSettingsSerialized" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now when we submit the form after dynamically rendering a portion, the dynamic portion will disappear unless we take steps to re-render it.   We could use some more javascript to do another asynchronous round-trip, but that usually has a noticable visual delay.   I chose to render the dynamic portion in-line. &lt;br /&gt;To do this we need to make available the same Struts ActionForm that is normally instantiated during the asynchronous round-trip and include the JSP page that is normally forwarded to during the asynchronous round-trip.&lt;br /&gt;&lt;br /&gt;To do this, I added a method to the main page form which returned the ActionForm needed for the rendered portion and did a JSP include:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div id="configurationSettingsId"&amp;gt;&lt;br /&gt;    &amp;lt;c:set scope="request" var="configureForm" value="${mainForm.configureForm}" /&amp;gt;&lt;br /&gt;    &amp;lt;jsp:include page="/path/to/jsp/myPage.jsp" /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;&lt;br /&gt;Of course, for this to work, the main form must be able to populate the sub-form's values such that they can be rendered by the included JSP.   That is simply a case of adding the appropriate setters to the main form, or including the same ability to setup the data as the other Action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-113087905284244138?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/113087905284244138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=113087905284244138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113087905284244138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113087905284244138'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/11/struts-w-ajax-and-submitting-editable.html' title='Struts w/ Ajax and submitting editable dynamic content'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-113051515077354371</id><published>2005-10-28T11:22:00.000-07:00</published><updated>2005-10-28T11:24:14.370-07:00</updated><title type='text'>Issues Upgrading from Middlegen hibernate 2 tools to hibernate 3 tools</title><content type='html'>&lt;span style=";font-family:verdana;font-size:130%;"  &gt;Reason for move&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The hibernate tools shipped with Middlegen 2.1 generates equals/hashcode based on the ID of the object. This is a well-known issue that makes it impossible to add multiple new objects in a Set. I haven't had this problem up to now.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I tried adding all of the following to the &lt;hibernate&gt; ant task:&lt;/hibernate&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;   &lt;li&gt;equalsHashcode="true"&lt;/li&gt;   &lt;li&gt;columnsIncEquals="true"&lt;/li&gt;   &lt;li&gt;columnsIncToString="true"&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-family:verdana;"&gt;It seems to generate toString() correctly, but equals() and hashcode() still do not contain all fields. The hbm files do seem to contain the correct meta-data though.&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span style="font-weight: bold;"&gt;update&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;update&gt;&lt;/update&gt;&lt;/span&gt; It appears the version of hibernate-tools.jar that I'm using was old. I downloaded hibernate-extensions-2.1.3 and used the hibernate-tools.jar from that. It seemed to solve the equals-hashcode issue. The remainder of this post servers as a reminder of what I need to do to upgrade to hibernate 3 tools...&lt;br /&gt;&amp;lt;/&lt;span style="font-weight: bold;"&gt;update&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I figured I'd try to move to hibernate 3 tools.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:130%;"  &gt;Finding Hibernate 3 tools&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I went to the &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.hibernate.org/255.html"&gt;Hibernate Tools&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; page and clicked Download. The version listed there is for Hibernate 3.1. (I tried it with hibernate 3, but it doesn't work; a particular class is missing a method). I'm not prepared to upgrade to Hibernate 3.1 yet as it is not officially released.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I tried the &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://prdownloads.sourceforge.net/hibernate/?sort_by=date&amp;sort=desc"&gt;All Downloads&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; for Hibernate page.  It seems the latest Hibernate 3.0.x based tools is &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://prdownloads.sourceforge.net/hibernate/hibernate-tools-3.0.0.alpha4a.zip"&gt;hibernate-tools-3.0.0.alpha4a.zip&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;.  It looks like the they're only going to release hibernate tools on 3.1 so the alpha4a is the last one for hibernate 3.0.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I had to switch out the &lt;hbm2java&gt; task with a &lt;hibernatetools&gt; task as documented on the &lt;/hibernatetools&gt;&lt;/hbm2java&gt;&lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.hibernate.org/hib_docs/tools/ant/index.html"&gt;Hibernate Ant Tools&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; documentation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:130%;"  &gt;Problems Encountered&lt;/span&gt;&lt;br /&gt;&lt;ol  style="font-family:verdana;"&gt;   &lt;li&gt;Classes no longer have full constructors. This mainly caused problems in unit tests; I often populate composite keys using the constructor. All this code nee&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;ds fixed.&lt;/li&gt;   &lt;li&gt;boolean types in the hbm file seem to get mapped to Boolean objects instead of primitives. This probably makes sense, but it is code that needs fixed and tested. The getter signatures have changed from &lt;span style="font-style: italic;"&gt;boolean isSomething()&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;Boolean getSomething()&lt;/span&gt;.&lt;/li&gt; &lt;/ol&gt;&lt;span style="font-family:verdana;"&gt;OK.  So the constructor issue is mentioned on the &lt;a href="http://forum.hibernate.org/viewtopic.php?t=945809"&gt;Hibernate Forums&lt;/a&gt;. It looks like there are bugs in toString and equals/hashcode that have only recently been committed to CVS and probably only available in the Hibernate 3.1-based tools. Hmm... I think I'll forget about the Hibernate 3.0.x-based tools for now.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-113051515077354371?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/113051515077354371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=113051515077354371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113051515077354371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/113051515077354371'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/10/issues-upgrading-from-middlegen.html' title='Issues Upgrading from Middlegen hibernate 2 tools to hibernate 3 tools'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111446747572012503</id><published>2005-04-25T14:54:00.000-07:00</published><updated>2005-10-28T09:41:27.616-07:00</updated><title type='text'>Installing TIBCO on Ubuntu</title><content type='html'>&lt;span style="font-family: verdana;"&gt;Needed to install TIBCO EMS on Ubuntu (Hoary Hedgehog). However, running the installer (Installshield) failed with an error about libstdc++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The problem appears to be with Installshield wizard requiring an old version of libstdc++.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;I followed the steps in the post &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.houseoffusion.com/cf_lists/messages.cfm/threadid:204/forumid:14"&gt;Debian hath been defeated&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; and it installed successfully&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111446747572012503?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111446747572012503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111446747572012503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111446747572012503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111446747572012503'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/installing-tibco-on-ubuntu.html' title='Installing TIBCO on Ubuntu'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111429750000588297</id><published>2005-04-23T16:01:00.000-07:00</published><updated>2005-04-23T16:05:00.006-07:00</updated><title type='text'>Ubuntu Laptop - Playing DVDs</title><content type='html'>I stuck in the original Matrix DVD.&lt;br /&gt;Totem DVD player started up and promptly hung.&lt;br /&gt;I killed it, restarted it, tried to play disc again.  It hung.&lt;br /&gt;&lt;br /&gt;Used Synaptics package manager to install totem based on xine (it appears default totem is based on gstreamer).&lt;br /&gt;&lt;br /&gt;Fired up Totem, went to play DVD, it told me it was copy protected and was I trying to play a protected disc without libdvdcss?&lt;br /&gt;&lt;br /&gt;Couldn't find libdvdcss on Synaptics package manager.&lt;br /&gt;Googled for libdvdcss, installed it.&lt;br /&gt;Fired up totem again.&lt;br /&gt;Played disc.  It worked!&lt;br /&gt;&lt;br /&gt;DVD title menu works&lt;br /&gt;Plays full screen, audio works.&lt;br /&gt;&lt;br /&gt;Success.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111429750000588297?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111429750000588297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111429750000588297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111429750000588297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111429750000588297'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/ubuntu-laptop-playing-dvds.html' title='Ubuntu Laptop - Playing DVDs'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111417981526979736</id><published>2005-04-22T06:58:00.000-07:00</published><updated>2005-04-22T07:23:35.270-07:00</updated><title type='text'>Installing Cisco 3000 VPN Client</title><content type='html'>A. Download VPN client software for Linux&lt;br /&gt;  1. Download it&lt;br /&gt;  2. Unzip it to a temp directory&lt;br /&gt;&lt;br /&gt;B. Get required Linux headers and gcc&lt;br /&gt;&lt;br /&gt;1. Determine Kernel Version&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;uname -r&lt;br /&gt;2.6.10-5-386&lt;br /&gt;&lt;/blockquote&gt;2. Select System --&gt; Administration --&gt; Synaptic Package Manager&lt;br /&gt;3. Select Development from tree&lt;br /&gt;4. Find linux-headers-2.6.10-5-386  (it _MUST_ match the kernel version)&lt;br /&gt;5. Check it, OK any dialog boxes&lt;br /&gt;6. Find gcc, check it, OK any dialog boxes&lt;br /&gt;7. Click Apply, confirm dialog box&lt;br /&gt;8. Close package manager&lt;br /&gt;&lt;br /&gt;C. Compile VPN client&lt;br /&gt;&lt;br /&gt;1. Open a console window and change directory to the unzipped VPN client&lt;br /&gt;2. Run the install script as super user&lt;br /&gt;&lt;blockquote&gt;  sudo ./vpn_install&lt;br /&gt;&lt;/blockquote&gt;3. Accept the defaults.  It should automatically detect the Linux headers you downloaded.  They are linked from a number of places, including&lt;br /&gt;&lt;blockquote&gt;  /lib/modules/2.6.10-5-386/build&lt;br /&gt;&lt;/blockquote&gt;4. It will compile successfully&lt;br /&gt;5. Change directory to where the VPN client tarball extracted the bundled profiles (*.pcf files), if any&lt;br /&gt;6. Copy those files to&lt;br /&gt;&lt;blockquote&gt;  /etc/CiscoSystemsVPNClient/Profiles/&lt;br /&gt;&lt;/blockquote&gt;D. Start VPN client&lt;br /&gt;&lt;br /&gt;1. The VPN client will start when the system boots.  However, start it manually for now by executing:&lt;br /&gt;&lt;blockquote&gt;sudo /etc/init.d/vpnclient_init start&lt;br /&gt;&lt;/blockquote&gt;2. Run the client with&lt;br /&gt;&lt;blockquote&gt;vpnclient connect &lt;profilename&gt;&lt;br /&gt;&lt;/blockquote&gt;where &lt;profilename&gt; is one of the profiles, without the .pcf extension&lt;br /&gt;&lt;br /&gt;3. Enter your username (username part only, not your full email address)&lt;br /&gt;4. Enter your SecurID password+token&lt;br /&gt;&lt;br /&gt;It will connect.  That console window will remain busy.  You can put the job in the background.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111417981526979736?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111417981526979736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111417981526979736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111417981526979736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111417981526979736'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/installing-cisco-3000-vpn-client.html' title='Installing Cisco 3000 VPN Client'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111417810738026831</id><published>2005-04-22T06:52:00.000-07:00</published><updated>2005-04-22T06:55:07.380-07:00</updated><title type='text'>Ubuntu Laptop Install - Part 3</title><content type='html'>&lt;span style="font-style: italic;"&gt;Unhibernate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Powered up the computer.&lt;br /&gt;Prompted me to login.&lt;br /&gt;It restored the windows I had open previously.  Nice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Summary&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;* Sound works&lt;br /&gt;* Screen works at max resolution (still need to see up upgrading driver)&lt;br /&gt;* Hibernate works&lt;br /&gt;* Wired and wireless networking works&lt;br /&gt;&lt;br /&gt;Seems pretty successful so far&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111417810738026831?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111417810738026831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111417810738026831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111417810738026831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111417810738026831'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/ubuntu-laptop-install-part-3.html' title='Ubuntu Laptop Install - Part 3'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111414238889815093</id><published>2005-04-21T20:34:00.000-07:00</published><updated>2005-04-22T06:44:40.903-07:00</updated><title type='text'>Ubuntu Laptop Install - Part 2</title><content type='html'>&lt;span style="font-style: italic;"&gt;Continuing the Installation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I selected my time zone&lt;br /&gt;I specified the user account&lt;br /&gt;Ubuntu finished telling me the first stage of installation is complete&lt;br /&gt;It ejected my CD and continued to reboot the computer&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Booting&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Watched all the messages scroll by on the boot.  Everything said [ok].  Seems promising.&lt;br /&gt;It then appeared to unpack a bunch of Debian packages Scrolls by too fast to read. This seems to be the slowest part of the installation by far. The hard drive is (quietly) working hard.&lt;br /&gt;&lt;br /&gt;It appears to be done. I now have an Ubuntu logo taking up most of the screen and its prompting for my username. The screen resolution seems good. A good sign.&lt;br /&gt;&lt;br /&gt;I logged in.  Some kind of tree-hugging waterfall, birds and windchimes sound plays.  At least the sound card works.&lt;br /&gt;&lt;br /&gt;I went to System --&gt; Preferences --&gt; Screen resolution.  Sure enough, 1920x1200.  Nice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Configuring Wireless&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I pulled out my network cable.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;I went to System --&gt; Administration --&gt; Networking&lt;br /&gt;If I understand it correctly in order to configure multiple wireless networks (or perhaps multiple networks altogether), I need to assign each to a different location.&lt;br /&gt;I selected the Location dropdown and choose Create New and called it "Home"&lt;br /&gt;I clicked on Wireless Connection and clicked Properties&lt;br /&gt;I checked on This device is configured&lt;br /&gt;It detected my wireless network, so I selected its ESSID from the dropdown&lt;br /&gt;I entered the wep key.  I keep it on a USB stick which, when I plugged into the laptop, popped up on the desktop.&lt;br /&gt;Selected DHCP and hit OK&lt;br /&gt;The Wireless Connection was still selected so I clicked Activate; it popped up a dialog box telling me it's Activating interface "eth1". It took a minute or too before disappearing.&lt;br /&gt;I switched the Default gateway device as eth1. I think this is what tells it which one to use in this profile.&lt;br /&gt;Clicked OK to get rid of the Network settings dialog, although it doesn't seem to be going away. There is a spinning cursor when I hover the mouse over it, but the rest of the system seems fine. Hmm, still there after a few minutes.&lt;br /&gt;&lt;br /&gt;I pulled up Firefox and went to google.com.  It didn't work.&lt;br /&gt;I clicked on the little network icon on the top-right of the screen and typed into the dropdown "eth1".  It switched to that.&lt;br /&gt;Firefox works now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Standby?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I closed the lid.  Opened it up.  I was left with a console login prompt.&lt;br /&gt;I pressed a few random function keys.&lt;br /&gt;The computer powered off.&lt;br /&gt;Powered it back on.  Not sure what happened.&lt;br /&gt;Its trying to boot.  It came back up with a fresh login.  It really did power off.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hibernate?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I went to System --&gt; Logout and selected hibernate.&lt;br /&gt;It seemed to hibernate.  Powered down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111414238889815093?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111414238889815093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111414238889815093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111414238889815093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111414238889815093'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/ubuntu-laptop-install-part-2.html' title='Ubuntu Laptop Install - Part 2'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12346179.post-111413865007371857</id><published>2005-04-21T19:45:00.000-07:00</published><updated>2005-04-21T20:33:44.856-07:00</updated><title type='text'>Ubuntu Laptop Install</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Notes on installing Ubuntu Linux (Hoary HedgeHog)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is what I'm installing on:&lt;br /&gt;&lt;blockquote&gt;Dell Inspiron 9300&lt;br /&gt;2Gb DDR2 533Mhz&lt;br /&gt;2.0Ghz Pentium M&lt;br /&gt;17" WUXGA (1920x1200)&lt;br /&gt;60Gb 7200rpm HDD&lt;br /&gt;256Mb Nvidia Go 6800&lt;br /&gt;Ethernet and b/g wireless&lt;br /&gt;Bluetooth&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Getting started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* I download and burned Ubuntu Install CD&lt;br /&gt;* Restarted computer hitting F12 to open boot menu and select boot from CDROM&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation Process&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Answered various questions about Location, Language Keyboard&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Configure the network&lt;/span&gt;&lt;br /&gt;It found two network cards: eth0 (the 10/100 card) and eth1 (the wireless card) and wants me to pick which one to use while installing Ubuntu. Since I'm not plugged in, selecting Wireless (I have the WEP key)&lt;br /&gt;&lt;br /&gt;It failed to find my access point, so I entered the SSID&lt;br /&gt;I entered the WEP key&lt;br /&gt;It tried to configure with DHCP, but failed.  Hmm.. may have to plug in&lt;br /&gt;I plugged into the network, hit Go Back and picked eth0; OK, that worked&lt;br /&gt;I entered the hostname&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Partion disks&lt;/span&gt;&lt;br /&gt;I've been trying to decide whether to install a dual boot system or a Linux only system.&lt;br /&gt;Since this is a brand new laptop, and I've not spent any time tweaking windows, I figured I'd blow away Windows and partition the whole thing for Linux.&lt;br /&gt;&lt;br /&gt;For good measure I screwed around with resizing the existing Windows partition. I halved the size. The installer told me it shrunk, but I didn't try rebooting to see if it still worked.&lt;br /&gt;&lt;br /&gt;I went back to guided partitioning and selected Erase entire disk&lt;br /&gt;Since this is a personal machine, single user, I accepted the default of a 57Gb / ext3 partition and a 2.5Gb swap partition. I'm sure there is a superior filesystem to ext3 that I should be using, but I don't feel like researching it.&lt;br /&gt;&lt;br /&gt;There also seem to be options for installing the Logical Volume Manager, but I'm thinking I don't need that.&lt;br /&gt;&lt;br /&gt;I committed the partition and Ubuntu continued with the installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12346179-111413865007371857?l=autoedification.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://autoedification.blogspot.com/feeds/111413865007371857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12346179&amp;postID=111413865007371857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111413865007371857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12346179/posts/default/111413865007371857'/><link rel='alternate' type='text/html' href='http://autoedification.blogspot.com/2005/04/ubuntu-laptop-install.html' title='Ubuntu Laptop Install'/><author><name>Tim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
