<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?cat=Roller" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Mon, 8 Jun 2026 23:12:31 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/upgraded-to-roller-6-1</guid>
    <title>Upgraded to Roller 6.1.1</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/upgraded-to-roller-6-1</link>
    <pubDate>Sat, 30 Apr 2022 20:09:11 +0000</pubDate>
    <category>Roller</category>
    <category>java</category>
<description>&lt;p&gt;A note about this site: I just upgraded rollerweblogger.org to run the recently released&amp;nbsp;&lt;a href=&quot;https://rollerweblogger.org/project/entry/apache-roller-6-1-1&quot; target=&quot;_blank&quot;&gt;Roller 6.1.1&lt;/a&gt;, and Java 17. There was one snag. This site uses the Roller-JSPWiki plugin and old Lucene dependency in that plugin prevented Tomcat from loading Roller. It took me a couple of hours to figure out how to upgrade the plugin to use the latest version of JSPWiki. That fixed it.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller-6-released</guid>
    <title>Roller 6 released</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller-6-released</link>
    <pubDate>Tue, 31 Dec 2019 15:04:17 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
<description>&lt;p&gt;This latest release of Roller includes a new UI that uses&amp;nbsp;&lt;a href=&quot;https://getbootstrap.com/docs/3.3/&quot; target=&quot;_blank&quot;&gt;Twitter Bootstrap 3&lt;/a&gt; and is based on work I started in 2015 and first committed on December 21, 2015 with this commit:&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/rollarcus/commit/2da6c3c2e28419f68244e0c362c15be96013d5f9&quot; target=&quot;_blank&quot;&gt;2da6c3c2e28419f68244e0c362c15be96013d5f9&lt;/a&gt;. You can find the &lt;a href=&quot;https://rollerweblogger.org/project/entry/apache-roller-6-released&quot; target=&quot;_blank&quot;&gt;details on on the Roller project blog&lt;/a&gt;. I got lot of help along the way with testing, fixes, dependency upgrades, Java 11 support and more, so thanks to all that helped make this happen.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/digitalocean-kubernetes</guid>
    <title>Powered by Digital Ocean Kubernetes</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/digitalocean-kubernetes</link>
    <pubDate>Sun, 10 Feb 2019 22:42:05 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>digitalocean</category>
    <category>kubernetes</category>
    <category>roller</category>
<description>
&lt;p&gt;Just a note to say that I&amp;#39;ve switched this site over to &lt;a href=&quot;https://blog.digitalocean.com/digitalocean-releases-k8s-as-a-service/&quot;&gt;Digital Ocean Kubernetes&lt;/a&gt; service, which is in Limited Availability right now. &lt;/p&gt;


&lt;p&gt;Digital Ocean&amp;#39;s Kubernetes service is just as simple and well designed as the rest of Digital Ocean. I &lt;a href=&quot;https://rollerweblogger.org/roller/entry/powered-by-kubernetes&quot;&gt;mentioned before&lt;/a&gt; that I rolled my own Kubernetes cluster via Ansible and Kubeadm. Now I can delete all those config files and that&amp;#39;s a good thing. Plus, the price is right; I can get by with one $10/month node (1 CPU / 2 GB memory) and a $10/month load balancer.&lt;/p&gt;


&lt;p&gt;&lt;div style=&quot;margin:1em 0 1em 0;text-align:center;width:100%;&quot;&gt;&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/a352bcf3-b7d9-4f2d-821d-a3ae42e0b06c&quot; width=&quot;80%&quot; halign=&quot;middle&quot;&gt;&lt;/div&gt;&lt;/p&gt;


&lt;p&gt;To get this site up and running I had to deploy four things to my cluster. I installed the &lt;a href=&quot;https://www.nginx.com/products/nginx/kubernetes-ingress-controller/&quot;&gt;NGINX Ingress Controller&lt;/a&gt;, &lt;a href=&quot;https://cert-manager.readthedocs.io/en/latest/&quot;&gt;Cert-Manager&lt;/a&gt; for automatic creation of Let&amp;#39;s Encrypt TLS certs, &lt;a href=&quot;https://www.postgresql.org&quot;&gt;PostgreSQL&lt;/a&gt; and my custom build of &lt;a href=&quot;https://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. All of that went pretty smoothly and I didn&amp;#39;t run into and problems that I could blame on Digital Ocean. &lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller-6-0-0-snapshot</guid>
    <title>Roller 6.0.0-SNAPSHOT</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller-6-0-0-snapshot</link>
    <pubDate>Sat, 26 Jan 2019 22:13:38 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>asf</category>
<description>&lt;p&gt;Upgraded this site to Roller 6.0.0-SNAPSHOT today, which meant an hour of fiddling around with my private Docker registry, then giving up and using the one free private repository offered by DockerHub and then, another hour of futzing around trying to figure out my PostgreSQL JDBC driver doesn&amp;#39;t work anymore (I inadvertently upgraded from JDK 1.7 to 1.8) and why I can&amp;#39;t seem to upgrade it (Kubernetes caches Docker images unless you set imagePullPolicy to always). In the end, I got it working. This post is written in the yet to be officially release Apache Roller 6.0.0-SNAPSHOT version.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Side note&lt;/b&gt;: the new rich-text editor in Roller is now &lt;a href=&quot;https://summernote.org&quot;&gt;Summernote&lt;/a&gt; and it seems quite nice. I need to tweak it a bit because there is currently no way to set the font or add a link unless you switch to raw HTML mode.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller-6-snapshot</guid>
    <title>Roller&amp;#39;s new web UI</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller-6-snapshot</link>
    <pubDate>Mon, 21 Jan 2019 15:59:00 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>docker</category>
    <category>postgresql</category>
    <category>tomcat</category>
<description>&lt;p&gt;About three years ago I decided to modernize and improve the &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; web UI by rewriting the JSP pages to use the &lt;a href=&quot;https://github.com/struts-community-plugins/struts2-bootstrap&quot;&gt;Struts 2 Bootstrap&lt;/a&gt; tags, which use Twitter&amp;#39;s &lt;a href=&quot;https://getbootstrap.com/docs/3.3/components/&quot;&gt;Bootstrap v3&lt;/a&gt; components and JavaScipt. I also wanted to replace all the HTML &lt;code&gt;table&lt;/code&gt;-based formatting with &lt;code&gt;div&lt;/code&gt;&amp;#39;s and Bootstrap, do a bunch of other improvements and make Roller&amp;#39;s web UI less clunky and annoying.&lt;/p&gt;

&lt;p&gt;Converting Roller&amp;#39;s eight-five JSP pages was a big task and I did not have much time for it. That&amp;#39;s why it took three years. Ironically, the Roller modernization project leaves Roller three years out of date. Still, I think it is a huge improvement over the Roller v5 web UI and I want to get it released in Roller v6. Currently, this work is available as &lt;a href=&quot;https://github.com/apache/roller/pull/22&quot;&gt;Pull Request #22&lt;/a&gt; and you can find some screenshots there too. Here&amp;#39;s one:&lt;/p&gt;

&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/23986d06-37aa-48c1-8301-90419520953b&quot; alt=&quot;screenshot of Roller Edit Entry page&quot; style=&quot;max-width:30em;padding:1em;border:1px;&quot;&gt;

&lt;h4&gt;Try it with Docker-Compose&lt;/h4&gt;

&lt;p&gt;I also did some work to make it super-easy to try the Roller v6 snapshot pre-release for yourself, by using &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;. You don&amp;#39;t have to fiddle with Tomcat or PostgreSQL. You can find a simple Dockerfile for running Roller v2 snapshot and a &lt;b&gt;docker-compose.yml&lt;/b&gt; file linked below. And you can find a Docker image in my &lt;a href=&quot;https://cloud.docker.com/u/snoopdave/repository/docker/snoopdave/roller&quot;&gt;DockerHub repo&lt;/a&gt;.&lt;/p&gt;

If you want to try Roller v6 snapshot, here&amp;#39;s what you need to do:

&lt;div style=&quot;margin-left:2em;&quot;&gt;
&lt;p&gt;&lt;b&gt;1&lt;/b&gt; - If you don&amp;#39;t aleady have it, install Docker&lt;/p&gt;

&lt;p&gt;&lt;b&gt;2&lt;/b&gt; - Create a directory on your computer where you want Roller to store it&amp;#39;s data.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;3&lt;/b&gt; - Save this file &lt;a href=&quot;https://github.com/apache/roller/blob/0e77733a4567ad19926ea81b6d7afb0de376b908/deployment/docker-compose/docker-compose.yml&quot;&gt;&lt;b&gt;docker-compose.yml&lt;/b&gt;&lt;/a&gt; to that new directory.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;4&lt;/b&gt; - Open a shell in that new directory and run:&lt;/p&gt;

       &lt;p&gt;&lt;pre&gt;docker-compose up&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;5&lt;/b&gt; - Watch the PostgreSQL and Roller startup logs scroll by&lt;/p&gt;

&lt;p&gt;&lt;b&gt;6&lt;/b&gt; - When the log scroll slows go to http://localhost:8080 to access Roller and go through the initial setup.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Alternatively, if you want to try Roller the hard way, you can get the regular-style v6 SNAPSHOT release files here &lt;a href=&quot;https://dist.apache.org/repos/dist/dev/roller/roller-6.0/v6.0.0/&quot;&gt;roller/roller-6.0/v6.0.0&lt;/a&gt;.&lt;p&gt;

&lt;h4&gt;Let us know how it goes&lt;/h4&gt;

&lt;p&gt;I hope you&amp;#39;ll give Roller v6 snapshot a try and let the project know how it can be improved for your use.  Send feedback to the Roller &lt;a href=&quot;https://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists&quot;&gt;mailing lists&lt;/a&gt; or ttweet at us at &lt;a href=&quot;https://twitter.com/apache_roller&quot;&gt;@apache_roller&lt;/a&gt;.&lt;/p&gt;

&lt;br&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/powered-by-postgresql</guid>
    <title>Powered by Postgresql and Docker Swarm</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/powered-by-postgresql</link>
    <pubDate>Tue, 7 Nov 2017 21:52:40 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>docker</category>
    <category>postgresql</category>
    <category>swarm</category>
<description>It was somewhat painful but due to some problems with MySQL and Docker, and some general uneasiness with MySQL, I switched this site from MySQL v5.7 to &lt;a href=&quot;https://www.postgresql.org&quot;&gt;PostgreSQL&lt;/a&gt; v10. I also switched over to &lt;a href=&quot;https://docs.docker.com/engine/swarm/&quot;&gt;Docker Swarm&lt;/a&gt;. Here&amp;#39;s the Docker-Compose file that I&amp;#39;m using now to run this site:

&lt;pre&gt;
version: &amp;#39;3.2&amp;#39;

services:

   postgresql:
      image: &amp;quot;postgres:10.0&amp;quot;
      ports:
         - &amp;quot;5432:5432&amp;quot;
      deploy:
         resources:
           limits:
              memory: 50M
      volumes:
         - type: bind
           source: /var/lib/postgresql/data
           target: /var/lib/postgresql/data
      environment:
        - POSTGRES_USER=roller
        - POSTGRES_DB=rollerdb
        - POSTGRES_PASSWORD_FILE=/run/secrets/pg_passwd
      secrets:
        - source: db_passwd
          target: pg_passwd

   roller:
      image: &amp;quot;rwo:latest&amp;quot;
      ports:
        -  &amp;quot;80:8080&amp;quot;
      depends_on:
        - postgresql
      deploy:
         resources:
           limits:
              memory: 800M
      volumes:
        - type: bind
          source: /var/lib/roller
          target: /var/lib/roller
      environment:
        - DB_HOST=postgresql
        - STORAGE_ROOT=/var/lib/roller
        - JAVA_OPTS=&amp;quot;-Xmx700m&amp;quot;

secrets:
  db_passwd:
    file: ./db_passwd.txt
&lt;/pre&gt;

It was a pain, but sometimes pain = gain and I learned a lot. I&amp;#39;m hoping the site will be a bit more stable now. </description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/modernizing-the-roller-ui</guid>
    <title>Modernizing the Roller UI</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/modernizing-the-roller-ui</link>
    <pubDate>Sat, 11 Jun 2016 18:28:36 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>bootstrap</category>
<description>
&lt;p&gt;&lt;a href=&quot;http://getbootstrap.com&quot;&gt;&lt;/a&gt; I don&amp;#39;t blog very often but I still find time to work on my blog&amp;#39;s software: &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. &lt;/p&gt;


&lt;p&gt;Recently, I decided to focus on improving Roller&amp;#39;s ancient Struts 2-based user interface (UI). I had considered adding a comprehensive API to Roller and building a new UI based on that API, but wow that is a huge amount of work. Instead, I decided to modernize the Roller UI by using Twitter&amp;#39;s &lt;a href=&quot;http://getbootstrap.com&quot;&gt;Bootstrap&lt;/a&gt; components and CSS styles.&lt;/p&gt;


&lt;p&gt;So far, I&amp;#39;ve devoted a couple of weekends to this work and made some pretty good progress. I&amp;#39;m about half-way done. I&amp;#39;m using the &lt;a href=&quot;https://cwiki.apache.org/confluence/display/S2PLUGINS/Bootstrap+Plugin&quot;&gt;Struts2-Bootstrap&lt;/a&gt; plugin, adding better client-side form validation with JavaScript and doing my best to improve the overall user experience. You can see an album of the pages I&amp;#39;ve done so far on Flickr: &lt;a href=&quot;https://www.flickr.com/photos/snoopdave/albums/72157666773620323&quot;&gt;&lt;br&gt;
Roller UI with Bootstrap&lt;/a&gt;. &lt;/p&gt;


&lt;p&gt;I would love any contributions, so if you are interested in helping out, please submit Pull Requests against the &lt;a href=&quot;https://github.com/apache/roller/tree/bootstrap-ui&quot;&gt;bootstrap-ui&lt;/a&gt; branch in the Apache Roller repo on GitHub.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/moved-blog-to-digitalocean</guid>
    <title>Now hosted on DigitalOcean</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/moved-blog-to-digitalocean</link>
    <pubDate>Sat, 2 May 2015 13:46:00 +0000</pubDate>
    <category>Roller</category>
    <category>cloud</category>
<description>
&lt;p&gt;After &lt;a href=&quot;http://rollerweblogger.org/roller/entry/if_you_ve_been_following&quot;&gt;thirteen years&lt;/a&gt; of hosting this blog at &lt;a href=&quot;http://www.kattare.com/&quot;&gt;Kattare.com&lt;/a&gt;, I&amp;#39;ve moved it over to &lt;a href=&quot;http://digitalocean.com&quot;&gt;DigitalOcean&lt;/a&gt;. Kattare was great, but nowadays I prefer managing my own server and DigitalOcean makes that very easy -- and costs less ($10/month vs. $26/month at Kattare).&lt;/p&gt;


&lt;p&gt;The move was easy, or as easy as setting up OpenJDK 8, Tomcat 7 and MySQL 5.5 can be. I only hit one little snag. Once I added the Roller WAR to Tomcat, Tomcat would hang on startup. I used jstack to look at the Java VM threads and found some clues that led me to a post on ServerFault.com: &lt;a href=&quot;http://serverfault.com/questions/655616/tomcat7-hangs-on-deploying-apps&quot;&gt;Tomcat 7 hangs on deploying apps&lt;/a&gt;. As recommended in that post, I added &lt;code&gt;-Djava.security.egd=file:/dev/./urandom&lt;/code&gt; to my CATALINA_OPTS and was back in action.&lt;/p&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/shiro-not-spring</guid>
    <title>Apache Shiro for authentication in Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/shiro-not-spring</link>
    <pubDate>Mon, 9 Feb 2015 07:27:50 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>opensource</category>
    <category>shiro</category>
<description>&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/80d2d56d-a8cd-43f2-825d-d0474b67139b&quot; alt=&quot;Shiro logo&quot; align=&quot;right&quot;&gt;


&lt;p&gt;
This is the third of my 2014 side projects that I&amp;#39;m sharing and one that involves the 
&lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; blog server and the 
&lt;a href=&quot;http://shiro.apache.org&quot;&gt;Apache Shiro&lt;/a&gt; security framework. 

You might find this interesting if you&amp;#39;re considering using Shiro for authentication and authorization, or if your interested in how security works in Apache Roller.
&lt;/p&gt;


&lt;p&gt;
Inspired by my work with &lt;a href=&quot;http://emberjs.com&quot;&gt;Ember.js&lt;/a&gt; in Fall 2014, I started thinking about what it would take to build an Ember.js-based editor/admin interface for Apache Roller.

To do that, I&amp;#39;d need to add a comprehensive REST API to Roller, and I&amp;#39;d need a way to implement secrity for the new API.

I&amp;#39;ve enjoyed working with &lt;a href=&quot;http://shiro.apache.org&quot;&gt;Apache Shiro&lt;/a&gt;, so I decided that a good first step would be to figure out how to use Apache Shiro in Roller for Roller&amp;#39;s existing web interface.
&lt;/p&gt;

&lt;p&gt;
Working over the winter break I was able to replace Roller&amp;#39;s existing Spring security implementation with Shiro and remove all Spring dependencies from my &lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;Rollarcus&lt;/a&gt; fork of Roller. 

Below I&amp;#39;ll describe what I had to do get Shiro working for Form-base Authentication in Roller.
&lt;/p&gt;

&lt;h3&gt;Creating a Shiro Authorizing Realm&lt;/h3&gt;

&lt;p&gt;The first step in hooking Shiro into Roller is to implement a Shiro interface called &lt;code&gt;ShiroAuthorizingRealm&lt;/code&gt;. 

This interface enables Shiro to do username and password checks for users when they attempt to login, and to get the user&amp;#39;s roles. 
&lt;/p&gt;

&lt;p&gt;
Below is the first part of the class, which includes the &lt;code&gt;doGetAuthenticationInfo()&lt;/code&gt; method, which returns the &lt;code&gt;AuthenticationInfo&lt;/code&gt; for a user specified by an &lt;code&gt;AuthenticationToken&lt;/code&gt; that includes the user&amp;#39;s username. 

In other words, this method allows Shiro to look-up a user by providing a username and get back the user&amp;#39;s (hashed) password, so that Shiro can validate a user&amp;#39;s username and password.
&lt;/p&gt;

&lt;b&gt;ShiroAuthorizingRealm.java (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/java/org/apache/roller/weblogger/auth/ShiroAuthorizingRealm.java&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
public class ShiroAuthorizingRealm extends AuthorizingRealm {

    public ShiroAuthorizingRealm(){
        setName(&amp;quot;ShiroAuthorizingRealm&amp;quot;);
        setCredentialsMatcher(
            new HashedCredentialsMatcher(Sha1Hash.ALGORITHM_NAME));
    }

    @Override
    public AuthenticationInfo doGetAuthenticationInfo(
        AuthenticationToken authToken) throws AuthenticationException {

        UsernamePasswordToken token = (UsernamePasswordToken) authToken;

        User user;
        try {
            user = loadUserByUsername( token.getUsername() );

        } catch (WebloggerException ex) {
            throw new AuthenticationException(
                &amp;quot;Error looking up user &amp;quot; + token.getUsername(), ex);
        }

        if (user != null) {
            return new SimpleAuthenticationInfo( 
                user.getUserName(), user.getPassword(), getName());

        } else {
            throw new AuthenticationException(
                &amp;quot;Username not found: &amp;quot; + token.getUsername());
        }
    }

&lt;/pre&gt;

&lt;p&gt;In the code above you can see how we pull the username out of the &lt;code&gt;authToken&lt;/code&gt; provided by Shiro and we call a method, &lt;code&gt;loadUserByUserName()&lt;/code&gt;, which uses Roller&amp;#39;s Java API to load a Roller user object specified by name.&lt;/p&gt;

&lt;p&gt;The next method of interest is &lt;code&gt;doGetAuthorizationInfo()&lt;/code&gt;, which allows Shiro to look-up a user&amp;#39;s Role. This allows Shiro to detmerine if the user is a Roller admin user or a blog editor.&lt;/p&gt;

&lt;b&gt;ShiroAuthorizingRealm.java (continued)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;

    public AuthorizationInfo doGetAuthorizationInfo(
        PrincipalCollection principals) {

        String userName = (String)
            (principals.fromRealm(getName()).iterator().next());

        User user;
        try {
            user = loadUserByUsername( userName );
        } catch (WebloggerException ex) {
            throw new RuntimeException(&amp;quot;Error looking up user &amp;quot; + userName, ex);
        }

        Weblogger roller = WebloggerFactory.getWeblogger();
        UserManager umgr = roller.getUserManager();

        if (user != null) {
            List roles;
            try {
                roles = umgr.getRoles(user);
            } catch (WebloggerException ex) {
                throw new RuntimeException(
                    &amp;quot;Error looking up roles for user &amp;quot; + userName, ex);
            }
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
            for ( String role : roles ) {
                info.addRole( role );
            }
            log.debug(&amp;quot;Returning &amp;quot; + roles.size() 
                + &amp;quot; roles for user &amp;quot; + userName + &amp;quot; roles= &amp;quot; + roles);
            return info;

        } else {
            throw new RuntimeException(&amp;quot;Username not found: &amp;quot; + userName);
        }
    }
&lt;/pre&gt;

&lt;p&gt;In the code above you can see that we use the &lt;code&gt;loadUserByUsername()&lt;/code&gt; too look-up a user by username, then we use Roller&amp;#39;s Java API to get the user&amp;#39;s roles. We add those roles to an instance of the Shiro class &lt;code&gt;SimpleAuthorizationInfo&lt;/code&gt; and return it to Shir.&lt;/p&gt;

&lt;h3&gt;Creating a Shiro Authorizing Filter&lt;/h3&gt;

&lt;p&gt;Now that we&amp;#39;ve implementated a realm, we&amp;#39;ve provided Shiro with everything needed to authenticate Roller users and get access to Roller user role information. Next, we need to configure Shiro to enforce roles for the URL apths found in Roller. Shiro includes a &lt;code&gt;RolesAuthorizationFilter&lt;/code&gt;, which is close to what we need but not exactly right for Roller. I had to extend Shiro&amp;#39;s roles filter so that we can allow a user who has any (not all) of the required roles for a resource.&lt;/p&gt;

&lt;b&gt;RollerRolesAuthorizationFilter.java (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/java/org/apache/roller/weblogger/rest/auth/RollerRolesAuthorizationFilter.java&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
public class RollerRolesAuthorizationFilter 
    extends RolesAuthorizationFilter {

    @Override
    public boolean isAccessAllowed( 
        ServletRequest request, 
        ServletResponse response, 
        Object mappedValue) throws IOException {

        final Subject subject = getSubject(request, response);
        final String[] roles = (String[]) mappedValue;

        if (roles == null || roles.length == 0) {
            return true;
        }

        // user is authorized if they have ANY of the roles
        for (String role : roles) {
            if (subject.hasRole(role)) {
                return true;
            }
        }
        return false;
    }
}
&lt;/pre&gt;


&lt;h3&gt;Configuring Shiro for Roller&lt;/h3&gt;

&lt;p&gt;Now that we&amp;#39;ve seen the Java code needed to hook Shiro into Roller, lets look at how we configure Shiro to use that code. We do that using the Shiro configuration file: shiro.ini, as shown below.&lt;/p&gt;

&lt;b&gt;shiro.ini (&lt;a href=&quot;https://github.com/snoopdave/rollarcus/blob/shiro_not_spring/app/src/main/resources/shiro.ini&quot;&gt;link&lt;/a&gt;)&lt;/b&gt;
&lt;pre class=&quot;brush:js&quot;&gt;
[main]

defaultRealm = org.apache.roller.weblogger.auth.ShiroAuthorizingRealm
securityManager.realms = $defaultRealm

cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
securityManager.cacheManager = $cacheManager

authc = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc.loginUrl = /roller-ui/login.rol
authc.successUrl = /roller-ui/menu.rol

rollerroles = org.apache.roller.weblogger.rest.auth.RollerRolesAuthorizationFilter

[urls]

/roller-ui/login.rol          = authc
/roller-ui/login-redirect.rol = authc, rollerroles[admin,editor]
/roller-ui/profile**          = authc, rollerroles[admin,editor]
/roller-ui/createWeblog**     = authc, rollerroles[admin,editor]
/roller-ui/menu**             = authc, rollerroles[admin,editor]
/roller-ui/authoring/**       = authc, rollerroles[admin,editor]
/roller-ui/admin/**           = authc, rollerroles[admin]
/rewrite-status/**            = authc, rollerroles[admin]
/roller-services/rest/**      = authcBasic, rollerroles[admin,editor]
&lt;/pre&gt;


&lt;p&gt;
In the configuration file above, you see how we hook in the new &lt;code&gt;ShiroAuthorizingRealm&lt;/code&gt; on line 3.  

The next couple lines are boiler-plate code to hook in Shiro&amp;#39;s caching mechanism and then, on line 9, we configure an authentication method called &lt;code&gt;authc&lt;/code&gt;, which is configured to use Shiro&amp;#39;s Form Authentication feature. 

And, on line 13, we hook in our new &lt;code&gt;RollerRolesAuthorizationFilter&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Next, we tell Shiro that the login page for Roller is &lt;code&gt;/roller-ui/login.rol&lt;/code&gt; and which page to direct a user to on a successful login, &lt;code&gt;/roller-ui/menu.rol&lt;/code&gt;, if the user did not specify which page they wanted to access.

And finally, on lines 17-25, you see the list of Roller URL patterns that need protection, which authentication method to use (authc or authcBasic) and the authorization filter and roles required for access to the URL pattern.
&lt;/p&gt;


&lt;h3&gt;Wrapping up...&lt;/h3&gt;

&lt;p&gt;
That&amp;#39;s all there is to the story of Roller and Shiro so far. 

I was able to get Roller&amp;#39;s form-based authentication working with Shiro, but I did not try to test with OpenID or LDAP, so I assume more work will be necessary to get them working. 

I did the work in my experimental 
&lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;Rollarcus&lt;/a&gt; fork of Roller. 

You can get the code from the 
&lt;a href=&quot;https://github.com/snoopdave/rollarcus/tree/shiro_not_spring&quot;&gt;shiro_not_spring&lt;/a&gt; branch. 

Pull requests are quite welcome as are suggestions for improvement. 

Please let me know if you see anything wrong in the above code.
&lt;/p&gt;

&lt;p&gt;
This work may not find its way into Roller proper, but it plays a part in my the next side-project that I will share: A REST API for Roller with JAX-RS. 
&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/upgraded_to_latest_5_1</guid>
    <title>Upgraded to latest 5.1.0-SNAPSHOT </title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/upgraded_to_latest_5_1</link>
    <pubDate>Sun, 3 Nov 2013 11:26:07 +0000</pubDate>
    <category>Roller</category>
<description>&lt;p&gt;Just a quick note about this site:&lt;/p&gt;

&lt;p&gt;Today I upgraded this site to the latest Roller 5.1.0-SNAPSHOT (unreleased) code base. I did this to fix a couple of vulnerabilities found recently by researchers from &lt;a href=&quot;http://www.coverity.com/&quot;&gt;Coverity&lt;/a&gt; (thanks Coverity!).&lt;/p&gt;

&lt;p&gt;The Roller team fixed the vulnerabilities reported by Coverity in both the Roller 5.1-SNAPSHOT (unreleased)  and the Roller 5.0.x branch. If you&amp;#39;re running Roller, you should upgrade to Roller 5.0.1 immediately.&lt;/p&gt;

&lt;p&gt;See also: &lt;a href=&quot;http://rollerweblogger.org/project/entry/apache_roller_5_0_2&quot;&gt;Apache Roller 5.0.2 security fix release now available&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s been while since I upgraded this site (or even blogged here) so the upgrade was a little painful. When I first upgraded I found that the JSPWiki plugin was broken and the site would not even load. Turns out, I was using an archaic copy of the JSPWiki jar and it was compiled against an equally archaic version of Lucene. Since we recently upgraded the version of Lucene included in Roller, this broke things. I fixed this by upgrading the Roller JSPWiki plugin to use the latest code from Apache JSPWiki. I also created a Github repo with the new JSPWiki code, which you can find here: &lt;a href=&quot;https://github.com/snoopdave/roller-jspwiki-plugin&quot;&gt;Roller JSPWiki Plugin on Github.&lt;/a&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/10_years_ago</guid>
    <title>10 years ago today</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/10_years_ago</link>
    <pubDate>Tue, 17 Apr 2012 07:41:07 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>blogging</category>
    <category>ibm</category>
    <category>java</category>
    <category>oracle</category>
<description>&lt;p&gt;&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/d41c26ed-d162-4b37-b9a5-65fccc404303&quot; alt=&quot;O&amp;#39;Reilly logo&quot; align=&quot;right&quot;&gt;Ten years ago on this day, O&amp;#39;Reilly published an article that I wrote called &lt;a href=&quot;http://onjava.com/pub/a/onjava/2002/04/17/wblogosj2ee.html&quot;&gt;Building an Open Source J2EE Weblogger&lt;/a&gt;, the article that introduced the Roller weblogger (now known as &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;) to the world. It changed my career and my life in a bunch of nice ways and 10 years later I&amp;#39;m still benefiting from my choice to create Roller and write that article. So you can get a taste of the times, here&amp;#39;s the intro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://onjava.com/pub/a/onjava/2002/04/17/wblogosj2ee.html&quot;&gt;Building an Open Source J2EE Weblogger&lt;/a&gt;: As a Java developer, you should be aware of the tremendous wealth of open source development software that is available for your use -- even if you have no desire to release any of your own software as open source. In this article, I will introduce you to some of the most useful open source Java development tools by showing you how I used these tools to develop a complete database-driven Web application called Roller.&lt;/p&gt;

&lt;p&gt;Roller fits into the relatively new category of software called webloggers: applications that make it easy for you to maintain a weblog, also known as a blog -- a public diary where you link to recent reading on the Web and comment on items of interest to you.&lt;/p&gt;

&lt;p&gt;The Roller Web application allows you to maintain a Web site that consists of a weblog, an organized collection of favorite Web bookmarks, and a collection of favorite news feeds. You can define Web pages to display your weblog, bookmarks, and news feeds. By editing the HTML templates that define these pages, you have almost total control over the layout and appearance of these pages. Most importantly, you can do all of this without leaving the Roller Web application -- no programming is required.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;ve written and talked about Roller and the history of Roller numerous times. If you&amp;#39;re interested in learning more about it here&amp;#39;s my most recent Roller presentation, which covers Roller history in some detail:&lt;/p&gt;


&lt;div style=&quot;width:425px;&quot; id=&quot;__ss_2573296&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px;&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/snoopdave/whats-new-in-roller5&quot; title=&quot;Whats New In Roller5&quot; target=&quot;_blank&quot;&gt;Whats New In Roller5&lt;/a&gt;&lt;/strong&gt;  &lt;div style=&quot;padding:5px 0 12px;&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/snoopdave&quot; target=&quot;_blank&quot;&gt;snoopdave&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;


&lt;p&gt;These days, Roller isn&amp;#39;t really thriving as an open source project. Wordpress became the de facto standard blogging package and then micro-blogging took over the world. There are only a couple of active committers and most recent contributions have come via student contributions. Though IBM, Oracle and other companies still use it heavily, they do not contribute back to the project. If you&amp;#39;re interested in contributing to Roller or becoming part of the Apache Software Foundation, then &lt;a href=&quot;http://rollerweblogger.org/project/entry/roller_needs_you&quot;&gt;Roller needs YOU!&lt;/a&gt;.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/rollarcus_9_to_2</guid>
    <title>Rollarcus: from 9 to 2</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/rollarcus_9_to_2</link>
    <pubDate>Tue, 20 Dec 2011 07:56:37 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>rollarcus</category>
<description>&lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/b4a4fc0e-1e57-49cb-8c3d-893224f45694&quot; alt=&quot;rollarcus github logo&quot; align=&quot;right&quot;&gt;
&lt;/a&gt;

&lt;p&gt;I made some progress in Rollarcus over the past couple of weekends, but not a lot. This makes me wonder how I ever found the &amp;quot;nights and weekends&amp;quot; to get Roller started in the first place, but that&amp;#39;s a different topic.&lt;/p&gt;

&lt;p&gt;What I&amp;#39;ve done so far in Rollarcus is to simplify things. While I was at Sun, we split Roller up into a number of parts: a weblogger part for blogging, a planet part for RSS/Atom aggregation, a core part for things common to both. After Sun, I worked to move Roller to Maven and further split things up into a total of 9 Maven modules including an assembly for building the release. Now, I think that all these modules are unnecessary -- we never shipped a Roller-Planet application and nobody wants to use parts of Roller -- and even if they did, the modules did not really help.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the before view: &lt;a href=&quot;https://github.com/apache/roller&quot;&gt;apache/roller&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the after view: &lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;snoopdave/rollarcus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, in Rollerarcus, I&amp;#39;ve merged all the modules. Except for one &amp;quot;test utilities&amp;quot; module, all Java code, JSPs and other code is now in one module and much easier to deal with. Next, I&amp;#39;m going to attack the (what I consider to be) unnecessary dependencies and drastically reduce the number of jars in WEB-INF.&lt;/p&gt;

&lt;p style=&quot;color:red;&quot;&gt;&lt;b&gt;UPDATE&lt;/b&gt;: The most significant of the changes that I made in Rollarcus have been applied by to Apache Roller and today (August 18, 2013) I removed the Rollarcus repository from Github.&lt;/p&gt; </description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/fork_it_all</guid>
    <title>Fork it all</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/fork_it_all</link>
    <pubDate>Sat, 3 Dec 2011 11:08:29 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>rollarcus</category>
<description>&lt;p&gt;I just forked Roller on Github.&lt;/p&gt;

&lt;p&gt;The new project is called &lt;a href=&quot;https://github.com/snoopdave/rollarcus&quot;&gt;Rollarcus&lt;/a&gt; and is mostly just an experiment and, I hope, a learning experience. I&amp;#39;ve got some ideas about stripping Roller down to it&amp;#39;s core and making it more fun and easy to develop and deploy. We&amp;#39;ll see how far I get.&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/f131bd82-22b3-41fa-967f-a87450aff1f7&quot; alt=&quot;arcus rolling cloud&quot;&gt;&lt;br&gt;
&lt;p&gt;In case you don&amp;#39;t already know, an &lt;a href=&quot;http://en.wikipedia.org/wiki/Arcus_cloud&quot;&gt;arcus&lt;/a&gt; cloud is a low, horizontal cloud formation.&lt;/p&gt;


&lt;p style=&quot;color:red;&quot;&gt;&lt;b&gt;UPDATE&lt;/b&gt;: The most significant of the changes that I made in Rollarcus have been applied by to Apache Roller and today (August 18, 2013) I removed the Rollarcus repository from Github.&lt;/p&gt; </description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/upgraded_to_roller_5_1</guid>
    <title>Upgraded to Roller 5.1-dev</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/upgraded_to_roller_5_1</link>
    <pubDate>Sat, 26 Nov 2011 14:19:28 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>mobile</category>
<description>&lt;p&gt;I just upgraded this site to Roller 5.1-dev, Subversion rev 1175172. This unreleased version of Roller includes new mobile theming capability (mentioned in my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_and_gsoc_2011&quot;&gt;previous post&lt;/a&gt;), allowing a theme to define both a standard and a &amp;quot;mobile&amp;quot; version of each weblog page. I haven&amp;#39;t added mobile pages for my blog yet, but that is what I plan to do next.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_and_gsoc_2011</guid>
    <title>GSOC 2011: Mobile-enabled themes for Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_and_gsoc_2011</link>
    <pubDate>Sat, 3 Sep 2011 16:37:42 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>google</category>
    <category>gsoc</category>
    <category>mobile</category>
    <category>opensource</category>
<description>&lt;p&gt;
I&amp;#39;m going to break blog silence now to tell you about Apache Roller and &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Google Summer of Code&lt;/a&gt; 2011, which just wrapped up about a week ago. 
&lt;/p&gt;

&lt;a href=&quot;http://code.google.com/soc/&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/2e6823f1-1b5e-43e2-9396-3d4318699968&quot; alt=&quot;GSOC logo&quot; vspace=&quot;5&quot; hspace=&quot;5&quot;&gt;&lt;/a&gt;

&lt;p&gt;
This year we were very fortunate to get a another highly motivated and smart student, Shelan Perera, and an good proposal as well: Mobile-enabled Templates. Over the summer Shelan designed and implemented a new feature for the Roller blog server, one that enables theme authors to provide an alternative &amp;quot;mobile&amp;quot; template for each page template in a Roller blog theme. You can see a screenshot of the new Edit Template page in Shelan&amp;#39;s blog &lt;a href=&quot;http://rollermobile.blogspot.com/2011/08/how-to-change-template-codes-in-roller.html&quot;&gt;How to change template codes in Roller&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Now, when a page request comes into Roller, Shelan&amp;#39;s code determines if it&amp;#39;s from a mobile device and, if it is, switches to a mobile template, if one is available. There&amp;#39;s also an easy way for template authors to create a button to allow users to switch to the &amp;quot;Standard&amp;quot; site instead of the mobile version. The screenshot on the right, of Roller with a mobile theme comes from Shelan&amp;#39;s most &lt;a href=&quot;http://rollermobile.blogspot.com/2011/08/roller-mobile-themes-is-popping-up.html&quot;&gt;recent blog&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/f5800774-52f9-4f13-bdc4-7efd2e8eb4f0&quot; alt=&quot;screenshot of a mobile Roller theme&quot;&gt;
&lt;/p&gt;

&lt;p&gt;
It was an honor to act as mentor for this project, and fun talking to Shelan via Skype most Fridays. I&amp;#39;m looking forward to getting this on my blog, and getting this cool new feature into an Apache Roller 5.1 release sometime soon. Thanks, Shelan! And, thanks to Google for running the most excellent &lt;a href=&quot;http://code.google.com/soc/&quot;&gt;Summer of Code&lt;/a&gt; program.
&lt;/p&gt;


</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_5_0_released</guid>
    <title>Apache Roller 5.0 released</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_5_0_released</link>
    <pubDate>Wed, 25 May 2011 14:06:00 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>asf</category>
    <category>opensource</category>
<description>&lt;p&gt;&lt;i&gt;(cross-posted from the Roller project blog)&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;
&lt;p&gt;Here&amp;#39;s some more happy Roller news. Apache Roller 5.0 has been released! 
&lt;/p&gt;
&lt;p&gt;http://rollerweblogger.org/project/mediaresource/3cdaff7b-2745-4dac-89c9-151a3a1ccf26&amp;#39; 
align=&amp;#39;right&amp;#39; style=&amp;#39;padding:1em&amp;#39; /&amp;gt;
&lt;/p&gt;
&lt;p&gt;The major new feature in Roller 5.0 is Media Blogging, a set of enhancements to Roller&amp;#39;s file upload and management capabilities. Also included in 5.0 are simple multi-site support, OpenID and ~OAuth support for Roller&amp;#39;s AtomPub interface. All major dependencies have been updated and Roller now uses Maven for build and dependency management. You can find a summary of &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/What%27s+new+in+Roller+5.0&quot;&gt;Roller 5.0&amp;#39;s new features&lt;/a&gt; on the Roller wiki.
&lt;/p&gt;
&lt;p&gt;The road to Roller 5.0 has been a long one and if you are interested the history, you might want to check Dave Johnson&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://www.slideshare.net/snoopdave/whats-new-in-roller5&quot;&gt;What&amp;#39;s New in Roller 5.0&lt;/a&gt; presentation from ApacheCon US 2009. Roller 5.0 includes contributions from contributors from Google Summer of Code, San Jose State Univ. and the usual case of Roller committers. Thanks to all who contributed to Roller 5.0 over the years.
&lt;/p&gt;
&lt;p&gt;To download Apache Roller 5.0 and documentation, visit the &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org/downloads.html&quot;&gt;Apache Roller download page&lt;/a&gt; at the Apache Software Foundation&amp;#39;s website.
&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/welcome_new_roller_committer_shelan</guid>
    <title>Welcome new Apache Roller committer Shelan Perera</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/welcome_new_roller_committer_shelan</link>
    <pubDate>Mon, 23 May 2011 17:53:33 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>gsoc</category>
    <category>mobile</category>
    <category>roller</category>
<description>&lt;p&gt;&lt;i&gt;(cross-posted from the Roller project blog)&lt;/i&gt;
&lt;/p&gt;&lt;p&gt;
&lt;p&gt;Here&amp;#39;s some happy news. A new committer has joined the Apache Roller project. Shelan Perera has been helping out on the mailing lists, submitting fixes and recently won a Google Summer of Code (GSOC) project to add mobile blogging features to Roller. He was nominated for committer-ship and voted in on May 5, 2011.
&lt;/p&gt;
&lt;p&gt;Shelan&amp;#39;s GSOC project is to add mobile theming capabilities to Roller. You can find the &lt;a class=&quot;external&quot; href=&quot;http://socghop.appspot.com/gsoc/proposal/review/google/gsoc2011/shelan/1&quot;&gt;Mobile Theming for Roller&lt;/a&gt; proposal on the GSOC website. Shelan is seeking feedback on requirements and design for the project, and keeping the community in the loop by running a blog to journal his progress: &lt;a class=&quot;external&quot; href=&quot;http://rollermobile.blogspot.com&quot;&gt;Apache Roller Mobile Platform&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Welcome Shelan!&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_5_and_websphere_8</guid>
    <title>Roller 5 and WebSphere 8 (beta)</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_5_and_websphere_8</link>
    <pubDate>Wed, 9 Feb 2011 22:18:55 +0000</pubDate>
    <category>Roller</category>
    <category>java</category>
    <category>javaee</category>
    <category>websphere</category>
<atom:summary type="html">&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/8413ae9f-d4a2-418a-9d37-0fab7644e413&quot; alt=&quot;Websphere logo&quot; align=&quot;right&quot;&gt;In my quest to get Roller running on the latest in Java EE servers, the last server I tacked was the &lt;a href=&quot;http://www-01.ibm.com/software/webservers/appserv/was/&quot;&gt;WebSphere Application Server&lt;/a&gt;. Unlike Glassfish and JBoss, WebSphere&amp;#39;s Java EE 6 offering is not available in final form yet. Java EE 6 support is coming in WebSphere 8. So, for this exercise I used the WebSphere 8 beta, which was made &lt;a href=&quot;http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14482785&quot;&gt;available in July 2010&lt;/a&gt;. In this blog I&amp;#39;ll describe how I approached the problem what I learned along the way.&lt;/p&gt;</atom:summary><description>&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/8413ae9f-d4a2-418a-9d37-0fab7644e413&quot; alt=&quot;Websphere logo&quot; align=&quot;right&quot;&gt;In my quest to get Roller running on the latest in Java EE servers, the last server I tacked was the &lt;a href=&quot;http://www-01.ibm.com/software/webservers/appserv/was/&quot;&gt;WebSphere Application Server&lt;/a&gt;. Unlike Glassfish and JBoss, WebSphere&amp;#39;s Java EE 6 offering is not available in final form yet. Java EE 6 support is coming in WebSphere 8. So, for this exercise I used the WebSphere 8 beta, which was made &lt;a href=&quot;http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14482785&quot;&gt;available in July 2010&lt;/a&gt;. In this blog I&amp;#39;ll describe how I approached the problem what I learned along the way.&lt;/p&gt;
&lt;h4&gt;Deployed the Java EE version of the Roller WAR&lt;/h4&gt;
&lt;p&gt;If you remember my back to my post on &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_glassfish_3&quot;&gt;Glassfish&lt;/a&gt;, I ended up with two WARs, one for Tomcat and one for Java EE. Then in my post on &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_jboss_6&quot;&gt;JBoss&lt;/a&gt;, I had to add a special WAR just for JBoss. Fortunately for WebSphere, I was able to use same &amp;quot;Java EE&amp;quot; WAR that I used on Glassfish. It didn&amp;#39;t work the first time I tried, but with some code changes and installation guide adjustments, I was able to make it work. Here&amp;#39;s a quick summary of the problems I hit:&lt;/p&gt;
&lt;h4&gt;Problem 1: Commons Logging&lt;/h4&gt;
&lt;p&gt;I was able to deploy Roller successfully via the WebSphere console, but when I tried to load the Roller setup page I got a 404 error. I looked for the Roller log and found nothing. Something was preventing Commons Logging or Log4J from working properly. After some googling, I learned that this has been a problem on WebSphere for some time and there&amp;#39;s an easy (but annoying) fix. I had to add a property file to Roller and ask those installing Roller to add a property file to their WebSphere installation, details are here (&lt;a href=&quot;https://issues.apache.org/jira/browse/ROL-1895&quot;&gt;ROL-1895&lt;/a&gt;).&lt;/p&gt;
&lt;h4&gt;Problem 2: Filter compatibility&lt;/h4&gt;
&lt;p&gt;I had logging working but that didn&amp;#39;t really help me figure out what was going wrong. Eventually, I remembered the WebSphere Filter Compatibility issue. Servlet Filters are a standard feature of the Servlet API for years, but for some reason they are turned off by default in WebSphere. The solution is to set the &lt;code&gt;com.ibm.ws.webcontainer.invokeFiltersCompatibility&lt;/code&gt; flag to true via the WebSphere console and so that&amp;#39;s what I did. It worked.&lt;/p&gt;
&lt;h4&gt;Problem 3: Struts mapping&lt;/h4&gt;
&lt;p&gt;Once I got beyond the setup page, the Roller bootstrapping page would not load. After some investigation I found that the Struts filter was not being executed. Roller was using the mapping &lt;code&gt;/*&lt;/code&gt; meaning that all requests go through Struts. When I changed that to &lt;code&gt;*.rol&lt;/code&gt;, which is the extension we use for all Struts actions, things started working. That&amp;#39;s what we should have been doing anyway, so I made the change and moved on.&lt;/p&gt;
&lt;h4&gt;Wrapping up...&lt;/h4&gt;
&lt;p&gt;In the end, I was able to make Roller&amp;#39;s Java EE WAR work on WebSphere and that&amp;#39;s a good thing. I really don&amp;#39;t want to have a separate WAR for each app server. As I did for the other three servers, I added detailed step-by-step installation instructions for WebSphere to the &lt;a href=&quot;http://people.apache.org/~snoopdave/apache-roller-5.0/roller-install-guide.pdf&quot;&gt;Roller 5 Install Guide (2MB PDF)&lt;/a&gt;, with screenshots.&lt;/p&gt;
&lt;p&gt;See also: &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_java_ee&quot;&gt;Roller 5 and Java EE 6&lt;/a&gt;, &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_glassfish_3&quot;&gt;Roller 5 on Glassfish 3&lt;/a&gt; and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_jboss_6&quot;&gt;Roller 5 on JBoss AS 6&lt;/a&gt;.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_5_and_jboss_6</guid>
    <title>Roller 5 and JBoss 6</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_5_and_jboss_6</link>
    <pubDate>Thu, 20 Jan 2011 18:00:15 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>hibernate</category>
    <category>javaee</category>
    <category>jboss</category>
<atom:summary type="html">&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/d94dc4cc-d79c-423a-a9bc-ee93853ee422&quot; alt=&quot;JBoss logo&quot;&gt; In my quest to make Roller work on Java EE 6, the next server that I tackled was JBoss 6. In this blog I&amp;#39;ll describe how I approached the problem what I learned along the way.&lt;/p&gt;

&lt;h4&gt;Tested with Hibernate JPA&lt;/h4&gt;

&lt;p&gt;Roller uses &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Persistence_API&quot;&gt;JPA&lt;/a&gt; for database storage and specifically the &lt;a href=&quot;http://openjpa.apache.org/&quot;&gt;Apache OpenJPA&lt;/a&gt; implementation. I knew that JBoss uses the &lt;a href=&quot;http://www.hibernate.org&quot;&gt;Hibernate JPA&lt;/a&gt; implementation and I suspected that there would be JPA portability problems, so I decided to run Roller&amp;#39;s JUnit tests against Hibernate JPA. There were many test failures and fortunately, the failures were easy to fix.&lt;/p&gt;</atom:summary><description>&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/d94dc4cc-d79c-423a-a9bc-ee93853ee422&quot; alt=&quot;JBoss logo&quot;&gt; In my quest to make Roller work on Java EE 6, the next server that I tackled was JBoss 6. In this blog I&amp;#39;ll describe how I approached the problem what I learned along the way.&lt;/p&gt;

&lt;h4&gt;Tested with Hibernate JPA&lt;/h4&gt;

&lt;p&gt;Roller uses &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Persistence_API&quot;&gt;JPA&lt;/a&gt; for database storage and specifically the &lt;a href=&quot;http://openjpa.apache.org/&quot;&gt;Apache OpenJPA&lt;/a&gt; implementation. I knew that JBoss uses the &lt;a href=&quot;http://www.hibernate.org&quot;&gt;Hibernate JPA&lt;/a&gt; implementation and I suspected that there would be JPA portability problems, so I decided to run Roller&amp;#39;s JUnit tests against Hibernate JPA. There were many test failures and fortunately, the failures were easy to fix.&lt;/p&gt;

&lt;p&gt;Where OpenJPA is lenient, Hibernate JPA is strict about declaring transients fields as transient. So, wherever Hibernate complained, I added the appropriate transient declaration and soon all tests were passing. There were a lot of changes, but they were all trivially easy. Since I first &amp;quot;ported&amp;quot; Roller to ElipseLink JPA, its possible that some of the changes I made for EclipseLink helped with the port to Hibernate JPA.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/31c02555-27cd-4391-b951-38161b88e8c2&quot; alt=&quot;HIbernate logo&quot; align=&quot;right&quot;&gt;Those of you who are familiar with Roller&amp;#39;s history might remember that this is the second time I worked to &lt;a href=&quot;http://rollerweblogger.org/roller/entry/powered_by_struts_1_1&quot;&gt;make Roller work with Hibernate&lt;/a&gt;. Early versions of Roller ran on Hibernate until Roller 4, when we ripped it out because Apache policy does not allow LGPL. With Java EE 6, Roller can run on Hibernate and we don&amp;#39;t have to ship the Hibernate jars to do so.&lt;/p&gt;

&lt;h4&gt;Tried using the Java EE version of the Roller WAR&lt;/h4&gt;

&lt;p&gt;Since JBoss 6 is a Java EE 6 server, just like Glassfish, I figured I could use the same WAR that I created for Glassfish. That didn&amp;#39;t really work out, as you will see below. When I attempted to deploy the Roller WAR to JBoss I ran into two problems:&lt;/p&gt;

&lt;h4&gt;Problem 1: Xerces and JavaAssist&lt;/h4&gt;

&lt;p&gt;When I tried to deploy the Roller WAR to JBoss, I ran into class-cast exceptions that indicated that the version the the Xerces XML parser included with Roller conflicts with the one that is included in JBoss. I encountered a similar problem for the JavAssist jars, which are also part of Roller. This was quite surprising to me. Apparently, JBoss uses Xerces and JavAssist internally and for some reason the JBoss internals bleed through and interfere with applications; seems like a bug to me. So, we have to have a special Roller WAR for JBoss without the Xerces and JavaAssist jars in the Roller WAR.&lt;/p&gt;

&lt;h4&gt;Problem 2: JNDI Datasource Name&lt;/h4&gt;

&lt;p&gt;The next problem that I encountered was the datasource name. Roller uses the JNDI naming API to lookup its JDBC datasource. In all of the other app servers, we tell people to setup a datasource with the JNDI name &amp;#39;jdbc/rollerdb&amp;#39; but that name did not work for JBoss. For JBoss, I could only get names of names of the format &amp;quot;java:/name&amp;quot; to work. Unfortunately, with JPA the datasource name must be embedded in the &lt;code&gt;persistence.xml&lt;/code&gt; file which is embedded in a JAR file which is embedded in the Roller WAR file. It&amp;#39;s in there deep, so we have to produce a special Roller WAR for JBoss with a JBoss-friendly datasource name.&lt;/p&gt;

&lt;p&gt;*Please* correct me if I&amp;#39;m wrong. I would love to be wrong about either of these two problems.&lt;/p&gt;

&lt;h4&gt;Created special Roller WAR just for JBoss&lt;/h4&gt;

&lt;p&gt;Due to those two problems, I modified the Roller build process to create a special Roller WAR for JBoss without the OpenJPA, Xerces and JavAssist JARs and with the JBoss friendly JNDI name &lt;code&gt;java:/RollerDS&lt;/code&gt; inside all included &lt;code&gt;persistence.xml&lt;/code&gt; files.&lt;/p&gt;

&lt;h4&gt;Deployed, tested and updated the docs&lt;/h4&gt;

&lt;p&gt;Once I worked around those two problems, installing Roller on JBoss was easy. I did the whole thing via the JBoss web console, which was not familiar to me but was pretty easy to understand and use. I documented the whole process in the &lt;a href=&quot;http://people.apache.org/~snoopdave/apache-roller-5.0/roller-install-guide.pdf&quot;&gt;Roller 5 Install Guide (2MB PDF)&lt;/a&gt;, with screenshots.&lt;/p&gt;

&lt;p&gt;Next up: Roller 5 on WebSphere 8 (beta)&lt;/p&gt; 

&lt;p&gt;See also: &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_java_ee&quot;&gt;Roller 5 and Java EE 6&lt;/a&gt; and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_glassfish_3&quot;&gt;Roller 5 on Glassfish 3&lt;/a&gt;.&lt;/p&gt; 
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_5_and_glassfish_3</guid>
    <title>Roller 5 and Glassfish 3</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_5_and_glassfish_3</link>
    <pubDate>Mon, 10 Jan 2011 17:29:36 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>glassfish</category>
    <category>java</category>
    <category>javaee</category>
    <category>jpa</category>
<atom:summary type="html">&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/1ae0d27d-6c18-4b34-89a8-2c4db15313a3&quot; alt=&quot;Duke and GlassFish&quot; align=&quot;right&quot;&gt;In my quest to make Roller work on Java EE 6, the first server that I decided to tackle was &lt;a href=&quot;http://glassfish.java.net&quot;&gt;Glassfish 3&lt;/a&gt;. In this blog I&amp;#39;ll describe how I approached the problem and what I learned along the way.&lt;/p&gt;

&lt;h4&gt;Tested with EclipseLink JPA&lt;/h4&gt;

&lt;p&gt;Roller uses &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Persistence_API&quot;&gt;JPA&lt;/a&gt; for persistence and specifically the &lt;a href=&quot;http://openjpa.apache.org/&quot;&gt;Apache OpenJPA&lt;/a&gt; implementation. I knew that GlassFish uses the &lt;a href=&quot;http://www.eclipse.org/eclipselink/&quot;&gt;EclipseLink JPA&lt;/a&gt; implementation and I suspected that there would be JPA portability problems, so I decided to run Roller&amp;#39;s JUnit tests against EclipseLink JPA. I wanted to find and fix those problems before even touching GlassFish. The tests ran and there were many JPA related failures and errors, most due to differences in the way that EclipseLink handles bi-directional relationships and the use of unmanaged objects.&lt;/p&gt;</atom:summary><description>&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/1ae0d27d-6c18-4b34-89a8-2c4db15313a3&quot; alt=&quot;Duke and GlassFish&quot; align=&quot;right&quot;&gt;In my quest to make Roller work on Java EE 6, the first server that I decided to tackle was &lt;a href=&quot;http://glassfish.java.net&quot;&gt;Glassfish 3&lt;/a&gt;. In this blog I&amp;#39;ll describe how I approached the problem and what I learned along the way.&lt;/p&gt;

&lt;h4&gt;Tested with EclipseLink JPA&lt;/h4&gt;

&lt;p&gt;Roller uses &lt;a href=&quot;http://en.wikipedia.org/wiki/Java_Persistence_API&quot;&gt;JPA&lt;/a&gt; for persistence and specifically the &lt;a href=&quot;http://openjpa.apache.org/&quot;&gt;Apache OpenJPA&lt;/a&gt; implementation. I knew that GlassFish uses the &lt;a href=&quot;http://www.eclipse.org/eclipselink/&quot;&gt;EclipseLink JPA&lt;/a&gt; implementation and I suspected that there would be JPA portability problems, so I decided to run Roller&amp;#39;s JUnit tests against EclipseLink JPA. I wanted to find and fix those problems before even touching GlassFish. The tests ran and there were many JPA related failures and errors, most due to differences in the way that EclipseLink handles bi-directional relationships and the use of unmanaged objects.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/c55737d5-bb41-4cf5-ab58-fed6a783aa08&quot; alt=&quot;EclipseLink logo&quot; align=&quot;right&quot;&gt;Where OpenJPA is lenient about bi-directional relationships, EclipseLink requires you to manage both ends. For example, with OpenJPA you can get away with adding a bookmark to a folder with &lt;code&gt;folder.addBookmark(bookmark)&lt;/code&gt;, but with EclipseLink you&amp;#39;d also have to add &lt;code&gt;bookmark.setFolder(folder)&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Where OpenJPA is lenient about use of unmanaged objects, EclipseLink will complain bitterly whenever it finds one in a persisted collection or relationship. This was more of a problem in the tests than in the actual Roller code, which usually deals only with managed objects (i.e. those persisted to / loaded from the database and managed by the JPA implementation).&lt;/p&gt;

&lt;p&gt;I was able to fix those problems easily and move onto the next step.&lt;/p&gt;

&lt;h4&gt;Created a Roller WAR without OpenJPA&lt;/h4&gt;

&lt;p&gt;I also knew that Roller included some jars needed for Tomcat but that are not needed, or worse, problematic, on true Java EE servers. For example, we include the Apache OpenJPA implementation because Tomcat doesn&amp;#39;t have one of its own. I modified the Roller build process to create two builds. One build is for Tomcat and includes OpenJPA and the other build is for Java EE and does not.&lt;/p&gt;

&lt;h4&gt;Deployed, tested and updated the docs&lt;/h4&gt;

&lt;p&gt;Next, I figured out how to deploy Roller to GlassFish 3 via the GlassFish web console, which was pleasant to use and familiar to me. I didn&amp;#39;t run into any problems along the way and later I documented the whole process in the &lt;a href=&quot;http://people.apache.org/~snoopdave/apache-roller-5.0/roller-install-guide.pdf&quot;&gt;Roller 5 Install Guide (2MB PDF)&lt;/a&gt;, with screenshots.&lt;/p&gt;

&lt;p&gt;Next up: &lt;a href=&quot;http://rollerweblogger.org/roller/entry/roller_5_and_jboss_6&quot;&gt;Roller 5 on JBoss 6&lt;/a&gt;&lt;/p&gt; 
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_5_and_java_ee</guid>
    <title>Roller 5 and Java EE 6</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_5_and_java_ee</link>
    <pubDate>Wed, 5 Jan 2011 08:15:53 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>glassfish</category>
    <category>javaee</category>
    <category>jboss</category>
    <category>tomcat</category>
    <category>websphere</category>
<atom:summary type="html">&lt;p&gt;
It&amp;#39;s hard to believe, but I&amp;#39;ve been dorking around with &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;, the blog software that powers this site, for almost 10 years now. I started in summer 2001. In the past couple of years, I&amp;#39;ve had a lot less time to work on Roller. I devoted some of that time to mentoring student developers, which was fun and rewarding. I also spent time making Roller more consumable for developers by making it easier to build, run and deploy to modern Java app servers, which was not really fun but was definitely educational, bloggable even.&lt;/p&gt;
</atom:summary><description>&lt;p&gt;
It&amp;#39;s hard to believe, but I&amp;#39;ve been dorking around with &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;, the blog software that powers this site, for almost 10 years now. I started in summer 2001. In the past couple of years, I&amp;#39;ve had a lot less time to work on Roller. I devoted some of that time to mentoring student developers, which was fun and rewarding. I also spent time making Roller more consumable for developers by making it easier to build, run and deploy to modern Java app servers, which was not really fun but was definitely educational, bloggable even.&lt;/p&gt;

&lt;h4&gt;Roller 5 as Java EE 6 case study&lt;/h4&gt;

&lt;p&gt;Making Roller work on the new crop of &amp;quot;modern&amp;quot; Java EE 6 servers was an interesting experience and the story makes a pretty good case study in Java EE application portability. I&amp;#39;ve put together a short series of blog posts to tell the story and this is the first, an overview. In subsequent posts I&amp;#39;ll explain the changes I had to make to get Roller working on:&lt;/p&gt; 

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/0e4abe0f-fa37-4de2-b07c-00bf12094e55&quot; alt=&quot;glassfish logo&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://glassfish.java.net/downloads/3.0.1-final.html&quot;&gt;GlassFish 3&lt;/a&gt; (released June 2010)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/f409b73d-9ed0-4372-9654-5bf2b6461f01&quot; alt=&quot;jboss logo&quot;&gt; &lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://community.jboss.org/wiki/AS600FinalReleaseNotes&quot;&gt;JBoss 6&lt;/a&gt; (released December 2010)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/98f178c9-22d7-4d71-8be3-4d4583257e32&quot; alt=&quot;websphere logo&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://webspherecommunity.blogspot.com/2010/07/websphere-application-server-v80-beta.html&quot;&gt;WebSphere 8&lt;/a&gt; (beta released July 2010)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/9d655f3a-50dd-46e8-9cd2-4bd0c67800a3&quot; alt=&quot;tomcat logo&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://tomcat.apache.org/&quot;&gt;Tomcat&lt;/a&gt; 6 and 7 (not Java EE but Roller just has to work on Tomcat)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;There are other Java EE 6 servers out there and there&amp;#39;s a &lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/from_2_to_8_java&quot;&gt;good summary of them on The Aquarium&lt;/a&gt;; those are just the ones I had time to explore.&lt;/p&gt;

&lt;h4&gt;Overview of Java EE 6 changes&lt;/h4&gt;

&lt;p&gt;There were three categories of things I changed to accomodate Java EE 6 servers. The first is changes to the Roller code base to make Roller work on all of my targets. Most of these changes were in way Roller uses calls the Java Persistence APIs (JPA), needed because of differences in the JPA implementations used by each server. GlassFish uses EclipseLink JPA and JBoss uses Hibernate JPA.  On WebSphere and Tomcat, Apache OpenJPA is the implementation. Fortunately, nowhere did I have to use any conditional code or introduce special behavior for any platform.&lt;/p&gt;

&lt;p&gt;The second category of changes is additions to the Roller install guide to mention the special settings required to make Roller work on all targets. On some platforms, special behaviors must be enabled for Roller, for example the &amp;quot;filter compatibility&amp;quot; flag on WebSphere. I added a section to the install guide for each server and documented the details there.&lt;/p&gt;

&lt;p&gt;The third category is changes to the Roller build process to create special versions of Roller for some servers. Unfortunately, due to Tomcat not being a full Java EE server and some JBoss classloader issues, I&amp;#39;m not able to provide one Roller release that runs on all servers. The latest Roller 5 release candidate comes in three flavors, one for Tomcat 6/7, one for JBoss 6 and one for &amp;quot;Java EE&amp;quot; which is the one intended for use with Glassfish 3.1 and WebSphere 8.&lt;/p&gt;  

&lt;h4&gt;Up next: GlassFish 3&lt;/h4&gt;

&lt;p&gt;In the next post I&amp;#39;ll tell you what I had to do to get Roller running on Glassfish 3 with EclipseLink JPA.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc3</guid>
    <title>Apache Roller 5.0 RC3</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc3</link>
    <pubDate>Tue, 4 Jan 2011 08:00:00 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>glassfish</category>
    <category>jboss</category>
    <category>jpa</category>
    <category>websphere</category>
<description>&lt;p&gt;On the last day of 2010, I made available the third release candidate for Apache Roller 5.0. The main difference between this new candidate and the previous one is that the new RC3 runs on Java EE 6 servers: Glassfish 3, JBoss 6 and Websphere 8 (currently in beta). Making this happen took a lot more work than I expected and I&amp;#39;ll blog about that over the next couple of weeks as it is an interesting case study in Java EE 6 portability.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the announcement:&lt;/p&gt;

&lt;pre&gt;
Apache Roller 5.0 Release Candidate RC3 is now available for testing.
Note that this is NOT a release of the Apache Software Foundation or
anybody else; this release candidate is for testing purposes only and
not recommended for production.

   What&amp;#39;s new in Roller 5.0:
   &lt;a href=&quot;https://cwiki.apache.org/confluence/display/ROLLER/What&apos;s+new+in+Roller+5.0&quot;&gt;https://cwiki.apache.org/confluence/display/ROLLER/What&amp;#39;s+new+in+Roller+5.0&lt;/a&gt;

   Change list (issues resolved since 4.0)
   &lt;a href=&quot;http://bit.ly/gAhDWR&quot;&gt;http://bit.ly/gAhDWR&lt;/a&gt;

   Issues resolved since last release candidate (RC3)
   &lt;a href=&quot;http://bit.ly/dZ27Nx&quot;&gt;http://bit.ly/dZ27Nx&lt;/a&gt;

   Signed binary and source files. Also, documentation in PDF form
   &lt;a href=&quot;http://people.apache.org/~snoopdave/apache-roller-5.0/&quot;&gt;http://people.apache.org/~snoopdave/apache-roller-5.0/&lt;/a&gt;

The biggest change in RC3 is the new support for Java EE 6 application
servers: Glassfish 3, JBoss 6 and Websphere 8 (beta). I&amp;#39;ve been able
to verify that Roller runs on all of those servers, and I updated the
installation guide to explain in detail how you install on Glassfish,
JBoss and WebSphere.

If you would like to help out then please test RC3, discuss the
problems you encounter here and file specific bugs with steps to
reproduce in the Roller JIRA bug tracking system.

Thanks,
Dave
&lt;/pre&gt;

That announcement is available here: &lt;a href=&quot;http://markmail.org/message/my5wbld2xqvhqpyg&quot;&gt;http://markmail.org/message/my5wbld2xqvhqpyg
&lt;/a&gt;


</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc2</guid>
    <title>Apache Roller 5.0 RC2</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc2</link>
    <pubDate>Sun, 3 Oct 2010 10:11:39 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>asf</category>
<description>&lt;p&gt;A couple of weeks ago, I made a second release candidate available for Apache Roller 5.0. Here&amp;#39;s the announcement (also available at &lt;a href=&quot;http://s.apache.org/apacheroller50rc2&quot;&gt;http://s.apache.org/apacheroller50rc2&lt;/a&gt;):&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;
Apache Roller 5.0 Release Candidate RC2 is now available for testing. 
Note that this is NOT a release of the Apache Software Foundation or 
anybody else; this release candidate is for testing purposes only and 
not recommended for production.

   What&amp;#39;s new in Roller 5.0:
   &lt;a href=&quot;https://cwiki.apache.org/confluence/display/ROLLER/What&apos;s+new+in+Roller+5.0&quot;&gt;https://cwiki.apache.org/confluence/display/ROLLER/What&amp;#39;s+new+in+Roller+5.0&lt;/a&gt;

   Roller 5.0 JIRA change list:
   &lt;a href=&quot;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310906&amp;styleName=Html&amp;version=12313828&quot;&gt;https://issues.apache.org/jira/sec ... sion=12313828&lt;/a&gt;

   Signed binary and source files
   &lt;a href=&quot;http://people.apache.org/~snoopdave/apache-roller-5.0/&quot;&gt;http://people.apache.org/~snoopdave/apache-roller-5.0/&lt;/a&gt;

   Issues resolved since RC1:
   &lt;a href=&quot;http://bit.ly/9eWjJk&quot;&gt;http://bit.ly/9eWjJk&lt;/a&gt;

If you would like to help out then please test RC2, discuss 
the problems you encounter here and file specific bugs with steps to
reproduce in the Roller JIRA bug tracking system.&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;m running RC2 on this site and it seems to be holding up just fine so far.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/software_has_feelings_too</guid>
    <title>Software has feelings too</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/software_has_feelings_too</link>
    <pubDate>Sat, 8 May 2010 13:10:40 +0000</pubDate>
    <category>Roller</category>
<description>&lt;p&gt;Be nice to your software &lt;img src=&quot;https://rollerweblogger.org/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot;&gt;&lt;/p&gt;



&lt;p&gt;Unfortunately, she&amp;#39;s right on the money with that remark.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/marsedit_3_and_roller_5</guid>
    <title>MarsEdit 3 and Roller 5</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/marsedit_3_and_roller_5</link>
    <pubDate>Wed, 5 May 2010 17:01:17 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
<description>&lt;p&gt;&lt;img style=&quot;float:right;&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/077eea8c-ff6f-4f7a-8397-0ffa06d03b46&quot; alt=&quot;MarsEdit3Icon128.png&quot; width=&quot;128&quot; height=&quot;128&quot;&gt;&lt;/p&gt;

&lt;p&gt;Mac-based weblog editor &lt;a href=&quot;http://www.red-sweater.com/marsedit/new3.html&quot;&gt;MarsEdit v3.0&lt;/a&gt; has just been released by &lt;a href=&quot;http://www.red-sweater.com/blog/282/red-sweater-acquires-marsedit&quot;&gt;Red Sweater Software&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because MarsEdit v3.0 supports the &lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot;&gt;Atom Publishing Protocol&lt;/a&gt; (APP), it works with &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; 5.0RC1&amp;#39;s new and improved AtomPub support right out of the box. I&amp;#39;m writing this post in MarsEdit right now and publishing to Roller 5 via APP.&lt;/p&gt;

&lt;p&gt;MarsEdit includes a rich text editor and supports image upload via drag-and-drop into the editor. You can edit a draft post locally or use Send to Blog to send the draft to the server for further editing before publish. You can specify multiple tags for your post and MarsEdit will send them to Roller as tags.&lt;/p&gt;

&lt;p&gt;Generally, I prefer to edit my HTML by hand but for somebody who wants simplicity and a familiar Mac interface, MarsEdit v3.0 looks like a great choice. And the HTML it generates doesn&amp;#39;t look too bad.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s a screenshot that shows what MarsEdit looks like when editing a post:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/117567b2-7882-4d63-85c6-fc0d53bf56cf&quot; alt=&quot;marsedit-roller.png&quot; width=&quot;585&quot; height=&quot;459&quot;&gt;&lt;/p&gt;

&lt;p&gt;Here are the settings I&amp;#39;m using (URLs changed to protect the innocent).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/fdeb6b09-c7d1-406d-8691-dc18f5ac5ae6&quot; alt=&quot;marsedit-settings.png&quot; width=&quot;312&quot; height=&quot;388&quot;&gt;&lt;/p&gt;

&lt;p&gt;MarsEdit is $39.95 and there&amp;#39;s a &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;30-day free and fully-function trial version&lt;/a&gt; available too.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc1</guid>
    <title>Apache Roller 5.0 RC1</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_5_0_rc1</link>
    <pubDate>Mon, 3 May 2010 08:39:13 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
    <category>propono</category>
    <category>rome</category>
<description>&lt;p&gt;It&amp;#39;s been a while since the BETA (over 6 months) but we &lt;a href=&quot;http://markmail.org/message/kmeuidvtjzhbdznn&quot;&gt;now have a release candidate for Apache Roller 5.0&lt;/a&gt; available for testing. This site is running Apache Roller 5.0 RC1 right now, as you can see in the itty bitty screenshot below:&lt;/p&gt;



&lt;p&gt;Here&amp;#39;s a &lt;a href=&quot;https://cwiki.apache.org/confluence/display/ROLLER/What&apos;s+new+in+Roller+5.0&quot;&gt;What&amp;#39;s New in Roller 5.0&lt;/a&gt; page that summarizes what has changed since 4.0. One thing I forgot to mention on that page was that Roller now uses ROME Propono 1.0 for AtomPub and Roller 5.0&amp;#39;s AtomPub support has been successfully tested with &lt;a href=&quot;http://www.red-sweater.com/marsedit/&quot;&gt;MarsEdit&lt;/a&gt; and &lt;a href=&quot;http://windowslivewriter.spaces.live.com/&quot;&gt;Windows Live Writer&lt;/a&gt;.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_on_opensolaris_glassfish</guid>
    <title>Roller on OpenSolaris / Glassfish</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_on_opensolaris_glassfish</link>
    <pubDate>Tue, 27 Apr 2010 07:14:57 +0000</pubDate>
    <category>Roller</category>
    <category>glassfish</category>
    <category>opensolaris</category>
<description>&lt;p&gt;Dave Koelmeyer offers a nice step-by-step guide to getting Roller up and running on OpenSolaris, Glassfish and MySQL.&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;Although WordPress undoubtedly has more bells and whistles, with themes and plug-ins galore, I find Roller quicker and less fussy in operation, with far more comprehensive documentation &#150; and its scalability cannot be denied. This guide will enable you to install and run Apache Roller for the purposes of evaluation and tinkering.&lt;/p&gt;
&lt;p&gt;We will be using OpenSolaris snv_134 x64, with Apache Roller 4.01,  Glassfish v2.1, and MySQL 5.1.&lt;/p&gt;
&lt;/blockquote&gt;&lt;a href=&quot;http://davekoelmeyer.wordpress.com/2010/04/27/install-and-run-apache-roller-4-01-on-opensolaris/#&quot;&gt;Link&lt;/a&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_built_with_maven</guid>
    <title>Built with Maven</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_built_with_maven</link>
    <pubDate>Sun, 14 Mar 2010 09:47:26 +0000</pubDate>
    <category>Roller</category>
    <category>ant</category>
    <category>java</category>
    <category>maven</category>
<description>&lt;a href=&quot;http://maven.apache.org&quot;&gt;
&lt;img style=&quot;padding:4px;align:left;&quot; src=&quot;http://rollerweblogger.org/roller/mediaresource/f20c4914-80dc-48f5-a8d1-2efa3d89eb07&quot; alt=&quot;Maven Logo&quot;&gt;
&lt;/a&gt;

&lt;p&gt;I was a &lt;a href=&quot;http://maven.apache.org&quot;&gt;Maven&lt;/a&gt; hater and resisted it for a long time but over the years Maven has gotten much better, it&amp;#39;s well supported in IDEs and as far as I can tell, Maven has replaced Ant as the de facto build system for Java projects. If you want new developers be able to easily build, debug and run your code via command or their favorite IDE then Maven is the way to go, and that&amp;#39;s especially true for open source projects like Roller.&lt;/p&gt;

&lt;p&gt;That&amp;#39;s why I spent a couple of weekends learning Maven and converting Roller&amp;#39;s build process from Ant to Maven (&lt;a href=&quot;https://issues.apache.org/jira/browse/ROL-1849&quot;&gt;ROL-1849&lt;/a&gt;). The process of conversion wasn&amp;#39;t too difficult. Getting dependencies under control was a pain, but it believe it will be a one time pain and a worthwhile one. What took the most time was figuring out how to get Maven to start Derby, create the Roller tables and then run Roller&amp;#39;s JUnit tests. Also, getting Maven&amp;#39;s Jetty plugin setup to run Roller was a little tricky but hopefully also a one-time pain. The result is that Roller now uses a standard and well known directory structure, dependencies are managed and it&amp;#39;s easier for developers to get started with the codebase.&lt;/p&gt;

&lt;p&gt;If you have Maven and Subversion installed on your computer then these commands will fetch the Roller source code, compile the code, run all JUnit tests and then build the Roller webapp:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
   svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
   cd roller_trunk 
   mvn install
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;And once all that is done, the following commands will start the Jetty app server, start the Derby database and start Roller at http://localhost:8080/roller, ready for testing, experimentation, etc.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
   cd weblogger-web
   mvn jetty:run-war
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;I think that&amp;#39;s pretty damn useful.&lt;/p&gt;

&lt;p&gt;Here are some articles/links that influenced my thinking on Maven recently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.symphonious.net/2010/01/11/comparing-build-systems/&quot;&gt;Comparing Build Systems&lt;/a&gt; - Adrian Sutton concludes that Maven is too much work but &amp;quot;the consistency in how a project is built that the Maven project has brought to the Java would is absolutely revolutionary&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.atlassian.com/developer/2008/02/maven_in_our_development_proce.html&quot;&gt;Maven in our development process&lt;/a&gt; - Sherali Karimov explains how Atlassian and says the need for Maven training is &amp;quot;the most important and most overlooked issue of all.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sonatype.com/&quot;&gt;Sonatype&lt;/a&gt; - The Maven Company. Founded in 2008 by Jason van Zyl, the creator of Maven. Offers training, support and the Nexus Professional repo manager.&lt;/li&gt;
&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_beginners_guide_available</guid>
    <title>Roller Beginner&amp;#39;s Guide available</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_beginners_guide_available</link>
    <pubDate>Thu, 25 Feb 2010 07:54:11 +0000</pubDate>
    <category>Roller</category>
    <category>blogging</category>
    <category>java</category>
    <category>opensource</category>
<description>&lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book/mid/270110dldzcj?utm_source=rollerweblogger.org&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002234&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/e481af17-243b-4b18-a6f9-9305739ff217&quot; style=&quot;padding:4px;align:right;&quot; alt=&quot;photo of beginner&amp;#39;s guide to Apache Roller 4.0&quot;&gt;&lt;/a&gt;

&lt;p&gt;I blogged about Alfonso Romero&amp;#39;s Apache Roller 4.0 Beginner&amp;#39;s Guide book before. It&amp;#39;s a great resource for folks who want to get the most out of their Apache Roller-based blogs, and not just beginners. As you can see in the photo on the right, I&amp;#39;ve got my copy. You can get yours directly from Pakt publishing:&lt;/p&gt;

&lt;p&gt; 
&lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book/mid/270110dldzcj?utm_source=rollerweblogger.org&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002234&quot;&gt;Buy a copy of Beginner&amp;#39;s Guide to Apache Roller 4.0&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To publicize the book, Pakt publishing has been publishing some useful excerpts and even a complete sample chapter online. Here&amp;#39;s summary of the excerpts so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/files/9508-Chapter-9-Advanced-Topics.pdf&quot;&gt;Chapter 9 - Advanced topics (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/working-with-templates-in-apache-roller-4&quot;&gt;Working with Templates in Apache Roller 4.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/uploading-videos-sound-files-posts-using-apache-roller&quot;&gt;Using video and sound files in Roller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/including-google-map-posts-using-apache-roller-4&quot;&gt;Including Google Maps in Roller blog posts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.packtpub.com/article/spicing-blog-uploading-files-images-weblog-apache-roller&quot;&gt;Spicing up your Roller blog with uploaded images&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&amp;#39;ve been following Roller development you know that &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Apache+Roller+5.0+Release&quot;&gt;Roller 5.0&lt;/a&gt; is on the way. Most of the changes in Roller 5.0 are &amp;quot;under the hood&amp;quot; so 5.0 won&amp;#39;t make Alfonso&amp;#39;s book obsolete. Except for a couple of pages in Chapter 5 &amp;quot;Spicing Up Your Blog&amp;quot; that need updated screenshots, I believe everything in the book applies to Roller 5.0 as well.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/apache_roller_book</guid>
    <title>Apache Roller 4.0 Beginners Guide</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/apache_roller_book</link>
    <pubDate>Thu, 17 Dec 2009 20:04:13 +0000</pubDate>
    <category>Roller</category>
<description>&lt;p&gt;Here it is:&lt;/p&gt;

&lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book&quot;&gt;
&amp;lt;img src=&amp;quot;http://rollerweblogger.org/project/mediaresource/b32e1401-5ada-4d39-84de-2c8482358f87&amp;quot; 
alt=&amp;quot;Roller book cover&amp;quot; style=&amp;quot;padding:4px; align:center&amp;quot; /&amp;gt;&lt;/a&gt;

&lt;p&gt;
Isn&amp;#39;t that cool? An actual &lt;a href=&quot;http://www.packtpub.com/apache-roller-4-0-beginners-guide/book&quot;&gt;book on Apache Roller&lt;/a&gt; and I did not have to write it. I did review the drafts and it looks good, especially for beginners. It&amp;#39;s filled with helpful step-by-step instructions and screenshots. I also submitted a forward, but I don&amp;#39;t have a copy of the final book yet so I&amp;#39;m not sure my text made it in (I&amp;#39;d love a hard copy... hint hint). Anyhow... big congratulations to Roller user and author &lt;a href=&quot;http://blog.ibacsoft.com/&quot;&gt;Alfonso Romero&lt;/a&gt;.
&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_status_cc_world</guid>
    <title>Roller status, CC: world</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_status_cc_world</link>
    <pubDate>Tue, 22 Sep 2009 21:15:28 +0000</pubDate>
    <category>Roller</category>
    <category>apachecon</category>
    <category>apacheroller</category>
<description>&lt;p&gt;It&amp;#39;s been a while since I have blogged about it, but I haven&amp;#39;t completely stopped working on Roller. In case you&amp;#39;re wondering what&amp;#39;s up in Roller-land, here&amp;#39;s an update based on an &lt;a href=&quot;http://markmail.org/message/hymm4qa5qgmkjzt4&quot;&gt;email&lt;/a&gt; I recently sent to the Roller dev mailing list.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I&amp;#39;ve been doing some weekend and evening work on Roller 5.0 to get it ready for release. Ganesh and Tanuja did great work on the new Media Blogging features, but there were a couple of significant pieces missing such as data migration and I18N. I had hoped to finish that work during the summer, but life got in the way. Now I&amp;#39;m scrambling to wrap things up. I&amp;#39;ll be &lt;a href=&quot;http://rollerweblogger.org/project/entry/roller_at_apachecon_us_2009&quot;&gt;speaking at ApacheCon US 2009 in November on the topic of What&amp;#39;s New in Roller 5.0&lt;/a&gt;, so I&amp;#39;d really like to have a 5.0 release candidate ready by then.&lt;p&gt;

&lt;p&gt;Just as a reminder, here&amp;#39;s what&amp;#39;s currently on the 5.0 feature list:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Media Blogging Support&lt;/li&gt;
    &lt;li&gt;Externalizable User Management&lt;/li&gt;
    &lt;li&gt;OpenID Support&lt;/li&gt;
    &lt;li&gt;Tag Data API&lt;/li&gt;
    &lt;li&gt;OpenSearch&lt;/li&gt;
    &lt;li&gt;OAuth for AtomPub&lt;/li&gt;
    &lt;li&gt;See the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/9aQB&quot;&gt;full list on the Roller wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Except for Media Blogging, all of those features are complete. My plan is this. I&amp;#39;ll do some more cleanup work on Media Blogging, which is the major new feature in 5.0, fix some bugs and then I&amp;#39;ll cut an RC.&lt;/p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_for_roller</guid>
    <title>OAuth for AtomPub in Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_for_roller</link>
    <pubDate>Mon, 23 Mar 2009 12:00:00 +0000</pubDate>
    <category>Roller</category>
    <category>atompub</category>
    <category>oauth</category>
    <category>roller</category>
<description>&lt;a href=&quot;http://roller.apache.org&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/images/rollerbadge.png&quot; alt=&quot;powered by Roller badge&quot; align=&quot;right&quot; hspace=&quot;10&quot; vspace=&quot;10&quot; border=&quot;0&quot;&gt;
&lt;/a&gt;

&lt;p&gt;Over the past month or so I&amp;#39;ve been adding &lt;a href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt; support to just about every open source project that I can commit to. I added OAuth support to &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; so that you can now use OAuth to protect Roller&amp;#39;s &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/&quot;&gt;AtomPub&lt;/a&gt; server and other things. I also added OAuth support to &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomePropono&quot;&gt;ROME Propono&lt;/a&gt;&amp;#39;s AtomPub client so you can now use Propono to post to Roller (more about that later). Here&amp;#39;s a quick overview of how OAuth in Roller works.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;NOTE that this post applies to Roller 5.0, which has not yet been officially released.&lt;/i&gt;&lt;/p&gt;


&lt;h4&gt;Setting up OAuth for AtomPub in Roller&lt;/h4&gt;

&lt;p&gt;If you want to use OAuth with AtomPub on your Roller site, go to the Server Admin page and find the Web Services section, enable AtomPub and specify &amp;#39;oauth&amp;#39; as the authentication mechanism, like so:&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/rol_oauthconfig.jpg&amp;quot; 
    alt=&amp;quot;OAuth config in Roller 5.0-dev&amp;quot; /&amp;gt; 


&lt;h4&gt;Getting your OAuth key, secret and URLs&lt;/h4&gt;

&lt;p&gt;Once you&amp;#39;ve done the setup, you&amp;#39;ll find an OAuth Credentials link on the Roller Main Menu page, which will lead you a page like the one below showing your OAuth consumer key &amp;amp; secret and, if you are a site admin user, the site-wide key &amp;amp; secret. Currently, there&amp;#39;s only one set of site-wide credentials; I plan to fix that.&lt;/p&gt; 

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/rol_oauthkeys.jpg&quot; alt=&quot;OAuth keys page in Roller 5.0-dev&quot;&gt;

&lt;p&gt;Of course, those aren&amp;#39;t my real keys. You&amp;#39;ll want to keep your OAuth keys secret as they can enable anybody to access your Roller account via AtomPub.&lt;/p&gt;


&lt;h4&gt;Want to try it yourself?&lt;/h4&gt;

&lt;p&gt;I mentioned that Roller 5.0 has not yet been released and that&amp;#39;s true. There&amp;#39;s still a lot of work to be done on 5.0, but that doesn&amp;#39;t mean you can&amp;#39;t get your hands on the code and binaries now. To make it easy, I&amp;#39;ve made an &lt;b&gt;unofficial snapshot&lt;/b&gt; version of Roller 5.0-dev available for testing purposes only. It&amp;#39;s what I&amp;#39;m running on my site. You can get it here in two flavors:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.tar.gz&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;
    &lt;a href=&quot;http://people.apache.org/~snoopdave/snapshots/apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&quot;&gt;apache-roller-5.0-dev-20090321-SNAPSHPOT.zip&lt;/a&gt; (31 mb)
&lt;/p&gt;

&lt;p&gt;The instructions in the old &lt;a href=&quot;http://roller.apache.org/download.cgi#roller40&quot;&gt;Roller 4.0 installation guide&lt;/a&gt; should work fine, so follow them to install and configure the 5.0-dev SNAPSHOT. Please send questions and feedback to either the &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists&quot;&gt;Roller dev mail list&lt;/a&gt; and I&amp;#39;ll do my best to respond there.&lt;/p&gt;

&lt;p&gt;You&amp;#39;ll also need an OAuth capable AtomPub client. More on that topic tomorrow...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/media_blogging_for_roller</guid>
    <title>Media Blogging for Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/media_blogging_for_roller</link>
    <pubDate>Thu, 19 Feb 2009 12:57:37 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>atom</category>
    <category>java</category>
    <category>mentoring</category>
    <category>opensource</category>
    <category>rss</category>
<atom:summary type="html">For the past five months I&amp;#39;ve had the pleasure of mentoring two &lt;a href=&quot;http://www.sjsu.edu/&quot;&gt;San Jose State Univ.&lt;/a&gt; graduate students, &lt;a href=&quot;http://www.linkedin.com/pub/dir/ganesh/mathrubootham&quot;&gt;Ganesh Mathrubootham&lt;/a&gt; and &lt;a href=&quot;http://www.linkedin.com/pub/7/71/299&quot;&gt;Tanuja Varkanthe&lt;/a&gt;, who are working on a project for classes CMP 295A and B. They picked one of the projects that I first proposed for Google Summer of Code and then for Glassfish&amp;#39;s student outreach program, Media Blogging for &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. It&amp;#39;s turned out to be a major project and the central new feature in the upcoming Roller 5.0 release.&amp;nbsp;</atom:summary><description>&lt;p&gt;For the past five months I&amp;#39;ve had the pleasure of mentoring two &lt;a href=&quot;http://www.sjsu.edu/&quot;&gt;San Jose State Univ.&lt;/a&gt; graduate students, &lt;a href=&quot;http://www.linkedin.com/pub/dir/ganesh/mathrubootham&quot;&gt;Ganesh Mathrubootham&lt;/a&gt; and &lt;a href=&quot;http://www.linkedin.com/pub/7/71/299&quot;&gt;Tanuja Varkanthe&lt;/a&gt;, who are working on a project for classes CMP 295A and B. They picked one of the projects that I first proposed for Google Summer of Code and then for Glassfish&amp;#39;s student outreach program, Media Blogging for &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. It&amp;#39;s turned out to be a major project and the central new feature in the upcoming Roller 5.0 release.&lt;/p&gt;


&lt;h4&gt;The plan&lt;/h4&gt;

&lt;p&gt;The basic idea is to make it really easy to upload images, audio and video files to Roller, and really easy to include them in Roller blog posts and RSS/Atom feeds. Of course, the devil is in the details and Ganesh and Tanuja really have those covered. They have put together the most detailed and well thought-out plan and design ever for a new Roller feature. You can find the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/rnkB&quot;&gt;proposal page&lt;/a&gt; and the full Media Blogging for Roller Project Plan (PDF, 2mb) on the Roller wiki. Here&amp;#39;s a key excerpt from the project summary:&lt;/p&gt; 

&lt;blockquote&gt;
&lt;p&gt;Roller currently lacks support for the latest blogging features.  Roller does allow 
users to upload any type of content to their blogs and include that content on blog entries as images or podcasts, but lacks tools to make media blogging a seamless experience for bloggers.  Interface to manage uploaded files is not sortable and not page-able. Once the user has uploaded a file, which could be an image or a podcast, he needs to explicitly cut and paste the URL into his blog post.&lt;/p&gt;

&lt;p&gt;Overall, Rollerâ&#128;&#153;s support for media blogs is currently limited to basic file upload functionality, which is cumbersome to use for creating media blogs. This project will revamp the existing file upload interface to incorporate powerful media blogging features into Roller. Also, successful media management websites such as Flickr and YouTube are driven by a public media library, offering different ways for users to search and locate the content of their like. This feature incorporated into a blog server can make it very powerful and we intend to do that as part of this project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To get an idea of what this is all about, let&amp;#39;s take a look at some screenshots/wireframes taken directly from the project plan.&lt;/p&gt;


&lt;h4&gt;New media file upload dialog&lt;/h4&gt;

&lt;p&gt;First up is the new media file upload dialog. There are a couple of interesting things here. We&amp;#39;ll have metadata for each upload, including description, tags and copyright message. We&amp;#39;ll also have the option of including the file in the gallery. We&amp;#39;ll support a media gallery for each blog, and new files added to the gallery are included in a special media feed for the blog.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-upload-1.png&amp;quot;
alt=&amp;quot;screenshot of new upload dialog&amp;quot; /&amp;gt;


&lt;h4&gt;File Uploads browser&lt;/h4&gt;

&lt;p&gt;To make it easy to manage your media files, the proposal includes a new upload browser interface, with a tabular and a hierarchical view. Thumbnails will be automatically generated on upload. Search and filtering controls will make it easy to find and operate on the files you are looking for, based on file metadata.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-browse-1.png&amp;quot; 
alt=&amp;quot;screenshot of new upload browser&amp;quot; /&amp;gt;


&lt;h4&gt;Select media dialog&lt;/h4&gt;

&lt;p&gt;When you are writing a blog post, you&amp;#39;ll be able to browse for and include media files without leaving the blog editor interface. You&amp;#39;ll be able to choose the size and orientation of the image or video in the blog post, as you can see below.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/mediablogging-video-1.png&amp;quot; 
alt=&amp;quot;screenshot of new add media dialog&amp;quot; /&amp;gt;


&lt;br&gt;&lt;br&gt;

&lt;p&gt;Needless to say, I&amp;#39;m pretty excited about these new features, and to looking forward to a major new Roller release, and one where I don&amp;#39;t have to do much of the work. If you want more information on 5.0 then check the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/9aQB&quot;&gt;Apache Roller 5.0 proposal page&lt;/a&gt;. And if you want to help out then join the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/ZYk&quot;&gt;Roller development mailing list&lt;/a&gt; and introduce yourself.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/welcome_ganesh</guid>
    <title>Welcome Ganesh!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/welcome_ganesh</link>
    <pubDate>Mon, 16 Feb 2009 11:16:26 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
<description>&lt;p&gt;From the &lt;a href=&quot;http://rollerweblogger.org/project/entry/ganesh_mathrubootham_joins_roller&quot;&gt;Roller project blog&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a class=&quot;external&quot; href=&quot;http://www.linkedin.com/pub/dir/ganesh/mathrubootham&quot;&gt;Ganesh Mathrubootham&lt;/a&gt; has been doing great work on the &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/x/rnkB&quot;&gt;Media Blogging&lt;/a&gt; for Roller project and helping out in other ways in Roller development and support. So in January we nominated and voted him in as Roller&amp;#39;s newest committer. Welcome Ganesh, we&amp;#39;re very happy to have you on the team.
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#39;ve really enjoyed working with Ganesh and his project partner Tanuja over the past six months, so this is great news. I&amp;#39;ll tell you a bit more about the Media Blogging for Roller project in one of my next blog posts.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_4_0_1_bug</guid>
    <title>Roller 4.0.1 bug fix release available</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_4_0_1_bug</link>
    <pubDate>Wed, 14 Jan 2009 11:30:00 +0000</pubDate>
    <category>Roller</category>
    <category>roller</category>
<description>&amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/roller-cartoon-140x126.png&amp;quot; 
   alt=&amp;quot;roller logo&amp;quot; align=&amp;quot;right&amp;quot; /&amp;gt;

&lt;p&gt;Here&amp;#39;s the announcement from the Roller project blog:&lt;/p&gt;

&lt;blockquote&gt;
It&amp;#39;s been over a year since our last Roller release and we&amp;#39;ve fixed a couple dozen bugs in that time including an XSS vulnerability reported recently by &lt;a class=&quot;external&quot; href=&quot;http://secunia.com/advisories/31523&quot;&gt;Secunia.com&lt;/a&gt;. Now those fixes are available as an official Roller release, 4.0.1
&lt;ul&gt;
&lt;li&gt; Bugs fixed are listed in the &lt;a class=&quot;external&quot; href=&quot;https://issues.apache.org/roller/secure/ReleaseNote.jspa?projectId=10000&amp;amp;styleName=Html&amp;amp;version=10290&quot;&gt;JIRA Issue Tracker Release Notes&lt;/a&gt; page.
&lt;/li&gt;
&lt;li&gt; Updated files and docs are available via the &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org/downloads.html&quot;&gt;Apache download mirror network&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a bug-fix only release with no new features.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wondering what&amp;#39;s next for Roller? I&amp;#39;m going to push for a Roller 5.0 release in Spring 2009, as we&amp;#39;ve got good stuff in the trunk and more on the way, but I&amp;#39;m going to need your help to get there. More about that later.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/more_about_the_theme</guid>
    <title>More about Fauxcoly</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/more_about_the_theme</link>
    <pubDate>Thu, 8 Jan 2009 22:34:07 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>themes</category>
    <category>yui</category>
<atom:summary type="html">Fauxcoly is a new Roller theme that I designed over the winter break and the one that you see here on this blog. I wanted a new theme that&amp;#39;s simple, easy to maintain, exposes my non-blog activities like Twitter, explains itself and takes full advantage of Roller theme system. This post explains the design and how to try the theme out.&amp;nbsp;</atom:summary><description>&lt;p&gt;Fauxcoly is the new Roller theme that I designed over the winter break and the one that you see here on this blog. I wanted a new theme that&amp;#39;s simple, easy to maintain, exposes my non-blog activities like Twitter, explains itself and takes full advantage of Roller theme system. Initially, I was planning on incorporating Google Friend Connect but I decided to focus on the theme first then decide how to use the Google widgets for comments, activity display, etc. This post provides some details about the theme&amp;#39;s design, its features and how to set it up.&lt;/p&gt;


&lt;h4&gt;Layout based on YUI Grids CSS&lt;/h4&gt;

&lt;p&gt;The theme uses YUI Grids CSS for layout and a &lt;a href=&quot;http://www.alistapart.com/articles/fauxcolumns/&quot;&gt;faux-columns&lt;/a&gt; background image that I created in &lt;a href=&quot;http://www.pixelmator.com/&quot;&gt;PixelMator&lt;/a&gt;. Using &lt;a href=&quot;http://developer.yahoo.com/yui/grids/&quot;&gt;YUI Grids CSS&lt;/a&gt; is easy. There are just a couple of steps.&lt;/p&gt;

&lt;p&gt;You organize your pages into the divs that YUI expects: hd, bd and ft. You wrap those in the &amp;quot;document&amp;quot; div, give it an id that specifies one of four standard pages sizes and a class that specifies one of six standard layouts. For Fauxcoly, I used &lt;code&gt;id=&amp;quot;doc2&amp;quot;&lt;/code&gt; to specify a 950px wide and centered layout and &lt;code&gt;class=&amp;quot;yui-t6&amp;quot;&lt;/code&gt; to specify a 300px right-sidebar layout. So, all of the pages in the theme are setup like so:&lt;/p&gt;

&lt;pre&gt;

&amp;lt;div id=&amp;quot;doc2&amp;quot; class=&amp;quot;yui-t6&amp;quot;&amp;gt
   &amp;lt;div id=&amp;quot;hd&amp;quot;&amp;gt &lt;b&gt;header content&lt;/b&gt; &amp;lt/div&amp;gt;
   &amp;lt;div id=&amp;quot;bd&amp;quot;&amp;gt
      &amp;lt;div id=&amp;quot;yui-main&amp;quot;&amp;gt; 
         &amp;lt;div class=&amp;quot;yui-b&amp;quot;&amp;gt; &lt;b&gt;main content&lt;/b&gt; &amp;lt/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&amp;quot;yui-b&amp;quot;&amp;gt; &lt;b&gt;sidebar content&lt;/b&gt; &amp;lt;/div&amp;gt;  
   &amp;lt/div&amp;gt;
   &amp;lt;div id=&amp;quot;ft&amp;quot;&amp;gt &lt;b&gt;footer content&lt;/b&gt; &amp;lt/div&amp;gt;
&amp;lt/div&amp;gt;

&lt;/pre&gt;

&lt;p&gt;And second, you include the appropriate YUI Grid CSS includes in your HTML. I put the whole of YUI in the directory /roller-ui/yui, so my includes look like this:&lt;/p&gt;

&lt;pre&gt;

&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=
   &amp;quot;$url.site/roller-ui/yui/build/reset-fonts-grids/reset-fonts-grids.css&amp;quot; /&amp;gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=
   &amp;quot;$url.site/roller-ui/yui/build/base/base-min.css&amp;quot; /&amp;gt;

&lt;/pre&gt;

&lt;h4&gt;Roller action pages&lt;/h4&gt;

&lt;p&gt;In Roller 4.0 we introduced the Template Action concept, wherein each theme can define pages for a standard set of actions shown below. Fauxcoly takes full advantage of this and defines a specialized template for each supported action types. Here are the actions Roller supports:&lt;/p&gt;

&lt;table border=&quot;0&quot; style=&quot;margin-left:2em;&quot;&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Action&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Weblog&lt;/td&gt;       &lt;td&gt;Template used to display main page of weblog&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Permalink&lt;/td&gt;    &lt;td&gt;To display a single weblog entry&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Search&lt;/td&gt;       &lt;td&gt;To display search results&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;TagsIndex&lt;/td&gt;    &lt;td&gt;To display entries that match one or more tags&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Custom&lt;/td&gt;       &lt;td&gt;Themes can define any number of custom templates&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;


&lt;h4&gt;Fauxcoly pages and features&lt;/h4&gt;

&lt;p&gt;Here&amp;#39;s a rundown of the pages defined in Fauxcoly and the features of each.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Weblog page&lt;/b&gt;. This displays the main page of the weblog, a page-able view of the most recent weblog entries in the blog. Also:
   &lt;ul&gt;
      &lt;li&gt;Search box that does full text search on weblog entries&lt;/li&gt;
      &lt;li&gt;Welcome message and subscribe button&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://gmpg.org/xfn/&quot;&gt;XHTML Friends Network&lt;/a&gt; (XFN) of follow me links to owner&amp;#39;s other sites&lt;/li&gt;
      &lt;li&gt;Sidebar display of frequently used tags, linked to Tags Index page&lt;/li&gt;
      &lt;li&gt;Sidebar display of latest tweets, photo uploads and bookmarks&lt;/li&gt;
   &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Permalink page&lt;/b&gt;. Displays one individual weblog entry.
   &lt;ul&gt;
      &lt;li&gt;Welcome message with post to Delicious, Digg and Slashdot buttons&lt;/li&gt;
      &lt;li&gt;Shows list of recent related entries, i.e. those in same category&lt;/li&gt;
      &lt;li&gt;Links to navigate to next and previous entries&lt;/li&gt;
   &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;About page&lt;/b&gt;. Shows an about this weblog message that you can edit as a weblog entry. 
   &lt;ul&gt;
      &lt;li&gt;Welcome message and subscribe button&lt;/li&gt;
      &lt;li&gt;XHTML Friends Network (XFN) of follow me links to owner&amp;#39;s other sites&lt;/li&gt;
   &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tags Index page&lt;/b&gt;. Shows most recent entries tagged with one or more tags, allows paging to previous and next pages of entries. The page title and heading make it clear you are looking at filtered results and the sidebar provides a link back to the main page of the weblog.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Search page&lt;/b&gt;. Shows search results and allows paging to previous and next pages of entries. The page title and heading make it clear you are looking at search results and the sidebar provides a link back to the main page of the weblog.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Archives page&lt;/b&gt;. Allows you to browse archives using the &amp;quot;big calendar&amp;quot; and provides links to most recent 30 entries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Setting up Fauxcoly&lt;/h4&gt;

&lt;p&gt;Because of all the features, this theme is a little more difficult to setup than your average Roller theme. It is possible to setup the theme without actually customizing it via HTML/CSS edits, but you will need to be an admin user on your blog server to do a full setup. To help you along, when you first install the theme it will display the pointers below.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Welcome message&lt;/b&gt;. Fauxcoly uses your weblog&amp;#39;s About message as the welcome message. You can set your About message via your weblogs settings page.&lt;/p&gt;

&lt;p&gt;&amp;lt;img style=&amp;quot;margin-left:2em&amp;quot; src=&amp;quot;http://rollerweblogger.org/roller/resource/note-welcome.png&amp;quot; 
alt=&amp;quot;note about welcome&amp;quot; /&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Follow me links&lt;/b&gt;. Fauxcoly expects your weblog to have a bookmark folder caller &amp;quot;me&amp;quot; with links to your social network profile pages and other sites. It will display those bookmarks as XFN &amp;quot;me&amp;quot; links compatible with Google&amp;#39;s &lt;a href=&quot;http://code.google.com/apis/socialgraph/&quot;&gt;Social Graph API&lt;/a&gt;. For best results, specify a 14x4 pixel image for each link.&lt;/p&gt;

&lt;p&gt;&amp;lt;img style=&amp;quot;margin-left:2em&amp;quot; src=&amp;quot;http://rollerweblogger.org/roller/resource/note-melinks.png&amp;quot; 
alt=&amp;quot;note about me links&amp;quot; /&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;All feeds&lt;/b&gt;. Fauxcoly uses Roller&amp;#39;s built in Planet aggregator to display your latest tweets, photos and bookmarks. To set this you, you&amp;#39;ll need admin privileges on Roller. Create an aggregation group called &amp;quot;allfeeds&amp;quot; and include in it your blog feed, Twitter feed, Delicious.com feed and Flickr feed.&lt;/p&gt;

&lt;p&gt;&amp;lt;img style=&amp;quot;margin-left:2em&amp;quot; src=&amp;quot;http://rollerweblogger.org/roller/resource/note-allfeeds.png&amp;quot;  
alt=&amp;quot;note about allfeeds&amp;quot; /&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;About this blog&lt;/b&gt;. To setup the about this blog page, you must create a weblog entry titled &amp;quot;About this blog.&amp;quot; Once you do that, it will appears on your About page.&lt;/p&gt;

&lt;p&gt;&amp;lt;img style=&amp;quot;margin-left:2em&amp;quot; src=&amp;quot;http://rollerweblogger.org/roller/resource/note-about.png&amp;quot; 
alt=&amp;quot;note about about page&amp;quot; /&amp;gt;&lt;/p&gt;


&lt;h4&gt;Download it a try it out&lt;/h4&gt;

&lt;p&gt;Fauxcoly has been tested with Apache Roller 4.0. To install it you simply download it, expand the tarfile into your Roller themes directory and restart Roller. You&amp;#39;ll then be able to pick the theme via the Roller theme chooser. Here&amp;#39;s the download link:&lt;/p&gt;

&lt;p style=&quot;margin-left:2em;&quot;&gt;&lt;a href=&quot;http://people.apache.org/~snoopdave/themes/fauxcoly-20090108.tgz&quot;&gt;fauxcoly-20090108.tgz&lt;/a&gt; (496KB gzipped tarfile)&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/eclectic_roller_hacks</guid>
    <title>Eclectic Roller hacks</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/eclectic_roller_hacks</link>
    <pubDate>Wed, 7 Jan 2009 18:03:25 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
<description>Sun&amp;#39;s CTO for UK and Ireland, Wayne Horkan, is a bit of a Roller hacker, and I mean that in the nicest way possible &lt;img src=&quot;https://rollerweblogger.org/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot;&gt; His blog has always been a showcase for what you can do with Roller template programming, although recently he has adopted a more simple and clean design. Wayne just posted a set of three interesting and useful Roller hacks on his blog &lt;a href=&quot;http://blogs.sun.com/eclectic/&quot;&gt;Eclectic&lt;/a&gt;:

&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://blogs.sun.com/eclectic/entry/roller_weblogger_next_previous_macro&quot;&gt;New next-previous macro&lt;/a&gt;: this one is useful for showing a reader where they are in a blog, which post they are reading and the names of the next and previous posts; sorta like the &amp;quot;current location&amp;quot; sidebar in &lt;a href=&quot;http://blogs.sun.com/greimer/&quot;&gt;Greg Reimer&lt;/a&gt;&amp;#39;s theme.
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://blogs.sun.com/eclectic/entry/roller_weblogger_related_entries_macro&quot;&gt;Related entries&lt;/a&gt;: this is designed for use on an individual entry page and shows entries that are related to the entry being viewed based on tag and category relationships. This is an especially good hack because the code is a little scary; it iterates through the most recent 1000 posts in the entry&amp;#39;s category, then the most recent 1000 entries in any category and then it does some analysis. I suspect this gives blogs.sun.com a bit of a workout, but it&amp;#39;s serving four million hits/day at &lt;a href=&quot;http://rollerweblogger.org/roller/entry/details_of_roller_setup_at&quot;&gt;97% idle&lt;/a&gt; so that should be no problem, no?
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;http://blogs.sun.com/eclectic/entry/roller_weblogger_archive_menu_macro&quot;&gt;Archive macro&lt;/a&gt;: this one shows a blogger.com-like list of links to recent month&amp;#39;s entries. Would be a little nicer if it displayed a count of entries for each month, but I don&amp;#39;t think that&amp;#39;s possible with Roller&amp;#39;s current template system and models.
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nice stuff. Have you got any Roller hacks to share?&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/fauxcoly_and_xhtml</guid>
    <title>Fauxcoly and XHTML</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/fauxcoly_and_xhtml</link>
    <pubDate>Tue, 6 Jan 2009 08:59:36 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>themes</category>
    <category>xhtml</category>
<description>&lt;p&gt;Believe it or not, I&amp;#39;ve never created an XHTML theme for 
&lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and I didn&amp;#39;t even notice the XHTML declaration when I put my new theme (which I&amp;#39;m calling &lt;i&gt;Fauxcoly&lt;/i&gt;) together. I did notice when I got over 400 validation errors from the &lt;a href=&quot;http://validator.w3.org&quot;&gt;HTML validator&lt;/a&gt;. So, I worked for a couple of hours last night to fix the errors both in my new theme and in my most recent weblog entries. I also had to fix a couple of Roller bugs, which need to be reported.&lt;/p&gt; 

&lt;p&gt;Now the main pages of my blog validate and I&amp;#39;m brave enough to put this in the theme&amp;#39;s footer.&lt;/p&gt;

&lt;p&gt;
    &lt;a href=&quot;http://validator.w3.org/check?uri=referer&quot;&gt;
    &amp;lt;img src=&amp;quot;http://www.w3.org/Icons/valid-xhtml10-blue&amp;quot;
        alt=&amp;quot;Valid XHTML 1.0 Transitional&amp;quot; height=&amp;quot;31&amp;quot; width=&amp;quot;88&amp;quot; /&amp;gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Having a theme that supports XHTML isn&amp;#39;t enough, of course. You also have to ensure that each blog entry is well formed and comments too. Unfortunately, we don&amp;#39;t have great infrastructure for that in Roller (yet).&lt;/p&gt;

&lt;p&gt;I still plan to release the theme in packaged-theme form, but only after I XHTML-ize it too.&lt;/p&gt;

  </description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/details_of_roller_setup_at</guid>
    <title>Details of Roller setup at blogs.sun.com</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/details_of_roller_setup_at</link>
    <pubDate>Tue, 18 Nov 2008 15:33:52 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>bsc</category>
    <category>java</category>
    <category>sun</category>
<description>&lt;p&gt;Meena Vyas, Murthy Chintalapati and Allen Gilliland just published an article on BigAdmin that describes the architecture of &lt;a href=&quot;http://blogs.sun.com&quot;&gt;blogs.sun.com&lt;/a&gt;, a Roller, Sun Web Server, Memcached and MySQL based site that averages 4 million hits a day with its two SunFire T2000 servers at 97% idle. You can get the article for free (registration required) here: &lt;a href=&quot;http://www.sun.com/bigadmin/features/articles/sunblogs.jsp&quot;&gt;Sun Blogs: A Sun Java System Web Server 7.0 Reference Deployment&lt;/a&gt;&lt;/p&gt;

   &amp;lt;img src=&amp;quot;http://rollerweblogger.org/roller/resource/bsc-architecture.png&amp;quot; 
      title=&amp;quot;blogs.sun.com architecture&amp;quot; alt=&amp;quot;diagram&amp;quot; /&amp;gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/what_s_up_with_roller</guid>
    <title>What&amp;#39;s up with Roller?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/what_s_up_with_roller</link>
    <pubDate>Mon, 13 Oct 2008 09:53:38 +0000</pubDate>
    <category>Roller</category>
    <category>status</category>
<description>&lt;p&gt;I&amp;#39;ve been neglecting my Blogging Roller duties, no doubt, but Roller work continues albeit at a slower pace. If you want the official word on &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; status and progress then check the project&amp;#39;s reports to the &lt;a href=&quot;http://apache.org/foundation/board/&quot;&gt;ASF board&lt;/a&gt;. I just added links to the most recent three reports to the &lt;a href=&quot;http://rollerweblogger.org/project&quot;&gt;Roller project blog&lt;/a&gt;. Here&amp;#39;s a summary of those reports lifted right from the blog:&lt;/p&gt;

&lt;div style=&quot;margin-left:2em;font-size:90%;&quot;&gt;

&lt;h3&gt;&lt;a href=&quot;http://rollerweblogger.org/project/entry/august_2008_board_report&quot;&gt;
August 2008 Board Report&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Apache Roller project&amp;#39;s latest report to the ASF board is available here: &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/August+2008+Board+Report&quot;&gt;August 2008 Board Report&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt;. Highlights include some commentary about community health, &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+OpenID+Support&quot;&gt;OpenID support&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt; via the &lt;a class=&quot;external&quot; href=&quot;http://code.google.com/soc/2008/&quot;&gt;Google Summer of Code&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt; and a new project to improve Roller&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+Media+Blogging+Support&quot;&gt;Media Blogging&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;out&quot;&gt; facilities.&lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;http://rollerweblogger.org/project/entry/may_2008_board_report&quot;&gt;
May 2008 Board Report&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Apache Roller project&amp;#39;s latest board report is available here: &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/May+2008+Board+Report&quot;&gt;May 2008 Board Report&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt;. The highlights include the completion of new &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+Externalize+User+And+Permissions+Management&quot;&gt;Externalized User Management&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt; and &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+Tag+Data+API&quot;&gt;Tag Data API&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt; work for Roller 4.1. &lt;/p&gt;

&lt;h3&gt;&lt;a href=&quot;http://rollerweblogger.org/project/entry/february_2008_board_report&quot;&gt;
February 2008 Board Report&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The Apache Roller project reports status on a quarterly basis and the latest report is now available here: &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/February+2008+Board+Report&quot;&gt;February 2008 Board Report&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt;. Highlights from the report include the release of Apache Roller 4.0 and work towards a proposal for &lt;a class=&quot;external&quot; href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+Roller+4.1+Release&quot;&gt;Roller 4.1&lt;/a&gt;&lt;img class=&quot;outlink&quot; src=&quot;http://rollerweblogger.org/wiki/images/out.png&quot; alt=&quot;&quot;&gt;.&lt;/p&gt;

&lt;/div&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/gentle_reminder_about_roller_support</guid>
    <title>Gentle reminder about Roller support</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/gentle_reminder_about_roller_support</link>
    <pubDate>Tue, 23 Sep 2008 10:00:16 +0000</pubDate>
    <category>Roller</category>
<description>&lt;p&gt;If you need help with Roller, please do not write to me directly. Please write to the &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists&quot;&gt;Roller user mailing list&lt;/a&gt; instead so that everybody has a chance to answer and benefit from the answer to your questions. Of course, there is no guarantee that your questions will be answered on the mailing lists. If you&amp;#39;re willing to pay for an assurance of support, then look to &lt;a href=&quot;https://www.covalent.net/supportservices/roller/index.html&quot;&gt;Covalent, a company that offers commercial Roller support&lt;/a&gt;. Unfortunately, they&amp;#39;re still stuck on the old and out-of-date Roller 3.x release.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/openid_support_in_roller</guid>
    <title>OpenID support in Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/openid_support_in_roller</link>
    <pubDate>Wed, 3 Sep 2008 07:46:50 +0000</pubDate>
    <category>Roller</category>
    <category>google</category>
    <category>gsoc</category>
    <category>openid</category>
    <category>roller</category>
<description>&lt;p&gt;Thanks to one hard working student and the &lt;a href=&quot;http://code.google.com/soc/2008/&quot;&gt;Google Summer of Code&lt;/a&gt;, we now have a patch for &lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt; support in Roller and its ready to commit to trunk. Here&amp;#39;s a teaser screenshot:&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://cwiki.apache.org/confluence/download/attachments/86221/login-hybrid.png&amp;quot; 
title=&amp;quot;OpenID login screen&amp;quot; /&amp;gt;

&lt;p&gt;If you want to know more, the &lt;a href=&quot;http://cwiki.apache.org/confluence/display/ROLLER/Proposal+OpenID+Support&quot;&gt;proposal for OpenID support&lt;/a&gt; is on our wiki and the patch is attached to &lt;a href=&quot;https://issues.apache.org/roller/browse/ROL-1733&quot;&gt;issue ROL-1733&lt;/a&gt; in our bug tracking system.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_at_open_source_days</guid>
    <title>Roller and SocialSite at Open Source Days 2008</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_at_open_source_days</link>
    <pubDate>Mon, 18 Aug 2008 18:36:38 +0000</pubDate>
    <category>Roller</category>
    <category>conferences</category>
    <category>opensource</category>
    <category>roller</category>
    <category>socialsite</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/OSD-Logo2008_155.png&quot; alt=&quot;Open Source Days 2008 logo&quot; align=&quot;right&quot;&gt;

&lt;p&gt;I&amp;#39;m happy to report that I&amp;#39;ll be traveling to Copenhagen, Denmark to talk about &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; and &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; at the &lt;a href=&quot;http://www.opensourcedays.org/2008/&quot;&gt;Open Source Days 2008&lt;/a&gt; conference on Oct. 3-4 this year. I&amp;#39;m going to tell the story of Roller and lessons learned along the way and then talk about blogging in the age of social networks and how to social-enable Roller with the SocialSite widgets. The session is called titled &lt;a href=&quot;http://www.opensourcedays.org/2008/agenda/sessions/DaveJohnson.shtml&quot;&gt;The once and future Roller&lt;/a&gt;.&lt;/p&gt;


</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/roller_status3</guid>
    <title>Roller status</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/roller_status3</link>
    <pubDate>Mon, 18 Aug 2008 18:27:40 +0000</pubDate>
    <category>Roller</category>
    <category>asf</category>
    <category>opensource</category>
    <category>roller</category>
<description>&lt;img src=&quot;http://rollerweblogger.org/roller/resource/apachelogo.gif&quot; alt=&quot;feather logo&quot;&gt;

&lt;p&gt;If you want the lowdown on what&amp;#39;s going on with Roller community health, ongoing work and upcoming releases then check out the &lt;a href=&quot;http://cwiki.apache.org/confluence/x/Q2sB&quot;&gt;Apache Roller August 2008 Board Report&lt;/a&gt;.&lt;/p&gt;


</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/test_post_from_iphone</guid>
    <title>Test post from iPhone</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/test_post_from_iphone</link>
    <pubDate>Fri, 18 Jul 2008 10:39:29 +0000</pubDate>
    <category>Roller</category>
    <category>iphone</category>
    <category>moblogging</category>
<description>&lt;p&gt;Via &lt;a href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt; web UI. It&amp;#39;s not the most pleasant experience, pinching and scrolling around to move from title to content and then down the page to find the post button, but you can post to Roller from an iPhone. Seems like you could throw together a pretty nice iPhone interface for Roller using &lt;a href=&quot;http://code.google.com/p/iui/&quot;&gt;iUI&lt;/a&gt;. Who needs Android, J2ME, etc. when you can just use the web?&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/happy_4th_birthday_to_blogs</guid>
    <title>Happy 4th birthday to blogs.sun.com</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/happy_4th_birthday_to_blogs</link>
    <pubDate>Sun, 27 Apr 2008 17:30:43 +0000</pubDate>
    <category>Roller</category>
    <category>blogging</category>
    <category>roller</category>
    <category>sun</category>
<description>&lt;p&gt;I remember how freaked-out I was to see the referrer hits start rolling in (pun fully intended) from &lt;a href=&quot;http://blogs.sun.com&quot;&gt;http://blogs.sun.com/roller&lt;/a&gt;. I can&amp;#39;t believe it&amp;#39;s been four years already. Thanks to &lt;a href=&quot;http://blogs.sun.com/lskrocki/entry/happy_4th_birtday_sun_blogs&quot;&gt;Linda&lt;/a&gt; for the reminder.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/google_summer_of_code_ideas</guid>
    <title>Google Summer of Code ideas for Roller</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/google_summer_of_code_ideas</link>
    <pubDate>Sun, 16 Mar 2008 13:55:31 +0000</pubDate>
    <category>Roller</category>
    <category>google</category>
    <category>opensource</category>
    <category>roller</category>
<description>&lt;p&gt;I asked for Google Summer of Code (GSOC) ideas for Roller a couple of days ago. Below are links to the proposals I thought were good enough to volunteer as possible mentor for and to submit. The deadline is tomorrow, so you&amp;#39;ve still got time to suggest additions to the list.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-openid&quot;&gt;Roller OpenID&lt;/a&gt;: 
Open ID support for Roller blog server, for user accounts and comments&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-mobile&quot;&gt;Roller Mobile&lt;/a&gt;:
Mobile interface for Roller blog server&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-activities&quot;&gt;Roller Activities&lt;/a&gt;: 
Simple Social Networking for Roller blog server, Twitter-like activities&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-abdera&quot;&gt;Roller Abdera&lt;/a&gt;: 
Abdera-based AtomPub implementation for Roller blog server&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-atomexport&quot;&gt;AtomPub Export&lt;/a&gt;:
AtomPub Export for Roller blog server, export all!&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-shindig&quot;&gt;Roller Shindig&lt;/a&gt;: 
Google Gadget support in Roller blog server themes via Shindig&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008#roller-photogallery&quot;&gt;Roller Photo Gallery&lt;/a&gt;:
Better photo and file upload features in Roller blog server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here&amp;#39;s the full list of &lt;a href=&quot;http://wiki.apache.org/general/SummerOfCode2008&quot;&gt;Apache GSOC proposals&lt;/a&gt;.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/howto_memcached_with_roller</guid>
    <title>HOWTO: Configure Roller to use Memcached</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/howto_memcached_with_roller</link>
    <pubDate>Thu, 6 Mar 2008 17:43:19 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
    <category>memcached</category>
<atom:summary type="html">In my last post, I explained the details of Roller cache configuration and I mentioned that Roller&amp;#39;s caching system is pluggable but I didn&amp;#39;t explain what that really buys you. Basically, what it means is that you can replace Roller&amp;#39;s in-memory LRU caching mechanism with something else. In this blog entry, I&amp;#39;ll explain how to do that.</atom:summary><description>&lt;p&gt;In my last post, I explained the details of &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/howto_configure_roller_caching&quot;&gt;Roller cache configuration&lt;/a&gt; and I mentioned that Roller&amp;#39;s caching system is pluggable but I didn&amp;#39;t explain what that really buys you. Basically, what it means is that you can replace Roller&amp;#39;s in-memory LRU caching mechanism with something else. In this blog entry, I&amp;#39;ll explain how to do that and specifically, how to replace Roller&amp;#39;s built-in cache with the popular &lt;a class=&quot;external&quot; href=&quot;http://www.danga.com/memcached&quot;&gt;Memcached&lt;/a&gt; caching system via the Roller Memcached plugin, which, like the rest of the Roller caching system was written by Allen Gilliland for use on &lt;a class=&quot;external&quot; href=&quot;http://blogs.sun.com&quot;&gt;blogs.sun.com&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;First, what is Memcached? Here&amp;#39;s what the Memcached web site says:
&lt;/p&gt;
&lt;dl&gt;&lt;dt&gt;&lt;/dt&gt;&lt;dd&gt;&lt;i&gt;&amp;quot;Memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.&lt;/i&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;dl&gt;&lt;dt&gt;&lt;/dt&gt;&lt;dd&gt;Danga Interactive developed memcached to enhance the speed of LiveJournal.com, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of webservers and a bunch of database servers. memcached dropped the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.&amp;quot;&lt;i&gt;&lt;/i&gt;&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;&lt;i&gt;Lots of big sites use Memcached for distributed caching. In addition to LiveJournal, there&amp;#39;s also Wikipedia, Slashdot, SourceForge and  our very own blogs.sun,com. If you&amp;#39;re wanting to use Memcached, then you&amp;#39;re in good company.
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Why would you want to use Memcached with Roller? Well, if you are running a large Roller site and you&amp;#39;ve got multiple instances of Roller running then you might run into problems with cache consistency. A blog update that hits server A will update the cache on server A, but server B will still have the old blog data for some time. Using a distributed cache will solve this problem. Another, hopefully &lt;/i&gt;much&lt;i&gt; less common, reason for wanting to use Memcache is to avoid using the JVM heap -- some folks have experienced some &lt;a class=&quot;external&quot; href=&quot;http://www.javalobby.org/java/forums/t99490.html&quot;&gt;weird problems&lt;/a&gt; with the JVM heap management and might want to use plain old C memory management instead via Memcached.
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;br&gt;
&lt;b&gt;Download and install Memcached&lt;/b&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;The first thing you need to do is to get yourself a copy of Memcached. You can get downloads and docs on the &lt;a class=&quot;external&quot; href=&quot;http://www.danga.com/memcached&quot;&gt;Memcached web site&lt;/a&gt;. You can build it yourself if you&amp;#39;re a manly man or a womanly woman, but there are some much easier options. 
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;For example, on Ubuntu or Debian, you can install Memcached with one simple command:
&lt;/i&gt;&lt;/p&gt;
&lt;pre&gt;

   apt-get install memcached

&lt;/pre&gt;
&lt;p&gt;Or, if you&amp;#39;re on Solaris and you&amp;#39;re a &lt;a class=&quot;external&quot; href=&quot;http://www.blastwave.org/&quot;&gt;Blastwave&lt;/a&gt; user, then you can do this:
&lt;/p&gt;
&lt;pre&gt;

   pkg-get install memcached

&lt;/pre&gt;
&lt;p&gt;On Mac, you can probably do something similar with &lt;a class=&quot;external&quot; href=&quot;http://www.finkproject.org&quot;&gt;Fink&lt;/a&gt; or &lt;a class=&quot;external&quot; href=&quot;http://www.macports.org&quot;&gt;MacPorts&lt;/a&gt;. There&amp;#39;s also a &lt;a class=&quot;external&quot; href=&quot;http://jehiah.cz/projects/memcached-win32&quot;&gt;Win32 version&lt;/a&gt; for those less fortunate.
&lt;/p&gt;
&lt;p&gt;And, of course, you&amp;#39;ll have to install Memcached on each machine on which you want to act as a cache server.
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;br&gt;
&lt;b&gt;Setup your Memcached caches&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;Now that you&amp;#39;ve got Memcached installed, you need to start it up. 
&lt;/p&gt;
&lt;p&gt;For example, let&amp;#39;s say you want to have two 2GB caches running on your two machines with IP addresses 10.0.0.40 and 10.0.0.41. One one maching you&amp;#39;d run this command to start the Memcached daemon with 2048M RAM and listening on port 11211.
&lt;/p&gt;
&lt;pre&gt;

$ ./memcached -d -m 2048 -l 10.0.0.40 -p 11211 

&lt;/pre&gt;
And on your other machine 10.0.0.41, you&amp;#39;d start Memcached with this command:
&lt;pre&gt;

$ ./memcached -d -m 2048 -l 10.0.0.41 -p 11211

&lt;/pre&gt;
&lt;p&gt;And, you&amp;#39;ll almost certainly want to set things up so that your Memcached daemons start up whenever your servers start up. On Solaris or Linux that means adding things under the /etc/init.d directory. You&amp;#39;ll have to figure that out for yourself.
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;br&gt;
&lt;b&gt;Download and install the Roller Memcached plugin&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;Next, you need to get yourself a copy of the Roller Memcached plugin and install it into Roller. You can get it from the Roller Support project. Go to the project&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;https://roller.dev.java.net/servlets/ProjectDocumentList&quot;&gt;file download page&lt;/a&gt; and navigate to &lt;b&gt;Roller Support 4.0 / Plugins&lt;/b&gt;, or just use the link below:
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;external&quot; href=&quot;https://roller.dev.java.net/files/documents/190/88023/roller-memcached-4.0.tar.gz&quot;&gt;https://roller.dev.java.net/.../roller-memcached-4.0.tar.gz&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Unzip that file and add the two jars within to your Roller install&amp;#39;s WEB-INF/lib directory. Assuming that the Roller context is in the directory $ROLLER_HOME, you might do that like so:
&lt;/p&gt;
&lt;pre&gt;

$ tar xzvf roller-memcached-4.0.tar.gz 
$ cp roller-memcached/* $ROLLER_HOME/WEB-INF/lib

&lt;/pre&gt;
&lt;p&gt;
&lt;p&gt;&lt;br&gt;
&lt;b&gt;Configure the Memcached Plugin and Roller caching&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;The final step is to configure Roller to use Memcached for caching.  To do that, you simply add some properties to your roller-custom.properties override file. To use Memcached for all of your caches, set the following property:
&lt;/p&gt;
&lt;pre&gt;   

   cache.defaultFactory=\ 
      net.java.roller.tools.cache.memcached.MemcachedLRUCacheFactoryImpl

&lt;/pre&gt;
&lt;p&gt;If you don&amp;#39;t want to use Memcached for all of your caches, then configure it for just the caches you want. Refer to my &lt;a class=&quot;external&quot; href=&quot;http://rollerweblogger.org/roller/entry/howto_configure_roller_caching&quot;&gt;previous post about Roller caching&lt;/a&gt; for details, but basically you just set the factory for the cache to use the Memcached cache factory. For example, to use Memcached for caching feeds only, you&amp;#39;d add this instead of the above:
&lt;/p&gt;
&lt;pre&gt;

   cache.weblogfeed.factory=\ 
      net.java.roller.tools.cache.memcached.MemcachedLRUCacheFactoryImpl

&lt;/pre&gt;
&lt;p&gt;You also need to tell the Roller Memcached plugin how to find the Memcached servers. To continue with the example we started above with servers 10.0.0.40 and 10.0.0.41, you could add this to set the default Memcached servers for all caches:
&lt;/p&gt;
&lt;pre&gt;

cache.memcached.default.servers=10.0.0.40:11211, 10.0.0.41:11211 

&lt;/pre&gt;
&lt;p&gt;You can also set the servers to be used for specific caches . For example, here we set the weblog feed cache to use two different Memcached servers from that used by the weblog page cache:
&lt;/p&gt;
&lt;pre&gt;

cache.memcached.weblogpage.servers=10.0.0.40:11211, 10.0.0.41:11211 
cache.memcached.weblogfeed.servers=10.0.0.50:11211, 10.0.0.51:11211

&lt;/pre&gt;
&lt;p&gt;
&lt;p&gt;&lt;br&gt;
&lt;b&gt;Fire it up!&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;Now you&amp;#39;re ready to start up Roller. You might want to add some debug logging the first time around just to make sure things are working. Roller uses Log4j caching and you can add the Log4j properties directly to your roller-custom.properties file. For example, to enable debug caching for the Roller Memcached plugin you&amp;#39;d add this:
&lt;/p&gt;
&lt;pre&gt;

log4j.category.net.java.roller.tools.cache.memcached=DEBUG

&lt;/pre&gt;
&lt;p&gt;And that&amp;#39;s that. Let me know via comments if I&amp;#39;ve left something out or gotten something wrong. I&amp;#39;d also like to hear if you&amp;#39;ve had some success with Roller and Memcached. &lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogcentral_jpost_com</guid>
    <title>blogcentral.jpost.com</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogcentral_jpost_com</link>
    <pubDate>Wed, 5 Mar 2008 10:44:18 +0000</pubDate>
    <category>Roller</category>
    <category>apacheroller</category>
<description>&lt;p&gt;The Jerusalem Post is blogging with &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt;. (Belated) Congratulations to developer Odelya Glick and the rest of the JPost web team on the site launch.&lt;/p&gt;
&lt;a href=&quot;http://blogcentral.jpost.com/&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/resource/blogcentral-jpost.png&quot; alt=&quot;blog central logo&quot;&gt;
&lt;/a&gt;&lt;br&gt;

[&lt;a href=&quot;http://blogcentral.jpost.com/&quot;&gt;link&lt;/a&gt;]</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wwwin_blogs_cisco_com</guid>
    <title>wwwin-blogs.cisco.com</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wwwin_blogs_cisco_com</link>
    <pubDate>Tue, 12 Feb 2008 21:21:20 +0000</pubDate>
    <category>Roller</category>
    <category>blogging</category>
<description>&lt;p&gt;Apparently, CISCO has a pretty active internal blog server and it&amp;#39;s running Roller. I can tell from my referrer logs. If any CISCO folks are reading this, drop me a line. I&amp;#39;d love to know how Roller and internal blogging in general is working out for you.&lt;/p&gt; </description>  </item>
</channel>
</rss>