Uportal on Ubuntu Or Why Uportal Sucks Rocks

Ok, let me start off by saying Java’s not my thing. But I’ve been wanting to experiment with uPortal.  Frankly, I think that their documentation leaves a bit to be desired when it comes to building this on Ubuntu with standard packages.  The nutshell version is that uPortal might be good product but the documentation sucks rocks.  There is no help available.   Just a side note:  If you want people to use your product, it needs to be easy to use.  That means easy to install with good documentation and some sort of useful help mechanism (IRC, message boards, etc.) when things don’t go according to plan. 

  1. uPortal’s directions aren’t so great to begin with.
  2. The only place you can get help is from the mailing list.
  3. You can’t send anything to the user list unless you subscribe.
  4. The subscription mechanism doesn’t seem to exist

BIG FAT IMPORTANT NOTE YOU MUST READ BEFORE YOU GO ON:  I HAVE YET TO GET THIS TO WORK.  ITS CLOSE BUT IT IS STILL NOT WORKING.  IF YOU FIGURE OUT THE SECRET SAUCE PLEASE LET ME KNOW. 

The uPortal document indicates that you should build from source for production machines.  *sigh*  Can’t I have a .deb please??????? No….  $%#@!@

Go download uPortal version 4 – http://www.jasig.org/uportal/download.

I’m going to leap out on a limb here and assume that you can download a gzipped tarball by yourself and then untar it on your server without needing someone to hold your hand.  If you do need that, I’m going to venture that uPortal probably isn’t something you want to attempt unless you have bourbon, asprin, and maybe a hand grenade handy.  So rather than resorting to desperate measures, find someone to help you that understands Ant, Maven, and Tomcat.

uPortal requires java, maven, ant, and tomcat

First, I’m assuming (dangerous, but I see no other indications) that they’re using Sun/Oracle Java.  To get that, you need to add this ppa: https://launchpad.net/~webupd8team/+archive/java

NOTE: You CANNOT use MYSQL if you want UTF-8 support!

“DRAT!  Now I have to remove MySQL and install PostgreSQL”

apt-get install sun-java6-installer maven ant tomcat6 tomcat6-manager postgresql ant maven

Go head and install ant but you will have to downgrade to the Raring Ringtail version which seems to be working OK on Trusty Tahr.  This will give you the required 1.8.2.

You will need to edit /etc/environment and define the following:

JAVA_HOME=”/usr”
M2_HOME=”/usr/share/maven”
ANT_HOME=”/usr/bin/ant”

 

Required Versions #1 :  Building with Java7 or Java8 has failed repeatedly.  YMMV. The “sure-fire” tests fail with anything other than Java6.

Required Versions #2:  Building with tomcat7 has failed repeatedly.  YMMV. Tomcat6 – despite its issues – seems to be a requirement.

Required Versions #3:  Building with Ubuntu’s default Ant package has failed repeatedly.  YMMV. Ant 1.8.2 seems to be a requirement.

Required Versions #4:  Building with Ubuntu’s default Maven package has failed repeatedly.  YMMV. Maven 3.0.4 seems to be a requirement. 


You’ll need to symlinks in /usr/share/tomcat6 to all the directories housed /var/lib/tomcat6

Going the other direction you’ll need to create a symlink for /usr/share/tomcat6/lib in /var/lib/tomcat6

That seems to make the build process quite a bit happier.

Add this to /etc/tomcat6/context.xml

        sessionCookiePath=”/”

You will have to add this to the /etc/tomcat6/tomcat-users.xml.  Make sure that you make a note of the EXACT user names and passwords since you’re going to need them again.

<role to manage WAR files via HTML /manager. The name should be as is! –>
<role rolename=”admin-gui”/>
<!– Role to manage WAR files via script like Maven. The name should be as is! –>
<role rolename=”admin-script”/>

<!– One user cannot have admin-gui and admin-script roles –>
<user username=”MyManagerGui” password=”PASSWORD” roles=”admin-gui”/>
<user username=”MyManagerScript” password=”PASSWORD” roles=”admin-script”/>

Now you must go to the directory where you unzipped your uPortal files and edit the pom.xml

Find the section on plugins and add this:

            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat6-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <url>http://localhost:8080/manager/html/</url&gt;
                    <server>my-tomcat</server>
                    <path>/myapp</path>
                </configuration>
            </plugin>

Now go to your home directory or, if you’re like me and you’re doing this as root, /root

Find the .m2 directory in that home directory and add a new file named settings.xml inside it.

<style=”padding-left: 30px;”><settings xmlns=”http://maven.apache.org/SETTINGS/1.0.0&#8243;
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221;
xsi:schemaLocation=”http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd”&gt;
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>

 Now save that, so we can edit it.

remove the line that says <servers/> & replace it with this:

 

<servers>
<server>
<id>my-tomcat</id>
<username>MyManagerScript</username>
<password>PASSWORD</password>
</server>
</servers>

Install postgresql’s  friends:

apt-get install docbook docbook-dsssl docbook-xsl openjade1.3 /
opensp xsltproc openjade libpostgresql-jdbc-java /
postgresql-9.3-plv8

Set the postgresql Password.

su - postgres
psql
ALTER USER Postgres WITH PASSWORD '<newpassword>';

Add the lines to add Posgresql Support to the pom.xml:

<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.2-507.jdbc3</version>
</dependency>

NOTE: Make sure you start tomcat BEFORE you start the build.

Now go back to the folder where you un-tarred uPortal and see if it will build & deploy  for you:

ant clean deploy-ear
ant initportal

So after about 1000 tries it FINALLY builds but the app then promptly dies.  It’s far beyond my abilities to figure out and after a week spent tinkering with it, I’ve long since ceased to care if it ever works.  My suspicion is that it doesn’t work so well or it would be easier to build.  Even their “Quick Start” gives me a boat load of errors.

My log files are chock full of error messages like this one:

ERROR [main] context.ContextLoader.[] 2014-05-19 15:43:12,137 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customEditorConfigurer' defined in file [/var/lib/tomcat6/webapps/u
Portal/WEB-INF/classes/properties/contexts/applicationContext.xml]: Cannot resolve reference to bean 'portalPropertyEditorRegistrar' while setting bean pro
perty 'propertyEditorRegistrars' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '
portalPropertyEditorRegistrar' defined in file [/var/lib/tomcat6/webapps/uPortal/WEB-INF/classes/properties/contexts/applicationContext.xml]: Error convert
ing typed String value for bean property 'propertyEditors'; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of
 type 'java.lang.String' to required type 'java.lang.Class'; nested exception is java.lang.IllegalArgumentException: Cannot find class [javax.portlet.Portl
etMode]

I’m officially quitting. It’s not worth the effort.

Advertisements