<?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-4146319932577841896</id><updated>2011-07-20T03:12:47.240-07:00</updated><category term='audio'/><title type='text'>Elvis and the coffee thing</title><subtitle type='html'>My weblog on Java software development. And all the other stuff.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-3400830723706134168</id><published>2008-10-17T02:14:00.000-07:00</published><updated>2008-10-17T02:23:29.217-07:00</updated><title type='text'>Wann kommt die nächste Bahn?</title><content type='html'>Mit einem kleinen Stückchen Javascript kann man dem Firefox die Verarbeitung von mehreren Argumenten bei der Keyword Search beibringen.&lt;br /&gt;&lt;br /&gt;Die Bahn bietet ja jetzt so schreckliche personalisierte Services an, bei denen man seine häufigsten Fahrplansuchen hinterlegen kann. Das ganze wird als Cookie gespeichert. Da jeder, der ein wenig Wert auf Privatspäre im Netz legt, diese klugerweise nach Schliessen des Browsers wegwirft, sind auch diese Einstellungen weg.&lt;br /&gt;Zumal man sich zum Fahrkartenkauf sowieso noch geschätzte 72mal einloggen muss.&lt;br /&gt;Auf jeden Fall nicht benutzbar. Aber: Muss man ja auch nicht :)&lt;br /&gt;&lt;br /&gt;In einem seltenen Moment der Erkenntnis, hat die Bahn ein geiles Feature in die Suche eingebaut: Man kann statt der vollen Ortsnamen auch deren KFZ-Kennzeichen eingeben.&lt;br /&gt;HH=Hamburg. Mit dem u.g. Skript kann man dann im Browser einfach "bahn m hh" eingeben und bekommt direkt die nächste Verbindung von München nach Hamburg angezeigt.&lt;br /&gt;Geht doch!&lt;br /&gt;&lt;br /&gt;javascript:var%C2%A0s='%s';%20url='http://reiseauskunft.bahn.de/bin/query.exe/dn?datesel=custom&amp;amp;start=1&amp;amp;returnTimesel=depart&amp;amp;S=%s&amp;amp;Z=%s&amp;amp;timesel=depart&amp;amp;REQ0Tariff_TravellerType.1=E&amp;amp;REQ0Tariff_TravellerReductionClass.1=0&amp;amp;REQ0Tariff_Class=2';%20t='';%20qc=0;%20chunks=url.split('%s');%20for(i=0;%20i&amp;lt;s.length;%20i++){if(s.charAt(i)=='"')qc=qc^1;%20t+=((s.charAt(i)=='%20'&amp;amp;&amp;amp;qc)?'^':s.charAt(i));%20}args=t.split(/\s/);%20nurl='';%20for(i=0;%20i&amp;lt;chunks.length;%20i++){nurl+=chunks[i];%20if(args[i]!=undefined)%C2%A0{args[i]=args[i].replace(/\^/g,'%20');%20nurl+=args[i];%20}}location.replace(nurl,'&amp;lt;%20BR&amp;gt;');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-3400830723706134168?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/3400830723706134168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=3400830723706134168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3400830723706134168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3400830723706134168'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/10/wann-kommt-die-nchste-bahn.html' title='Wann kommt die nächste Bahn?'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-2974009881000892884</id><published>2008-09-18T06:27:00.000-07:00</published><updated>2008-09-18T06:31:47.712-07:00</updated><title type='text'>Yet to be seen...</title><content type='html'>... is a presentation on spring that does &lt;span style="font-weight:bold;"&gt;not&lt;/span&gt; contain the phrase "de-facto standard".&lt;br /&gt;&lt;br /&gt;wow. that short, it could be on twitter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-2974009881000892884?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/2974009881000892884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=2974009881000892884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/2974009881000892884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/2974009881000892884'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/09/yet-to-be-seen.html' title='Yet to be seen...'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-8621933980250604160</id><published>2008-08-22T01:10:00.000-07:00</published><updated>2008-08-22T02:12:29.054-07:00</updated><title type='text'>Continuum 1.1 on Tomcat 6  with GMail notification</title><content type='html'>I "just" wanted to use my gmail account to send build errors to my real account until the integration server is in the right network that i can configure right the mailserver. Making this work took a bit longer. As you can see in the previous post, I skipped mailserver config in archiva. This time, I had to do it. First, you need activation-1.1.jar and mail.jar in your tomcat lib directory. ("folder" is windows-speak, isn't it?)&lt;br /&gt;&lt;br /&gt;The jndi mail config in &lt;code&gt;context.xml&lt;/code&gt; looks like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Resource&amp;nbsp;name="mail/Session"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type="javax.mail.Session"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.transport.protocol="smtp"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.host="smtp.gmail.com"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.auth="true"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.port="465"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.socketFactory.port="465"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.user="something@gmail.com"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;password="makemyday"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail.smtp.starttls.enable="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Note the user is "mail.smtp.user" but the password is just "password". (For more on this, check &lt;a href="http://forums.sun.com/thread.jspa?threadID=615393&amp;amp;messageID=3422166"&gt;here &lt;/a&gt;and &lt;a href="http://java.sun.com/products/javamail/FAQ.html#gmail"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Great. But that's not all. There's a &lt;a href="http://jira.codehaus.org/browse/CONTINUUM-1674"&gt;bug&lt;/a&gt; in the mailing system causing the password&lt;br /&gt;not to be set right. Or something. With the patch provided, you'll have to recreate some jars.&lt;br /&gt;&lt;br /&gt;Get the source:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;svn co http://svn.codehaus.org/plexus/tags/plexus-mail-sender-1.0-alpha-7&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;find &lt;code&gt;JndiJavamailMailSender.java&lt;/code&gt; and change the return line to &lt;code&gt;return s;&lt;/code&gt; according to the &lt;a href="http://jira.codehaus.org/secure/attachment/34412/plex-javamail.patch"&gt;patch&lt;/a&gt; (or just use the patch).&lt;br /&gt;Run &lt;code&gt;mvn package&lt;/code&gt; and copy the resulting jar files &lt;code&gt;plexus-mail-sender-javamail-1.0-alpha-7.jar&lt;/code&gt; and &lt;code&gt;plexus-mail-sender-api-1.0-alpha-7.jar&lt;/code&gt; to your continuum installations lib directory. (er, i extracted the .war file into my $CATALINA_HOME/webapps, if you're running the war itself, you need to repackage it).&lt;br /&gt;&lt;br /&gt;Finally, tweak the sender in WEB-INF/classes/META-INF/plexus/application.xml, look&lt;br /&gt;for the tags &lt;code&gt;from-mailbox&lt;/code&gt; and &lt;code&gt;from-name&lt;/code&gt;.&lt;br /&gt;That's about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-8621933980250604160?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/8621933980250604160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=8621933980250604160' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8621933980250604160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8621933980250604160'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/08/continuum-11-on-tomcat-6-with-gmail.html' title='Continuum 1.1 on Tomcat 6  with GMail notification'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-4612803907957597680</id><published>2008-08-20T04:30:00.000-07:00</published><updated>2008-08-20T05:07:35.005-07:00</updated><title type='text'>Installing archiva/continuum with tomcat+mysql on ubuntu</title><content type='html'>continuum documentation is kinda ... not finished yet. I'm in the process of installing the archiva/continuum double on an recent ubuntu server (hardy).&lt;br /&gt;Database is a mysql 5.0 which I installed before.&lt;br /&gt;&lt;br /&gt;Some trouble occurred when trying to connect the archiva webapp (which i installed first) to the database. For this, check /etc/my.cnf for the bind address as well as&lt;br /&gt;the connect properties of the archiva database user (self-reminder). It can make a&lt;br /&gt;difference if you connect at 127.0.0.1, localhost or the "real" IP.&lt;br /&gt;Also, you may have to allow the port through the firewall (the "ufw allow" thing).&lt;br /&gt;&lt;br /&gt;For archiva, I created the file /usr/local/tomcat/conf/Catalina/localhost/archiva.xml (with /usr/local/tomcat being my CATALINA_HOME):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Context path=&amp;quot;/archiva&amp;quot;quot;&amp;gt;&lt;br /&gt;&amp;lt;Resource name=&amp;quot;jdbc/users&amp;quot;&lt;br /&gt;            auth=&amp;quot;Container&amp;quot;&lt;br /&gt;            type=&amp;quot;javax.sql.DataSource&amp;quot;&lt;br /&gt;            username=&amp;quot;archiva&amp;quot;&lt;br /&gt;            password=&amp;quot;freetibet&amp;quot;&lt;br /&gt;            driverClassName=&amp;quot;com.mysql.jdbc.Driver&amp;quot;&lt;br /&gt;            url=&amp;quot;jdbc:mysql://localhost:3306/archiva&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Resource name=&amp;quot;jdbc/archiva&amp;quot;&lt;br /&gt;            auth=&amp;quot;Container&amp;quot;&lt;br /&gt;            type=&amp;quot;javax.sql.DataSource&amp;quot;&lt;br /&gt;            username=&amp;quot;archiva&amp;quot;&lt;br /&gt;            password=&amp;quot;freetibet&amp;quot;&lt;br /&gt;            driverClassName=&amp;quot;com.mysql.jdbc.Driver&amp;quot;&lt;br /&gt;            url=&amp;quot;jdbc:mysql://localhost:3306/archiva&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Resource name=&amp;quot;mail/Session&amp;quot;&lt;br /&gt;            auth=&amp;quot;Container&amp;quot;&lt;br /&gt;            type=&amp;quot;javax.mail.Session&amp;quot;&lt;br /&gt;            mail.smtp.host=&amp;quot;localhost&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Context&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For continuum, just copy the file, rename it to continuum.xml, change the username&lt;br /&gt;accordingly and switch jdbc/archiva to jdbc/continuum.&lt;br /&gt;&lt;br /&gt;If you are using Tomcat 6.0.18 beware. Due to these bugs (&lt;a href="http://jira.codehaus.org/browse/MRM-905"&gt;MRM-905&lt;/a&gt; and &lt;a href="http://jira.codehaus.org/browse/CONTINUUM-1844"&gt;CONTINUUM-1844&lt;/a&gt;) you will have to apply&lt;br /&gt;two patches or just fire up some sed commands to replace "empty(" with "empty ("&lt;br /&gt;and "not(" with "not (" in the jsp and tag directories.&lt;br /&gt;&lt;br /&gt;I didn't put the webapps into the CATALINA_HOME like the documentation tell you to,&lt;br /&gt;but into the standard CATALINA_HOME/webapps Folder.&lt;br /&gt;&lt;br /&gt;Be sure to put the necessary libs into CATALINA_HOME/lib: mail.jar, activation.jar&lt;br /&gt;and the mysql-connector. &lt;br /&gt;&lt;br /&gt;Boy, this post is a mess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-4612803907957597680?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/4612803907957597680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=4612803907957597680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4612803907957597680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4612803907957597680'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/08/installing-archivacontinuum-with.html' title='Installing archiva/continuum with tomcat+mysql on ubuntu'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-526964944054037410</id><published>2008-07-30T02:08:00.000-07:00</published><updated>2008-07-30T02:19:15.471-07:00</updated><title type='text'>The peach window</title><content type='html'>The peach window is the time interval where the peaches you bought are in an edible state. That is, the time between rock hard causing gum bleeding and moldy,&lt;br /&gt;covered with fruit flies.&lt;br /&gt;&lt;br /&gt;While the time before the window takes up to a week (and after as long a you can stand the flies), the peach window seems to be sized 12 hours in average.&lt;br /&gt;&lt;br /&gt;Unfortunately, here they come packed at least by eight, and worse I seem always to get them in a &lt;code&gt;synchronized&lt;/code&gt; set. So once a week, it's peach diet. Lucky me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-526964944054037410?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/526964944054037410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=526964944054037410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/526964944054037410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/526964944054037410'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/07/peach-window.html' title='The peach window'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-3866823238927604963</id><published>2008-07-16T05:42:00.000-07:00</published><updated>2008-07-16T05:49:54.221-07:00</updated><title type='text'>The longest classnames in spring security</title><content type='html'>If you ever wondered, how long a classname can become, have a look at spring security.&lt;br /&gt;&lt;br /&gt;Here are the top-five of the longest ones (excluding package-name):&lt;br /&gt;&lt;br /&gt;Sharing the second place, there are:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;BasicAclEntryAfterInvocationCollectionFilteringProvider&lt;br /&gt;J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource&lt;br /&gt;PreAuthenticatedGrantedAuthoritiesAuthenticationDetails&lt;br /&gt;WebSpherePreAuthenticatedWebAuthenticationDetailsSource&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This almost look like a PGP key block.&lt;br /&gt;Excited, who the winner is *gasp*? Here we go.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;PreAuthenticatedGrantedAuthoritiesWebAuthenticationDetails&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;HemingwayWroteStoriesShorterThanThat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-3866823238927604963?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/3866823238927604963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=3866823238927604963' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3866823238927604963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3866823238927604963'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/07/longest-classnames-in-spring-security.html' title='The longest classnames in spring security'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-5804373344171863925</id><published>2008-07-09T09:30:00.000-07:00</published><updated>2008-07-10T00:57:08.428-07:00</updated><title type='text'>Eclipse Ganymede branding - Getting your launcher icon right</title><content type='html'>Still, eclipse is picky when you're not explicit on your branding.&lt;br /&gt;When providing icons for your windows application one by one (i.e. not with a combined .ico but single bitmaps) it is mandatory to specify a file for each&lt;br /&gt;of the six sizes/depths. &lt;br /&gt;Looks like win xp is looking for a 32-bit icon, so the "fault" is not on eclipse's side. Of course, it's on mine.&lt;br /&gt;&lt;br /&gt;Iconomaker is capable of creating 32-bit bitmaps, but it is shareware.&lt;br /&gt;Haven't tried gimp yet, but i suppose it can do so as well.&lt;br /&gt;&lt;br /&gt;[update]&lt;br /&gt;Yeah, gimp can do. Eclipse is just overwriting the icons from the original launcher.&lt;br /&gt;If you drag your launcher in irfanview you will see a multipage icon (7 pages) you can&lt;br /&gt;scroll through. I only wonder where i can specify the seventh icon, since the branding wizard only allows for six?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-5804373344171863925?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/5804373344171863925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=5804373344171863925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/5804373344171863925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/5804373344171863925'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/07/eclipse-ganymede-branding-getting-your.html' title='Eclipse Ganymede branding - Getting your launcher icon right'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-6294968971130325216</id><published>2008-06-27T06:00:00.000-07:00</published><updated>2008-06-27T06:12:36.774-07:00</updated><title type='text'>My ganymede icon</title><content type='html'>So eclipse ganymede is finally out. Good news, although some plugins still have to be updated to work with&lt;br /&gt;it. If you don't have the JEE package, don't try to install the Spring IDE Mylyn Integration, look for installation instructions &lt;a href="http://forum.springframework.org/showthread.php?t=47760"&gt;here&lt;/a&gt;.)&lt;br /&gt;The Mantis-mylyn integration is not yet ready for 3.4, so you have to use the dev version to make it work, the update-site URL is http://mylyn-mantis.sourceforge.net/eclipse/dev/update/site.xml&lt;br /&gt;&lt;br /&gt;Unfortunately, Eclipse did not provide a new icon for ganymede but having seven zillions different versions on my desktop, I need some visual distinction. Fortunately, irfanview can extract icons from exe's, so look at this masterpiece.&lt;br /&gt;Bow, Picasso!&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tFXFOm2_NKE/SGTk-ImvTaI/AAAAAAAAAA4/ZQpVTmL0zl4/s1600-h/ganymede2.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_tFXFOm2_NKE/SGTk-ImvTaI/AAAAAAAAAA4/ZQpVTmL0zl4/s200/ganymede2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5216546024514866594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-6294968971130325216?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/6294968971130325216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=6294968971130325216' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/6294968971130325216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/6294968971130325216'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/my-ganymede-icon.html' title='My ganymede icon'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tFXFOm2_NKE/SGTk-ImvTaI/AAAAAAAAAA4/ZQpVTmL0zl4/s72-c/ganymede2.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-8594982861638767700</id><published>2008-06-17T08:10:00.000-07:00</published><updated>2008-06-17T08:32:59.239-07:00</updated><title type='text'>Spring Security + Spring Remoting + Digest Authentication Part 2</title><content type='html'>Now for the server configuration. I will spare out the setup of a web application, since you will know that yourself.&lt;br /&gt;&lt;br /&gt;First, the SecurityService and its implementation:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public interface SecurityService {&lt;br /&gt;  public String[] getRoles();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import org.springframework.security.GrantedAuthority;&lt;br /&gt;import org.springframework.security.context.SecurityContextHolder;&lt;br /&gt;&lt;br /&gt;public class SecurityServiceImpl implements SecurityService {  &lt;br /&gt;  public String[] getRoles() {&lt;br /&gt;    GrantedAuthority[] gas = SecurityContextHolder.getContext().getAuthentication().getAuthorities();&lt;br /&gt;    String[] roles = new String[gas.length];&lt;br /&gt;      for (int i=0;i&amp;lt;gas.length; i++) {&lt;br /&gt;        roles[i] = gas[i].getAuthority();&lt;br /&gt;      }&lt;br /&gt;    return roles;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Not that complicated.&lt;br /&gt;This is the web.xml, which looks rather straightforward:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;!DOCTYPE web-app PUBLIC&lt;br /&gt; "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"&lt;br /&gt; "http://java.sun.com/dtd/web-app_2_3.dtd" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt;    &amp;lt;display-name&amp;gt;web-deployed service layer&amp;lt;/display-name&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;context-param&amp;gt;&lt;br /&gt;        &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;        &amp;lt;param-value&amp;gt;/WEB-INF/applicationContext-service.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt;    &amp;lt;/context-param&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;filter&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;filter-class&amp;gt;&lt;br /&gt;            org.springframework.web.filter.DelegatingFilterProxy&lt;br /&gt;        &amp;lt;/filter-class&amp;gt;&lt;br /&gt;    &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;servlet&amp;gt;&lt;br /&gt;        &amp;lt;servlet-name&amp;gt;context&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;        &amp;lt;servlet-class&amp;gt;&lt;br /&gt;            org.springframework.web.context.ContextLoaderServlet&lt;br /&gt;        &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;        &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;    &amp;lt;/servlet&amp;gt;&lt;br /&gt;    &amp;lt;servlet&amp;gt;&lt;br /&gt;        &amp;lt;servlet-name&amp;gt;remote&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;        &amp;lt;servlet-class&amp;gt;&lt;br /&gt;            org.springframework.web.servlet.DispatcherServlet&lt;br /&gt;        &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;        &amp;lt;load-on-startup&amp;gt;2&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;    &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;        &amp;lt;servlet-name&amp;gt;remote&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;    &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Following the convention, there is a [minimal] remote-servlet.xml&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean name="/securityService"&lt;br /&gt;        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"&amp;gt;&lt;br /&gt;        &amp;lt;property name="serviceInterface" value="de.yyy.xxx.SecurityService" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="service" ref="securityService" /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and finally, the biggest artifact, the server's application context.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;    xmlns:security="http://www.springframework.org/schema/security"&lt;br /&gt;    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;              http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="securityService" class="de.yyy.xxx.SecurityServiceImpl"&amp;gt;&lt;br /&gt;        &amp;lt;security:intercept-methods&amp;gt;&lt;br /&gt;            &amp;lt;security:protect&lt;br /&gt;                method="de.yyy.xxx.SecurityServiceImpl.getRoles" access="ROLE_USER" /&amp;gt;&lt;br /&gt;        &amp;lt;/security:intercept-methods&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;security:authentication-manager alias="authenticationManager" /&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="digestProcessingFilter"&lt;br /&gt;        class="org.springframework.security.ui.digestauth.DigestProcessingFilter"&amp;gt;&lt;br /&gt;        &amp;lt;property name="userDetailsService" ref="uds" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="authenticationEntryPoint"&lt;br /&gt;            ref="digestProcessingFilterEntryPoint" /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="digestProcessingFilterEntryPoint"&lt;br /&gt;        class="org.springframework.security.ui.digestauth.DigestProcessingFilterEntryPoint"&amp;gt;&lt;br /&gt;        &amp;lt;property name="realmName" value="ThisIsTheDigestRealm" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="key" value="acegi" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="nonceValiditySeconds" value="10" /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="springSecurityFilterChain"&lt;br /&gt;        class="org.springframework.security.util.FilterChainProxy"&amp;gt;&lt;br /&gt;        &amp;lt;security:filter-chain-map path-type="ant"&amp;gt;&lt;br /&gt;            &amp;lt;security:filter-chain pattern="/**"&lt;br /&gt;                filters="httpSessionContextIntegrationFilter,digestProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor" /&amp;gt;&lt;br /&gt;        &amp;lt;/security:filter-chain-map&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="httpSessionContextIntegrationFilter"&lt;br /&gt;        class="org.springframework.security.context.HttpSessionContextIntegrationFilter" /&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="filterSecurityInterceptor"&lt;br /&gt;        class="org.springframework.security.intercept.web.FilterSecurityInterceptor"&amp;gt;&lt;br /&gt;        &amp;lt;property name="authenticationManager"&lt;br /&gt;            ref="authenticationManager" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="accessDecisionManager"&lt;br /&gt;            ref="accessDecisionManager" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="objectDefinitionSource"&amp;gt;&lt;br /&gt;            &amp;lt;security:filter-invocation-definition-source&amp;gt;&lt;br /&gt;                &amp;lt;security:intercept-url pattern="/**"&lt;br /&gt;                    access="ROLE_USER" /&amp;gt;&lt;br /&gt;            &amp;lt;/security:filter-invocation-definition-source&amp;gt;&lt;br /&gt;        &amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="accessDecisionManager"&lt;br /&gt;        class="org.springframework.security.vote.AffirmativeBased"&amp;gt;&lt;br /&gt;        &amp;lt;property name="allowIfAllAbstainDecisions" value="false" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="decisionVoters"&amp;gt;&lt;br /&gt;            &amp;lt;list&amp;gt;&lt;br /&gt;                &amp;lt;bean&lt;br /&gt;                    class="org.springframework.security.vote.RoleVoter" /&amp;gt;&lt;br /&gt;            &amp;lt;/list&amp;gt;&lt;br /&gt;        &amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="exceptionTranslationFilter"&lt;br /&gt;        class="org.springframework.security.ui.ExceptionTranslationFilter"&amp;gt;&lt;br /&gt;        &amp;lt;property name="authenticationEntryPoint"&lt;br /&gt;            ref="digestProcessingFilterEntryPoint" /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;security:authentication-provider&amp;gt;&lt;br /&gt;        &amp;lt;security:user-service id="uds"&amp;gt;&lt;br /&gt;            &amp;lt;security:user name="jimi" password="jimi"&lt;br /&gt;                authorities="ROLE_USER, ROLE_ADMIN" /&amp;gt;&lt;br /&gt;            &amp;lt;security:user name="bob" password="bob"&lt;br /&gt;                authorities="ROLE_USER" /&amp;gt;&lt;br /&gt;        &amp;lt;/security:user-service&amp;gt;&lt;br /&gt;    &amp;lt;/security:authentication-provider&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's it. The client requests will be authenticated via the HTTP Digest algorithm,&lt;br /&gt;the corresponding filter will set up a SecurityContext on the server side. When&lt;br /&gt;the client asks for available roles, method security assures that only authorized clients can request them. The getRoles method then just accesses the SecurityContext and copies the rolenames in a String array which is returned. &lt;br /&gt;There are some edges that need more polish, i.e. one could try to take the GrantedAuthority array and put this in a client's SecurityContext. With some more handcoding it should be possible to send the SecurityContext over the wire, but it needs more analysis if this makes sense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-8594982861638767700?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/8594982861638767700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=8594982861638767700' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8594982861638767700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8594982861638767700'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/spring-security-spring-remoting-digest.html' title='Spring Security + Spring Remoting + Digest Authentication Part 2'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-5559641620832957652</id><published>2008-06-17T07:48:00.000-07:00</published><updated>2008-06-17T08:38:50.547-07:00</updated><title type='text'>Spring Security + Spring Remoting + Digest Authentication</title><content type='html'>This was a hard one. Documentation on how to use spring security with a rich client is thin or outdated. Using search engines, you'll have a name clash with the "spring rich client". The name change from Acegi to Spring Security and other things like the sample code not being completely distributed with the sources made it kinda hard for me to figure things out.&lt;br /&gt;Nevertheless, here's what I've come up with:&lt;br /&gt;&lt;br /&gt;The task was to integrate spring security with a rich client that uses spring remoting (via httpinvoker) so that the client knows the roles the user has and the server does so as well. I didn't want the client to use HTTPS for performance reasons, nor did i  want to transfer the password in clear over the wire (or only marginally scrambled via Base64). I chose digest authentication to be the one.&lt;br /&gt;I must admit that my knowledge on the spring security architecture is very shallow, so my solution is probably not the most elegant one, but it works for me.&lt;br /&gt;&lt;br /&gt;I don't use the RemoteAuthentication classes that are provided since I couldn't make them work together with digest authentication.&lt;br /&gt;&lt;br /&gt;Before posting the config, how does it work?&lt;br /&gt;The client takes the user credentials, they would be manual input in a real app.&lt;br /&gt;The creds are put into the HttpState so the Commons HttpClient library can do digest auth with the server. The problem is that you have the SecurityContext with the GrantedAuthorities available on the server, but not on the client. For that, I've created a SecurityService that just returns the GrantedAuthorities via remote invocation. That way, the client can (for example) hide or show menus or buttons,&lt;br /&gt;depending on the available roles.&lt;br /&gt;&lt;br /&gt;Ok, let's go. This is the main application, of course just a stub to show it works.&lt;br /&gt;&lt;code&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml");&lt;br /&gt;  String user = "jimi";&lt;br /&gt;  String pw = "jimi";&lt;br /&gt;  UsernamePasswordCredentials creds = new UsernamePasswordCredentials(user, pw);&lt;br /&gt; &lt;br /&gt;  HttpState httpState = (HttpState) ctx.getBean("httpState");&lt;br /&gt;  httpState.setCredentials(AuthScope.ANY, creds);&lt;br /&gt;  &lt;br /&gt;  //print the available roles&lt;br /&gt;  String[] roles = ((SecurityService) ctx.getBean("securityService")).getRoles();&lt;br /&gt;  for (int i = 0; i &lt; roles.length; i++) {  &lt;br /&gt;    System.out.println("Role:" + roles[i]);      &lt;br /&gt;  }   &lt;br /&gt;} &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, the client's appconfig:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;    xmlns:util="http://www.springframework.org/schema/util"    &lt;br /&gt;    xsi:schemaLocation="http://www.springframework.org/schema/beans&lt;br /&gt;           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="securityService"&lt;br /&gt;       class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"&amp;gt;&lt;br /&gt;        &amp;lt;property name="serviceUrl"    value="http://localhost:8999/middletierService/securityService" /&amp;gt;&lt;br /&gt;        &amp;lt;property name="serviceInterface" value="de.yyy.xxx.SecurityService" /&amp;gt;&lt;br /&gt;         &amp;lt;property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecutor"/&amp;gt;&lt;br /&gt;     &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;bean id="httpInvokerRequestExecutor" &lt;br /&gt;          class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"&amp;gt;&lt;br /&gt;        &amp;lt;constructor-arg ref="httpClient"/&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id="httpClient" class="org.apache.commons.httpclient.HttpClient"&amp;gt;&lt;br /&gt;        &amp;lt;property name="state" ref="httpState" /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id="httpState" class="org.apache.commons.httpclient.HttpState"/&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Part 2 will be on the server's configuration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-5559641620832957652?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/5559641620832957652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=5559641620832957652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/5559641620832957652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/5559641620832957652'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/this-was-hard-one.html' title='Spring Security + Spring Remoting + Digest Authentication'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-4803390666246106706</id><published>2008-06-16T02:03:00.000-07:00</published><updated>2008-06-16T02:08:40.462-07:00</updated><title type='text'>Authenticate against NT Domain with JCIFS</title><content type='html'>I just wanted to authenticate a user against an primary domain controller in java.&lt;br /&gt;The tool of choice seems to be JCIFS, so this is the minimal stripped-down example&lt;br /&gt;to do this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NtlmPasswordAuthentication auth1= new NtlmPasswordAuthentication("yourdomain", "theuser", "thepassword" );&lt;br /&gt;InetAddress address=InetAddress.getByName("the.domain.controller");&lt;br /&gt;UniAddress dc = new UniAddress(address);&lt;br /&gt;SmbSession.logon(dc, auth1);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will throw an exception when id or password is wrong. Otherwise it just terminates without an error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-4803390666246106706?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/4803390666246106706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=4803390666246106706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4803390666246106706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4803390666246106706'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/authenticate-against-nt-domain-with.html' title='Authenticate against NT Domain with JCIFS'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-3245679761632973501</id><published>2008-06-05T00:29:00.000-07:00</published><updated>2008-06-05T00:44:38.853-07:00</updated><title type='text'>Telephone Idiots</title><content type='html'>To my dyin' day, i will never understands the imbeciles that ring a phone&lt;br /&gt;and let it ring for twenty times. What do they expect? That I'm busy the first&lt;br /&gt;nineteen rings and then, decide differently and pick it up?&lt;br /&gt;&lt;br /&gt;Extra points for the morons that do this on office phones in a shared office.&lt;br /&gt;Extra points and a pie for the jerk practicing this on my flat-share's phone&lt;br /&gt;&lt;span style="font-style:italic;"&gt;in the night&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But the mother of all phone crapheads must be piece of rotten flesh [see &lt;a href="http://en.wikisource.org/wiki/Bible%2C_King_James%2C_Job#Chapter_7"&gt;Book of Job, 7,5&lt;/a&gt;], that is just right now doin' this in the office behind me in a five minute rhythm. THE GUY IS JUST NOT THERE! HE WON'T PICK UP!&lt;br /&gt;&lt;br /&gt;Communication rage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-3245679761632973501?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/3245679761632973501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=3245679761632973501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3245679761632973501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/3245679761632973501'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/telephone-idiots.html' title='Telephone Idiots'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-6913948203205777198</id><published>2008-06-02T08:23:00.000-07:00</published><updated>2008-06-02T08:25:47.670-07:00</updated><title type='text'>Spring Security Javadoc generation</title><content type='html'>For whatever reason, there is no javadoc with the current Spring Security.&lt;br /&gt;Here's how to generate it. Mainly for me to remember.&lt;br /&gt;&lt;br /&gt;jar xvf spring-security-acl-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-cas-client-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-catalina-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-core-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-core-tiger-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-jboss-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-jetty-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-ntlm-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-openid-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-portlet-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-resin-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-samples-contacts-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-samples-tutorial-2.0.1-sources.jar&lt;br /&gt;jar xvf spring-security-taglibs-2.0.1-sources.jar&lt;br /&gt;&lt;br /&gt;javadoc -sourcepath . -subpackages org -d docs&lt;br /&gt;cd docs&lt;br /&gt;jar cf spring-security-javadoc.jar .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-6913948203205777198?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/6913948203205777198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=6913948203205777198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/6913948203205777198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/6913948203205777198'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/06/spring-security-javadoc-generation.html' title='Spring Security Javadoc generation'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-2525630703139164935</id><published>2008-05-14T00:56:00.000-07:00</published><updated>2008-05-14T01:02:00.485-07:00</updated><title type='text'>maven equinox problem</title><content type='html'>Ran across this one&lt;br /&gt;&lt;br /&gt;Couldn't find a version in [1.0.0-v20070423, 1.0.0-v20070606] to match range [1.0.0,2.0.0)&lt;br /&gt;  org.eclipse.equinox:app:jar:null&lt;br /&gt;&lt;br /&gt;when trying to &lt;br /&gt;&lt;br /&gt;mvn clean install pax:eclipse -DdownloadSources&lt;br /&gt;&lt;br /&gt;from the  &lt;a href="http://wiki.ops4j.org/confluence/display/ops4j/2007/11/27/Eclipse+RCP+and+Spring-DM+tutorial+by+Jeff+Caldwell"&gt;Eclipse RCP and Spring-DM tutorial by Jeff Caldwell&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.fornax-platform.org/cp/display/fornax/2.+Hello+World+Tutorial+%28CSC%29?replyToComment=2098#comment-2098"&gt;workaround by Michael Vorburger&lt;/a&gt; solved this for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-2525630703139164935?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/2525630703139164935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=2525630703139164935' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/2525630703139164935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/2525630703139164935'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/05/maven-equinox-problem.html' title='maven equinox problem'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-514709525610651597</id><published>2008-03-10T04:54:00.001-07:00</published><updated>2008-03-10T04:57:48.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>I'll kill her</title><content type='html'>Listen to "I'll kill her" by SoKo. &lt;br /&gt;Cute, ain't she?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=25AsfkriHQc"&gt;http://www.youtube.com/watch?v=25AsfkriHQc&lt;/a&gt;&lt;br /&gt;&lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewProfile&amp;friendID=94795730"&gt;http://profile.myspace.com/index.cfm?fuseaction=user.viewProfile&amp;friendID=94795730&lt;/a&gt;&lt;br /&gt;&lt;a href="http://soko.motor.de/"&gt;http://soko.motor.de/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-514709525610651597?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/514709525610651597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=514709525610651597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/514709525610651597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/514709525610651597'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2008/03/ill-kill-her.html' title='I&apos;ll kill her'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-33396710534417982</id><published>2007-10-30T12:59:00.000-07:00</published><updated>2007-10-30T13:01:06.973-07:00</updated><title type='text'>be a host</title><content type='html'>Join http://www.hospitalityclub.org. This is a good thing(tm).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-33396710534417982?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/33396710534417982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=33396710534417982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/33396710534417982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/33396710534417982'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2007/10/be-host.html' title='be a host'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-8927299607390083006</id><published>2007-10-29T07:21:00.000-07:00</published><updated>2007-10-29T10:01:46.189-07:00</updated><title type='text'>ORABPEL-10902</title><content type='html'>Just had this error: &lt;br /&gt; &lt;br /&gt; [Fehler ORABPEL-10902]: Kompilierung nicht erfolgreich&lt;br /&gt; [Beschreibung]: in "C:\Projekte\CruisePlanner\src\bpel\CpOutput\bpel\CpOutput.bpel", XML-Parsing nicht erfolgreich. Grund "".&lt;br /&gt; [Mögliche Behebung]: n/v.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;In my case it was an error in an expression-attribute of a &amp;lt;from&amp;gt;-Tag which caused the trouble, since the expression is evaluated at compile time.&lt;br /&gt;Just iteratively comment out the statements to find the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-8927299607390083006?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/8927299607390083006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=8927299607390083006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8927299607390083006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/8927299607390083006'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2007/10/orabpel-10902.html' title='ORABPEL-10902'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-4632992112525489370</id><published>2007-03-31T10:31:00.001-07:00</published><updated>2007-03-31T10:31:08.648-07:00</updated><title type='text'>Das Pferd isst keinen...</title><content type='html'>Gurkensalat.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-4632992112525489370?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/4632992112525489370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=4632992112525489370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4632992112525489370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/4632992112525489370'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2007/03/das-pferd-isst-keinen.html' title='Das Pferd isst keinen...'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-7277440842463157359</id><published>2007-03-31T07:57:00.001-07:00</published><updated>2007-10-29T09:59:52.882-07:00</updated><title type='text'>Low - Breaker</title><content type='html'>&lt;font size="-1"&gt;&lt;span class="a"&gt;www.youtube.com/watch?v=zmo7tyrtGW0&lt;br&gt;&lt;br&gt;yummy. I only wonder why he doesn't start with the piece on his plate :-)&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4146319932577841896-7277440842463157359?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/7277440842463157359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=7277440842463157359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/7277440842463157359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/7277440842463157359'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2007/03/low-breaker.html' title='Low - Breaker'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4146319932577841896.post-7752931239124906020</id><published>2007-03-30T09:21:00.000-07:00</published><updated>2007-03-30T09:38:01.486-07:00</updated><title type='text'>OC4J+JPA+Hibernate3+spring antlr problem</title><content type='html'>&lt;span style="font-family:arial;"&gt;Setup:&lt;br /&gt;OC4J 10.1.3.2&lt;br /&gt;Spring 2.0.3&lt;br /&gt;Hibernate 3.2.2 as JPA persistence provider.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="postbody"  style="font-family:arial;"&gt; Problem:&lt;br /&gt;org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Analysis:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There's an old antlr.jar in the toplink-lib that comes with OC4J. You have to use the one that comes with&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Hibernate. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Solution:&lt;br /&gt;Avoid oracle's toplink stuff to be loaded.&lt;br /&gt;in orion-application.xml, enter:&lt;br /&gt;&lt;br /&gt;&amp;lt;orion-application&amp;gt;&lt;br /&gt; &amp;lt;imported-shared-libraries&amp;gt;&lt;br /&gt;   &amp;lt;remove-inherited name="oracle.toplink"&amp;gt;&lt;br /&gt; &amp;lt;/remove-inherited&amp;gt;&lt;br /&gt;&amp;lt;/imported-shared-libraries&amp;gt;&lt;br /&gt;&lt;br /&gt;See &lt;/orion-application&gt;&lt;/span&gt;&lt;b&gt;Oracle® Containers for J2EE Developer's Guide   chapter 3.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;IIRC there's even a property in the EM that you can set to do this while deploying.&lt;br /&gt;&lt;br /&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/4146319932577841896-7752931239124906020?l=elvisfromhell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elvisfromhell.blogspot.com/feeds/7752931239124906020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4146319932577841896&amp;postID=7752931239124906020' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/7752931239124906020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4146319932577841896/posts/default/7752931239124906020'/><link rel='alternate' type='text/html' href='http://elvisfromhell.blogspot.com/2007/03/oc4jjpahibernate3spring-antlr-problem.html' title='OC4J+JPA+Hibernate3+spring antlr problem'/><author><name>Elvis from hell</name><uri>http://www.blogger.com/profile/04873545039800231268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_tFXFOm2_NKE/SEULIcE_3dI/AAAAAAAAAAg/6WOshRyvzms/S220/x3.jpg'/></author><thr:total>2</thr:total></entry></feed>
