Apache Roller 6.1.6
Scope installer table detection to the connection's catalog

DatabaseInstaller.tableExists() passed a null catalog to
DatabaseMetaData.getTables(). Connector/J 5.1 read that as "the current
database", but Connector/J 8 reads it as every database on the server,
having changed nullCatalogMeansCurrent to default to false.

On a MySQL server hosting more than one Roller schema, that made
isCreationRequired() find userrole and roller_user in some other
database and report that this one was already installed. Roller then
skipped table creation, fell through to isUpgradeRequired(), logged
ERROR setting database version, and died with "Table
'<schema>.roller_properties' doesn't exist" — while Tomcat reported
only "One or more listeners failed to start", which sends you looking
at the datasource rather than the metadata call.

Pass con.getCatalog() instead. Drivers that do not use catalogs return
null there, which is the query that was being made before.

Also document that the initial-setup token is required for an upgrade
that migrates the schema, not only for a new installation, and that
6.1.x to 6.1.6 needs no token at all. The install guide described only
the new-installation case, in a section titled "Upgrading Roller".

Verified: full build green (325 tests), and the Selenium
InitialLoginTestIT end-to-end run passes against Derby, covering the
token gate, first-administrator registration, weblog creation and
entry rendering on a non-MySQL database.

Claude-Session: https://claude.ai/code/session_015X69HHQ5XnjRkJP8ymzwFf
5 files changed
tree: f5df10691b9ac5894136f9e7f4faf8291d9f9db5
  1. .github/
  2. app/
  3. assembly-release/
  4. binary-includes/
  5. db-utils/
  6. docker/
  7. docs/
  8. it-selenium/
  9. skills/
  10. testing/
  11. .asf.yaml
  12. .gitignore
  13. CHANGES.md
  14. CONTRIBUTING.md
  15. doap_roller.rdf
  16. docker-compose.yml
  17. Dockerfile
  18. LICENSE.txt
  19. nbactions.xml
  20. NOTICE.txt
  21. pom.xml
  22. README.md
  23. version-rules.xml
README.md

Apache Roller

Apache Roller is a Java-based, full-featured, multi-user and group-blog server suitable for blog sites large and small. Roller is typically run with Apache Tomcat and MySQL. Roller is made up of the following Maven projects:

  • roller-project: Top level project
  • app: Roller Weblogger webapp, JSP pages, Velocity templates
  • assembly-release: Used to create official distributions of Roller
  • docs: Roller documentation in ASCII Doc format
  • it-selenium: Integrated browser tests for Roller using Selenium

Documentation

The Roller Install, User and Template Guides are available in ODT format (for OpenOffice or LibraOffice):

For more information

Hit the Roller Confluence wiki:

Installing Roller

If you want to run Roller in production, then you should down load the latest official release and install it by following the Installation Guide, which you can find at the documentation link: https://github.com/apache/roller/tree/master/docs.

Quick start: Running via Maven

You probably should not run Roller in production using this technique, but it‘s a relatively easy way to try Roller for yourself. Assuming you’ve got a UNIX shell, Java, Maven and Git:

Get the code:

$ git clone https://github.com/apache/roller.git

Compile and build Roller:

$ cd roller
$ mvn -DskipTests=true install

Run Roller in Jetty with an embedded Derby database (for testing only):

$ mvn jetty:run

Once Jetty is up and running browse to http://localhost:8080/roller to try to Roller.

Quick start: running via Docker

Another way to try Roller is to use Docker. This is actually easier than running via Maven because you do not need Maven or Java. If you‘ve got Docker, here’s how you can run Roller for demo purposes.

Get the code:

$ git clone https://github.com/apache/roller.git

Run Docker Compose to build and launch Roller along with a PostgreSQL database:

$ cd roller
$ docker-compose up

It will take a while to build and start the Docker image. Once it's done browse to http://localhost:8080/roller to try Roller.