<?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-6577205860235779763</id><updated>2011-11-27T15:30:33.136-08:00</updated><title type='text'>Akjol</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6577205860235779763.post-2967551041395577212</id><published>2010-03-29T07:42:00.000-07:00</published><updated>2010-03-29T07:57:20.684-07:00</updated><title type='text'>log4php programmatically runtime setfile in appender LoggerAppenderFile</title><content type='html'>I don't PHP very often but lately I needed a robust log. I used a lot log4j so immediately turn to log4php The documentation is still very poor with very little examples on the net. In particular, I needed to set some options at runtime or programmatically, especially the filename for the LoggerAppenderFile, so here is a little minimalistic example on how to do it:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;  require_once('log4php/Logger.php');&lt;br /&gt;&lt;br /&gt;  $rootlogger = Logger::getRootLogger();&lt;br /&gt;  $rootlogger-&gt;setLevel(LoggerLevel::DEBUG);&lt;br /&gt;&lt;br /&gt;  $appender = new LoggerAppenderFile("MyAppender");&lt;br /&gt;  $appender-&gt;setFile("mylogfile.log", true);&lt;br /&gt;  $appenderlayout = new LoggerLayoutTTCC();&lt;br /&gt;  $appender-&gt;setLayout($appenderlayout);&lt;br /&gt;  $appender-&gt;activateOptions();&lt;br /&gt;&lt;br /&gt;  $rootlogger-&gt;removeAllAppenders();&lt;br /&gt;  $rootlogger-&gt;addAppender($appender);&lt;br /&gt;&lt;br /&gt;  $rootlogger-&gt;info("info");&lt;br /&gt;  $rootlogger-&gt;error("error");&lt;br /&gt;  $rootlogger-&gt;debug("debug");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;if you don't use the rootlogger you don't need to removeAllAppenders in order to get rid of the console one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6577205860235779763-2967551041395577212?l=akjol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/2967551041395577212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6577205860235779763&amp;postID=2967551041395577212' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/2967551041395577212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/2967551041395577212'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/2010/03/log4php-programmatically-runtime.html' title='log4php programmatically runtime setfile in appender LoggerAppenderFile'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6577205860235779763.post-6541685763322364120</id><published>2008-12-29T00:53:00.000-08:00</published><updated>2008-12-29T01:17:20.244-08:00</updated><title type='text'>PDFBox Lucene  java.lang.NoSuchMethodError</title><content type='html'>&lt;a href="http://www.pdfbox.org/"&gt;PDFBox&lt;/a&gt; version 0.7.3 is currently not compatible with the latest Lucene releases (for example Lucene v 2.4.0).&lt;br /&gt;&lt;br /&gt;If you try to build an application using these two conflicting libraries you will most likely get an exception like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fX-3QJKmySw/SViSa2abO0I/AAAAAAAAACM/B53vqpnjj-k/s1600-h/lucene_ex.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://1.bp.blogspot.com/_fX-3QJKmySw/SViSa2abO0I/AAAAAAAAACM/B53vqpnjj-k/s320/lucene_ex.jpg" alt="" id="BLOGGER_PHOTO_ID_5285135152699882306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One of the potential solution to solve the problem above is to recompile the PDFBox lib (you will need &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; installed on your machine).&lt;br /&gt;&lt;br /&gt;If you download &lt;a href="http://www.pdfbox.org/"&gt;PDFBox&lt;/a&gt; and extract it in a &lt;span style="font-style: italic;"&gt;$PDFBox&lt;/span&gt; dir of your choice, you will notice that in the sub-directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$PDFBox/external&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lucene v2.0.0 is used to build the library. Rename or delete both the &lt;span style="font-style: italic;"&gt;lucene-core-2.0.0.jar&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;lucene-demos-2.0.0.jar&lt;/span&gt; files and copy in the directory the newer versions (for example &lt;span style="font-style: italic;"&gt;lucene-core-2.4.0.jar&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;lucene-demos-2.4.0.jar&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Go to the top-level $PDFBox directory and simply run "ant" the project will be recompiled. A new library should be created (in my case a &lt;span style="font-style: italic;"&gt;PDFBox-0.7.3-dev.jar&lt;/span&gt; library located in &lt;span style="font-style: italic;"&gt;$PDFBox/lib&lt;/span&gt; was created).&lt;br /&gt;&lt;br /&gt;Notice, in case you get another exception concerning &lt;span style="color:blue;"&gt;org.fontbox.afm.AFMParser&lt;/span&gt; like in the screenshot below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fX-3QJKmySw/SViUqRNVLoI/AAAAAAAAACU/zo2cEtDZKic/s1600-h/lucene_ex_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://1.bp.blogspot.com/_fX-3QJKmySw/SViUqRNVLoI/AAAAAAAAACU/zo2cEtDZKic/s320/lucene_ex_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5285137616614010498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;you will also need the additional &lt;a href="http://sourceforge.net/projects/fontbox/"&gt;fontbox&lt;/a&gt; library added to your project (for example in Netbeans add the library &lt;span style="font-style: italic;"&gt;FontBox-0.1.0.jar&lt;/span&gt; to the libraries).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6577205860235779763-6541685763322364120?l=akjol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/6541685763322364120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6577205860235779763&amp;postID=6541685763322364120' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/6541685763322364120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/6541685763322364120'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/2008/12/pdfbox-lucene-javalangnosuchmethoderror.html' title='PDFBox Lucene  java.lang.NoSuchMethodError'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fX-3QJKmySw/SViSa2abO0I/AAAAAAAAACM/B53vqpnjj-k/s72-c/lucene_ex.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6577205860235779763.post-8595734333892434045</id><published>2008-12-14T00:40:00.000-08:00</published><updated>2008-12-29T05:26:54.790-08:00</updated><title type='text'>Glassfish + Jackrabbit + PostgreSQL (2)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;RMI Access&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is now time to create our first Netbeans 6.5 project to access our repository. First of all, in Netbeans create a &lt;em&gt;New Project-&gt;Java Web-&gt;Web Application&lt;/em&gt; project named &lt;em&gt;testrepositoryweb&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTHr-qgpLI/AAAAAAAAABM/0rl3gM8_udA/s1600-h/netbeans_1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 217px;" src="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTHr-qgpLI/AAAAAAAAABM/0rl3gM8_udA/s320/netbeans_1.png" alt="" id="BLOGGER_PHOTO_ID_5279564221554664626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Choose Glassfish V2 (or V3) and JavaEE 5 as illustrated below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fX-3QJKmySw/SUTIsiMUBmI/AAAAAAAAABU/UH0_cZqYr64/s1600-h/netbeans_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_fX-3QJKmySw/SUTIsiMUBmI/AAAAAAAAABU/UH0_cZqYr64/s320/netbeans_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5279565330603312738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Leave the defaults for the remaining settings. After your project has been created, we can now add a JUnit test to check a RMI connection with the &lt;span style="font-style: italic;"&gt;testrepository&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Before doing it, add all the libraries discussed in the &lt;a href="http://akjol.blogspot.com/2008/12/glassfish-v3-prelude-jackrabbit.html"&gt;Glassfish set up tutorial&lt;/a&gt; to the project &lt;span style="font-style: italic;"&gt;Library&lt;/span&gt; folder, additionally you have to add the &lt;a href="http://jackrabbit.apache.org/downloads.html"&gt;jackrabbit-jcr-rmi-1.5.0.jar&lt;/a&gt; library.&lt;br /&gt;&lt;br /&gt;Go to &lt;span style="font-style: italic;"&gt;Test Packages&lt;/span&gt; right click and select JUnit test (if it is not in the list choose &lt;span style="font-style: italic;"&gt;New-&gt;Other...-&gt;JUnit&lt;/span&gt;) and create a &lt;span style="font-style: italic;"&gt;RMIConnectionTest&lt;/span&gt; unit case:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTLJKqnKtI/AAAAAAAAABc/lQQ3nK0Kt6E/s1600-h/rmi_connection_test.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 217px;" src="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTLJKqnKtI/AAAAAAAAABc/lQQ3nK0Kt6E/s320/rmi_connection_test.jpg" alt="" id="BLOGGER_PHOTO_ID_5279568021527407314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can choose the &lt;span style="font-style: italic;"&gt;default package&lt;/span&gt; or better create your own package (for this tutorial it does not matter which way you choose).&lt;br /&gt;&lt;br /&gt;The source code for the class is:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;import java.net.MalformedURLException;&lt;br /&gt;import org.junit.After;&lt;br /&gt;import org.junit.AfterClass;&lt;br /&gt;import org.junit.Before;&lt;br /&gt;import org.junit.BeforeClass;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;import static org.junit.Assert.*;&lt;br /&gt;&lt;br /&gt;import javax.jcr.Repository;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;import javax.jcr.SimpleCredentials;&lt;br /&gt;import org.apache.jackrabbit.rmi.repository.URLRemoteRepository;&lt;br /&gt;&lt;br /&gt;public class RMIConnectionTest&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; public RMIConnectionTest(){}&lt;br /&gt;&lt;br /&gt; @BeforeClass&lt;br /&gt; public static void setUpClass() throws Exception {}&lt;br /&gt;&lt;br /&gt; @AfterClass&lt;br /&gt; public static void tearDownClass() throws Exception {}&lt;br /&gt;&lt;br /&gt; @Before&lt;br /&gt; public void setUp() {}&lt;br /&gt;&lt;br /&gt; @After&lt;br /&gt; public void tearDown() {}&lt;br /&gt;&lt;br /&gt; @Test&lt;br /&gt; public void testConnection()&lt;br /&gt; {&lt;br /&gt;    Session session = null;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;       Repository repository = new URLRemoteRepository(&lt;br /&gt;          &amp;quot;http://localhost:8080/jackrabbit/rmi&amp;quot;);&lt;br /&gt;&lt;br /&gt;       session = repository.login(new SimpleCredentials(&lt;br /&gt;          &amp;quot;anonymous&amp;quot;, &amp;quot;anonymous&amp;quot;.toCharArray()));&lt;br /&gt;&lt;br /&gt;       System.out.println(&amp;quot;Successfully logged in as user: &amp;quot;&lt;br /&gt;          + session.getUserID());&lt;br /&gt;     }&lt;br /&gt;     catch(java.net.MalformedURLException ex)&lt;br /&gt;     {&lt;br /&gt;         fail(ex.getMessage());&lt;br /&gt;     }&lt;br /&gt;     catch(javax.jcr.LoginException ex)&lt;br /&gt;     {&lt;br /&gt;         fail(ex.getMessage());&lt;br /&gt;     }&lt;br /&gt;     catch(javax.jcr.RepositoryException ex)&lt;br /&gt;     {&lt;br /&gt;         fail(ex.getMessage());&lt;br /&gt;     }&lt;br /&gt;     finally&lt;br /&gt;     {&lt;br /&gt;         if(null != session)&lt;br /&gt;            session.logout();&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;At this stage since we didn't set up a username and password for our repository, it will accept any username and password.&lt;br /&gt;&lt;br /&gt;If you right click on the RMIConnectionTest.java and choose &lt;span style="font-style: italic;"&gt;Run File&lt;/span&gt; you should get the test passing with a final message:&lt;br /&gt;&lt;pre&gt;Successfully logged in as user: anonymous&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;JNDI Access&lt;/h2&gt;&lt;br /&gt;RMI is of course slow. Depending on your &lt;a href="http://jackrabbit.apache.org/deployment-models.html"&gt;repository deployment model&lt;/a&gt; you can choose a JNDI connection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Note that a Jackrabbit repository directory contains a lock file that prevents it from being accessed simultaneously by multiple processes. You will see repository startup exceptions caused by the lock file if you fail to properly close all sessions or otherwise shut down the repository before leaving the process that accesses a repository. This behaviour may create some issues with Glassfish if you choose Shared J2EE Resource deployment model. My advice is to simply have one distinct in-process repository for each web application. In other words, remove (undeploy in Glassfish admin) any application, including the jackrabbit web app previously installed and only leave the &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;testrepositoryweb &lt;/span&gt;&lt;span style="font-size:100%;"&gt;application.&lt;br /&gt;More specifically, if you get the following exception:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;javax.naming.CommunicationException: serial context communication ex&lt;br /&gt;[Root exception is javax.jcr.RepositoryException: The repository home&lt;br /&gt;/home/emanuele/testrepository appears to be in use since the file named .lock is&lt;br /&gt;already locked by the current process.]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;while trying to access a repository, you have almost certainly been hit by the problem described above.&lt;br /&gt;&lt;br /&gt;Ok, time to set up a JNDI resource for our &lt;span style="font-style: italic;"&gt;testrepositoryweb&lt;/span&gt; app, we can do this easily from the Glassfish (V2) admin console, go to &lt;span style="font-style: italic;"&gt;Resources-&gt;JNDI-&gt;Custom Resources&lt;/span&gt; and create a new Custom Resource as follows:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTbC9ycU4I/AAAAAAAAABk/dbISaO8XnAU/s1600-h/jndi_new1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 257px;" src="http://2.bp.blogspot.com/_fX-3QJKmySw/SUTbC9ycU4I/AAAAAAAAABk/dbISaO8XnAU/s320/jndi_new1.jpg" alt="" id="BLOGGER_PHOTO_ID_5279585507177419650" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;In other words, create a Custom Resource with:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;JNDI Name = jcr/testrepository&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Resource Type = javax.jcr.Repository&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Factory Class = org.apache.jackrabbit.core.jndi.BindableRepositoryFactory&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;repHomeDir = &lt;your repository="" dir=""&gt;&lt;/your&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;configFilePath = &lt;your repository="" dir=""&gt;/repository.xml&lt;/your&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;The JNDI name is pretty much free form.&lt;br /&gt;&lt;br /&gt;We can now create a Servlet that will login to our &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;testrepository&lt;/span&gt;&lt;span style="font-size:100%;"&gt; (in a real application we will use instead a Listener implementing &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;ServletContextListener&lt;/span&gt; as I will show in a later tutorial). In Netbeans right click on the &lt;span style="font-style: italic;font-size:100%;" &gt;testrepositoryweb&lt;/span&gt;&lt;span style="font-size:100%;"&gt; and choose &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;New-&gt;Servlet&lt;/span&gt;&lt;span style="font-size:100%;"&gt; and enter the following:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fX-3QJKmySw/SUThAnoAWWI/AAAAAAAAAB8/orIIUIoPbi8/s1600-h/servlet1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 217px;" src="http://1.bp.blogspot.com/_fX-3QJKmySw/SUThAnoAWWI/AAAAAAAAAB8/orIIUIoPbi8/s320/servlet1.jpg" alt="" id="BLOGGER_PHOTO_ID_5279592063938091362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The source code for the newly created &lt;span style="font-style: italic;"&gt;JNDIRepositoryLogin&lt;/span&gt; servlet is (we are only implementing the &lt;span style="font-style: italic;"&gt;doGet&lt;/span&gt; method for the sake of this example):&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;import java.io.IOException;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;import javax.naming.*;&lt;br /&gt;import javax.jcr.Repository;&lt;br /&gt;import javax.jcr.RepositoryException;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;import javax.jcr.SimpleCredentials;&lt;br /&gt;&lt;br /&gt;public class JNDIRepositoryLogin extends HttpServlet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;protected void processRequest(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;throws ServletException, IOException&lt;br /&gt;{&lt;br /&gt;   response.setContentType(&amp;quot;text/html;charset=UTF-8&amp;quot;);&lt;br /&gt;   PrintWriter out = response.getWriter();&lt;br /&gt;   try&lt;br /&gt;   {}&lt;br /&gt;   finally { out.close(); }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;throws ServletException, IOException&lt;br /&gt;{&lt;br /&gt;   PrintWriter writer = response.getWriter();&lt;br /&gt;&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;     InitialContext ctx = new InitialContext();&lt;br /&gt;     Repository repository = (Repository) ctx.lookup (&amp;quot;jcr/testrepository&amp;quot;);&lt;br /&gt;&lt;br /&gt;     Session session = repository.login(new SimpleCredentials(&lt;br /&gt;         &amp;quot;anonymous&amp;quot;, &amp;quot;anonymous&amp;quot;.toCharArray()));&lt;br /&gt;&lt;br /&gt;     writer.println(&amp;quot;&amp;lt;h1&amp;gt;Success&amp;lt;/h1&amp;gt;&amp;quot;);&lt;br /&gt;     writer.println(&amp;quot;logged in as user: &amp;quot; + session.getUserID());&lt;br /&gt;     session.logout();&lt;br /&gt;     ctx.close();&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   catch(javax.naming.NamingException ex)&lt;br /&gt;   {&lt;br /&gt;     ex.printStackTrace(writer);&lt;br /&gt;   }&lt;br /&gt;   catch(javax.jcr.LoginException ex)&lt;br /&gt;   {&lt;br /&gt;     ex.printStackTrace(writer);&lt;br /&gt;   }&lt;br /&gt;   catch(javax.jcr.RepositoryException ex)&lt;br /&gt;   {&lt;br /&gt;     ex.printStackTrace(writer);&lt;br /&gt;   }&lt;br /&gt;   finally&lt;br /&gt;   {&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;  throws ServletException, IOException {&lt;br /&gt;      processRequest(request, response);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public String getServletInfo() {&lt;br /&gt;      return &amp;quot;Short description&amp;quot;;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;you can now launch your application and enter the URL:&lt;br /&gt;&lt;pre&gt;http://localhost:8080/testrepositoryweb/JNDIRepositoryLogin&lt;/pre&gt;You should see a web page displaying:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fX-3QJKmySw/SUTnQq7v-aI/AAAAAAAAACE/hOIQM6MA6FU/s1600-h/jndi_result.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 86px;" src="http://4.bp.blogspot.com/_fX-3QJKmySw/SUTnQq7v-aI/AAAAAAAAACE/hOIQM6MA6FU/s320/jndi_result.jpg" alt="" id="BLOGGER_PHOTO_ID_5279598936773884322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Datastore&lt;/h2&gt;The last feature we will set in this tutorial is the &lt;a href="http://wiki.apache.org/jackrabbit/DataStore"&gt;Datastore&lt;/a&gt; Setting up a Datastore is trivial, simply add the following entry after the Repository tag in you repository xml configuration file:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;DataStore class=&amp;quot;org.apache.jackrabbit.core.data.db.DbDataStore&amp;quot;&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;url&amp;quot; value=&amp;quot;jdbc:postgresql:testrepository&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;user&amp;quot; value=&amp;quot;postgres&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;password&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;databaseType&amp;quot; value=&amp;quot;postgresql&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;driver&amp;quot; value=&amp;quot;org.postgresql.Driver&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;minRecordLength&amp;quot; value=&amp;quot;1024&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;maxConnections&amp;quot; value=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;copyWhenReading&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;param name=&amp;quot;tablePrefix&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;   &amp;lt;/DataStore&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Don't forget to set the username and password matching your DB configuration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6577205860235779763-8595734333892434045?l=akjol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/8595734333892434045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6577205860235779763&amp;postID=8595734333892434045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/8595734333892434045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/8595734333892434045'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/2008/12/rmi-access-rmi-accessit-is-now-time-to.html' title='Glassfish + Jackrabbit + PostgreSQL (2)'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fX-3QJKmySw/SUTHr-qgpLI/AAAAAAAAABM/0rl3gM8_udA/s72-c/netbeans_1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6577205860235779763.post-1385833640923897386</id><published>2008-12-13T04:50:00.000-08:00</published><updated>2008-12-14T04:44:09.576-08:00</updated><title type='text'>Glassfish + Jackrabbit + PostgreSQL</title><content type='html'>This tutorial explains how to set up a Jackrabbit repository with Postgresql on Glassfish v3 and V2. I am using Ubuntu 8.10&lt;br /&gt;&lt;p&gt;&lt;/p&gt;I am going to use the &lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-webapp-1.5.0.war&lt;/a&gt; web application shipped with &lt;a href="http://jackrabbit.apache.org/"&gt;Jackrabbit 1.5.0&lt;/a&gt; to create a repository inside Glassfish.&lt;br /&gt;&lt;br /&gt;In the next tutorial, a simple web application will then be created using Netbeans 6.5 to show how  to programatically access the repository (insert and search) via Jndi from a servlet.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Repository set up in Glassfish&lt;/h2&gt;First of all, you need to copy the following libraries in the directory for Glassfish V3 Prelude:&lt;br /&gt;&lt;pre&gt; $GLASSFISH/glassfish/domains/$DOMAINNAME/lib/ext/&lt;br /&gt;&lt;/pre&gt;and for Glassfish V2 in:&lt;br /&gt;&lt;pre&gt; $GLASSFISH/domains/$DOMAINNAME/lib/ext/&lt;br /&gt;&lt;/pre&gt;where  $GLASSFISH is your glassfish installation directory (i.e. glassfish-v3-prelude) and $DOMAINNAME is your domain (domain1 is the default).&lt;br /&gt;&lt;br /&gt;The libraries are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://commons.apache.org/collections/"&gt;commons-collections-3.2.1.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://commons.apache.org/io/"&gt;commons-io-1.4.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://g.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"&gt;concurrent.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-api-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-core-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-jcr-commons-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-spi-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-spi-commons-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-text-extractors-1.5.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/javax/jcr/jcr/1.0/"&gt;jcr-1.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://logging.apache.org/log4j/1.2/download.html"&gt;log4j-1.2.15.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lucene.apache.org/"&gt;lucene-core-2.4.0.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pdfbox.org/"&gt;PDFBox-0.7.3.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://poi.apache.org/"&gt;poi-3.2-FINAL-20081019.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slf4j.org/download.html"&gt;slf4j-api-1.5.6.jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slf4j.org/download.html"&gt;slf4j-log4j12-1.5.5.jar&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I suggest you compile the &lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;Jackrabbit source&lt;/a&gt; using maven to get the needed jackrabbit libraries. The PDFBox and Poi libraries are for document text parsing and we will use them later.&lt;br /&gt;&lt;br /&gt;Restart your domain and deploy the &lt;a href="http://jackrabbit.apache.org/downloads.html#Downloads-v15"&gt;jackrabbit-webapp-1.5.0.war&lt;/a&gt; you can use the Glassfish admin web tool (usally at &lt;em&gt;http://localhost:4848/&lt;/em&gt;) to deploy, I will assume you have deployed with a Context Root set to &lt;em&gt;/jackrabbit&lt;/em&gt; with &lt;em&gt;port 8080&lt;/em&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;We can now test our installation by navigating to &lt;em&gt;http://localhost:8080/jackrabbit/&lt;/em&gt; in your web browser and you should see the page below:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fX-3QJKmySw/SUOxHZCz7uI/AAAAAAAAAA0/6EDNSw3uQ90/s1600-h/jackrabbit_start_page.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 241px;" src="http://2.bp.blogspot.com/_fX-3QJKmySw/SUOxHZCz7uI/AAAAAAAAAA0/6EDNSw3uQ90/s320/jackrabbit_start_page.jpg" alt="" id="BLOGGER_PHOTO_ID_5279257928748232418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice, the web application uses a configuration file &lt;em&gt;bootstrap.properties&lt;/em&gt; located in:&lt;br /&gt;&lt;pre&gt;   $GLASSFISH/glassfish/domains/$DOMAINNAME/config/jackrabbit&lt;br /&gt;&lt;/pre&gt;You have to modify this file in case you want to change the repository or any setting. If you want to re-deploy starting with a fresh configuration you can delete the folder.&lt;br /&gt;&lt;br /&gt;If you choose the default &lt;em&gt;jackrabbit&lt;/em&gt; repository it will be created in the same config directories we have just discussed for V3 Prelude:&lt;br /&gt;&lt;pre&gt;   $GLASSFISH/glassfish/domains/$DOMAINNAME/config/jackrabbit/repository&lt;/pre&gt;for V2:&lt;br /&gt;&lt;pre&gt; $GLASSFISH/domains/$DOMAINNAME/config/jackrabbit/repository&lt;br /&gt;&lt;/pre&gt;Alternatevely, you can select any directory your user has read/write permssion, from now onwards I will assume the repository has been created in&lt;br /&gt;&lt;pre&gt;   $HOME/testrepository&lt;br /&gt;&lt;/pre&gt; &lt;h2&gt;PostgreSQL Configuration&lt;/h2&gt;It is now time to configure the repository (which by default use the built-in &lt;a href="http://db.apache.org/derby/"&gt;Derby&lt;/a&gt; database) to use instead PostgreSQL.&lt;br /&gt;&lt;br /&gt;First of all, create a database named &lt;em&gt;testrepository&lt;/em&gt; I will create one using PgAdmin with user &lt;em&gt;postgres&lt;/em&gt; and template &lt;em&gt;postgres&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fX-3QJKmySw/SUO0dmieiBI/AAAAAAAAABE/ymrKarcHWnI/s1600-h/testrepository_db.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 257px; height: 320px;" src="http://2.bp.blogspot.com/_fX-3QJKmySw/SUO0dmieiBI/AAAAAAAAABE/ymrKarcHWnI/s320/testrepository_db.jpg" alt="" id="BLOGGER_PHOTO_ID_5279261608862713874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then add the jdbc postgresql driver &lt;a href="http://jdbc.postgresql.org/"&gt;postgresql-8.3-604.jdbc4.jar&lt;/a&gt; again in the directory (V3 Prelude):&lt;br /&gt;&lt;pre&gt;   $GLASSFISH/glassfish/domains/$DOMAINNAME/lib/ext/ &lt;/pre&gt;while for V2 in:&lt;br /&gt;&lt;pre&gt;  $GLASSFISH/domains/$DOMAINNAME/lib/ext/&lt;br /&gt;&lt;/pre&gt;&lt;a href="http://www.blogger.com/http%20There%20are%20various%20%3Ca%20href=" org="" jackrabbit="" persistencemanagerfaq=""&gt;PersistenceManager&lt;/a&gt; you can use, I prefer the Bundle Database PM.&lt;br /&gt;&lt;br /&gt;In order to switch from Derby to PostgresSQL, edit the configuration file&lt;br /&gt;&lt;pre&gt;   $HOME/testrepository/repository.xml&lt;br /&gt;&lt;/pre&gt;look for the two entries under &lt;em&gt;Workspace&lt;/em&gt; and &lt;em&gt;Versioning&lt;/em&gt;:&lt;br /&gt;&lt;pre&gt;   &amp;lt;PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager"&amp;gt;&lt;br /&gt;&amp;lt;param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/&amp;gt;&lt;br /&gt;&amp;lt;param name="schemaObjectPrefix" value="version_"/&amp;gt;&lt;br /&gt;&amp;lt;/PersistenceManager&amp;gt;&lt;br /&gt;&lt;/pre&gt;and substitute them with:&lt;br /&gt;&lt;pre&gt;   &amp;lt;PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager"&amp;gt;&lt;br /&gt;&amp;lt;param name="driver" value="org.postgresql.Driver"/&amp;gt;&lt;br /&gt;&amp;lt;param name="url" value="jdbc:postgresql://localhost:5432/testrepository"/&amp;gt;&lt;br /&gt;&amp;lt;param name="schema" value="postgresql"/&amp;gt;&lt;br /&gt;&amp;lt;param name="user" value="postgres"/&amp;gt;&lt;br /&gt;&amp;lt;param name="password" value=""/&amp;gt;&lt;br /&gt;&amp;lt;param name="schemaObjectPrefix" value="public"/&amp;gt;&lt;br /&gt;&amp;lt;param name="externalBLOBs" value="false"/&amp;gt;&lt;br /&gt;&amp;lt;/PersistenceManager&amp;gt;&lt;br /&gt;&lt;/pre&gt;Few things to be aware of, the &lt;em&gt;schema&lt;/em&gt; entry is not really a DB schema but more the "type of DB", on the other hand the &lt;em&gt;schemaObjectPrefix&lt;/em&gt; is truly the schema, in this example I am assuming we will use the default &lt;em&gt;public&lt;/em&gt; schema. Of course, in the &lt;em&gt;password&lt;/em&gt; enter your &lt;em&gt;postgres user&lt;/em&gt; password.&lt;br /&gt;&lt;br /&gt;Restart the Glassfish application server and if you use PgAdmin you should see the following tables being created:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fX-3QJKmySw/SUOy1HFyRAI/AAAAAAAAAA8/g5diXJ7ORFA/s1600-h/pgadmin_2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 188px;" src="http://4.bp.blogspot.com/_fX-3QJKmySw/SUOy1HFyRAI/AAAAAAAAAA8/g5diXJ7ORFA/s320/pgadmin_2.png" alt="" id="BLOGGER_PHOTO_ID_5279259813714478082" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6577205860235779763-1385833640923897386?l=akjol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/1385833640923897386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6577205860235779763&amp;postID=1385833640923897386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/1385833640923897386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/1385833640923897386'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/2008/12/glassfish-v3-prelude-jackrabbit.html' title='Glassfish + Jackrabbit + PostgreSQL'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fX-3QJKmySw/SUOxHZCz7uI/AAAAAAAAAA0/6EDNSw3uQ90/s72-c/jackrabbit_start_page.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6577205860235779763.post-85328966993826205</id><published>2008-11-15T02:26:00.001-08:00</published><updated>2008-12-14T01:46:24.203-08:00</updated><title type='text'>A Trip to Naryn Kyrgyzstan</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6577205860235779763-85328966993826205?l=akjol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akjol.blogspot.com/feeds/85328966993826205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6577205860235779763&amp;postID=85328966993826205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/85328966993826205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6577205860235779763/posts/default/85328966993826205'/><link rel='alternate' type='text/html' href='http://akjol.blogspot.com/2008/11/trip-to-naryn.html' title='A Trip to Naryn Kyrgyzstan'/><author><name>Emanuele</name><uri>http://www.blogger.com/profile/12660207490886180130</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
