Daily Archives: October 30, 2017

Webobjects application deployment on Java1.7 server

My first WebObjects application runs now within Eclipse, and I use the context menue “WO Lips Ant Tools”->”Install” to create a deployable archive. But my target server has only Java 1.7, my Eclipse runs on Java 1.8. The server will not use the compiled classes, because of the wrong major.minor class file version.

Before you rebuild frameworks, close Eclipse!

The frameworks of WebObjects/WOnder are compiled with Ant during the installation process. You can found them within /home/arothe/WODevelopment/Libraries/WOnder (which is my HOME) and there are some copies of the frameworks:

1. ${HOME}/Libraries/WOnder/Root
2. ${HOME}/Libraries/WOnder/Library/Frameworks
3. ${HOME}/Libraries/WOnder/Library/WebObjects/lib
4. wo.server.root

If you build the WOnder frameworks with Ant on the commandline, they will be built on 1.
If you install the WOnder frameworks with Ant on the commandline, they will be installed on 2. and 3. and a copy is also created on wo.server.root (i.e. /tmp/WebObjects)

It could be a good idea to remove all old frameworks from these locations before rebuilding. To build/install the frameworks, Ant will use the default Java installation, which is on my Development system Java1.8. But you can find on /home/arothe/WODevelopment/WonderSource/Build/build/default.properties three properties, which define the expected Java version

build.compiler=javac1.5
compiler.source=1.5
compiler.target=1.5

These are the defaults for WOnder6, WOnder7 needs Java 1.8, so it could be better to downgrade the WOnder version for the Java1.7 target system (checkout the latest tag/release for Wonder6 on GitHub):

cd ${HOME}
rm -rf WonderSource
git clone https://github.com/wocommunity/wonder.git WonderSource
cd WonderSource
git checkout tags/wonder-6.1.5

Now build the frameworks and install them.

cd ${HOME}
cd WonderSource
ant -Dant.build.javac.source=1.7 -Dant.build.javac.target=1.7 -Duser.home=/home/arothe/WODevelopment/Libraries/WOnder frameworks frameworks.install

This creates the frameworks on the four locations above. The current user must have write access to wo.server.root, otherwise you will get a build error.

Now reopen Eclipse and rebuild the project. There shouldn’t be any errors. To create the archives for the application, Eclipse will use Ant, which runs again on Java1.8. First, remove the old archives from the locations:

1. ${HOME}/Libraries/WOnder/Library/WebObjects/Applications/${projectname}-Application.tar.gz
2. ${HOME}/Libraries/WOnder/Library/WebObjects/Applications/${projectname}-WebServerResources.tar.gz
3. ${HOME}/Libraries/WOnder/Library/WebObjects/Applications/${projectname}.woa
4. ${HOME}/Libraries/WOnder/Library/WebObjects/Applications/Split/WebObjects/${projectname}.woa
5. ${PROJECT}/dist/*

Now rebuild the archives with a right-click on the projectname within Eclipse and “WO Lips Ant Tools”->”Install”. Then copy the tar.gz files to the server and decompress the *-Application.tar.gz i.e. on /opt/Apple/Local/Library/WebObjects/Applications, which creates a new folder ${projectname}.woa.

cd /opt/Apple/Local/Library/WebObjects/Applications/${projectname}.woa
./${projectname}

It should start the application (or give some hints, which is wrong).

To find the location for the second archive (${projectname}-WebServerResources.tar.gz), which the install process generates, you should look into your WebObjects configuration of the Apache webserver. There is a .conf file, which contains the property “WebObjectsDocumentRoot”. Decompress the archive into the subdirectory WebObjects of the configured directory (i.e. WebObjectsDocumentRoot=/var/www/html, decompress into /var/www/html/WebObjects).

You should check your JDBC driver classes (and also all other 3rd party JARs), that they have the correct class version (compiled with 1.7 instead of 1.8).