Here is how I deploy to the correct directories.
# WebObjects install script using maven and ant
This script will is initiated by maven, for example:
`mvn clean package -Dinstall_my_server`
It will package the webobjects app into timestamped gzip files, for example
```
target/MyWoApp202602100628.woapplication.tar.gz
target/MyWoApp202602100628.wowebserverresources.tar.gz
```
Then it will use ssh/scp to copy these files to the server (into a folder called ~/Documents which should exist beforehand) and extract them into the correct directories.
```
# directory for the application
/opt/webobjects/Local/Library/WebObjects/Applications
# directory for the webserver resources
/opt/webobjects/Local/Library/WebServer/Documents/WebObjects
```
SETUP
In `pom.xml` I timestamp my build file so I don't accidentally overwrite a previous install. Add to `project > build`
```xml
<finalName>${project.artifactId}${maven.build.timestamp}</finalName>
```
In `pom.xml` add plugin to `project > build > plugins` so maven can call ant.
```xml
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>install-actions</id>
<phase>package</phase>
<configuration>
<target>
<property name="dest.dir" value="target" />
<property name="build.app.name" value="${project.build.finalName}" />
<echo message="Installing ${project.build.finalName} using ant" />
<ant antfile="${basedir}/build.xml">
<target name="install_actions" />
</ant>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
```
Create an ant build script `build.xml` in project directory (next to `pom.xml`). You will need to modify value of "remote.host"
```xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE project>
<project name="MyWoApp" default="install_actions" basedir="." xmlns:if="ant:if" xmlns:unless="ant:unless">
<!-- normally run from maven. eg 'mvn clean package -Dinstall_my_server' -->
<target name="install_actions">
<antcall target="install_my_server_target" if:set="install_my_server" />
</target>
<target name="install_my_server_target">
<echo message="installing to my server" />
<antcall target="install_server">
<param name="remote.host" value="my.server.example.com" />
<param name="remote.local.root" value="/opt/webobjects/Local" />
<param name="remote.web.root" value="/opt/webobjects/Local/Library/WebServer/Documents/WebObjects" />
<param name="remote.dest.dir" value="Library/WebObjects/Applications" />
<param name="remote.webobjects.user" value="webobjects" />
<param name="remote.webobjects.group" value="webobjects" />
</antcall>
</target>
<target name="install_server">
<echo message="install_server ${dest.dir}/${build.app.name}" />
<exec executable="scp">
<arg value="${dest.dir}/${build.app.name}.woapplication.tar.gz" />
<arg value="${remote.host}:Documents/${build.app.name}.woapplication.tar.gz" />
</exec>
<exec executable="scp">
<arg value="${dest.dir}/${build.app.name}.wowebserverresources.tar.gz" />
<arg value="${remote.host}:Documents/${build.app.name}.wowebserverresources.tar.gz" />
</exec>
<exec executable="ssh">
<arg value="${remote.host}" />
<arg value="sudo" />
<arg value="/bin/tar" />
<arg value="-zxf" />
<arg value="Documents/${build.app.name}.woapplication.tar.gz" />
<arg value="-C" />
<arg value="${remote.local.root}/${remote.dest.dir}" />
</exec>
<exec executable="ssh">
<arg value="${remote.host}" />
<arg value="sudo" />
<arg value="/bin/tar" />
<arg value="-zxf" />
<arg value="Documents/${build.app.name}.wowebserverresources.tar.gz" />
<arg value="-C" />
<arg value="${remote.web.root}" />
</exec>
<exec executable="ssh">
<arg value="${remote.host}" />
<arg value="sudo" />
<arg value="chown" />
<arg value="-R" />
<arg value="${remote.webobjects.user}:${remote.webobjects.group}" />
<arg value="${remote.local.root}/${remote.dest.dir}/${build.app.name}.woa" />
</exec>
</target>
</project>
```
ok I went through the wiki Deploying on Ubuntu 24.04 that
Tim references and for days could not get it to work. So I
went line by line making sure I understood what this
script was doing and modifying what files.
Then I found the issue!! Near the bottom of the script
it references Install WebObjects adapter. it uses git to
clone the wonder.git repo.
Git is not installed anywhere. I installed git and walked
through the lines of the script, restarted Apache and
voila. A working Ubuntu setup.
I updated the wiki to reflect adding git.
Lastly, I do not understand what this setup does to
create the directories for the upload of my app.
Where do I upload my woapplication and
wowebserverresources directories?
Ted
On 3/6/26 9:34 PM, Theodore
Petrosky wrote:
Tim,
We are almost there. your wiki post was really great
but I have run into a little problem. after I ran the
script, apache came up beautifully, and javamonitor
status shows:
● javamonitor.service - WebObjects/Wonder JavaMonitor
Loaded: loaded
(/usr/lib/systemd/system/javamonitor.service; disabled;
preset: enabled)
Active: active (running) since Fri 2026-03-06
20:42:10 EST; 47min ago
However, when I try to add a host 127.0.0.1 I get
Failed to contact localhost-1085
did I miss something?
Ted
ted@ted-Virtual-Machine:~$ sudo systemctl status
javamonitor
● javamonitor.service - WebObjects/Wonder JavaMonitor
Loaded: loaded
(/usr/lib/systemd/system/javamonitor.service; disabled;
preset: enabled)
Active: active (running) since Fri 2026-03-06
20:42:10 EST; 47min ago
Docs: https://wiki.wocommunity.org/display/documentation/Wonder+JavaMonitor+and+wotaskd
Main PID: 9579 (java)
Tasks: 45 (limit: 4612)
Memory: 123.2M (peak: 129.9M)
CPU: 8.430s
CGroup: /system.slice/javamonitor.service
└─9579 java
-DWORootDirectory=/opt/webobjects
-DWOLocalRootDirectory=/opt/webobjects/Local
-DWOUserDirectory=/ -DWOEnvClassPath=
-DWOApplicationClass=com.webobjects.monitor.application.Application
-DWOP>
Mar 06 20:42:10 ted-Virtual-Machine systemd[1]: Started
javamonitor.service - WebObjects/Wonder JavaMonitor.
Mar 06 20:42:10 ted-Virtual-Machine JavaMonitor[9579]:
Reading UNIXClassPath.txt ...
Mar 06 20:42:10 ted-Virtual-Machine JavaMonitor[9579]:
Launching JavaMonitor.woa ...
Mar 06 20:42:10 ted-Virtual-Machine JavaMonitor[9579]:
java -DWORootDirectory="/opt/webobjects"
-DWOLocalRootDirectory="/opt/webobjects/Local"
-DWOUserDirectory="/" -DWOEnvClassPath=""
-DWOApplicationClass=com.webob>
lines 1-15/15 (END)
On 3/4/26 6:48 PM, D Tim
Cummings wrote:
You need to use prefork version of Apache. See deploy
instructions on
https://wiki.wocommunity.org/xwiki/bin/view/documentation/Home/Deployment/Platforms/Deploying%20on%20Linux/Deploying%20on%20Ubuntu%2022.04/
sudo apt install apache2
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
Cheers
Tim
On 5/03/2026 02:59, Jason
Coffin wrote:
Hello all!
I'm looking for help diagnosing an issue that we are seeing in a WebObjects production environment. I'm not the developer on the project, I'm the devops person and I know little about WebObjects.
Here is our stack:
Ubuntu version 20.04.1
Apache version 2.4.41
Project Wonder version 7.5-SNAPSHOT
WebObjects version 5.4.3
About once a day the Apache mod seems to stop working and no longer routes traffic to the WebObjects application. Restarting Apache solves the issue until it crops up again. The Apache error logs show these errors, in the given order, and they repeat several times:
lock_file_section(): failed to lock (1 attempts): Resource deadlock avoided
ac_readConfiguration: WOShmem_lock() failed. Skipping reading config.
Any idea what could be causing this issue? Should we be using a different version of Apache or the WebObjects mod?
We are also considering alternative methods for hosting the WebObjects application. Should we consider removing the Apache mod requirement entirely?
Thank you kindly!
Jason Coffin
#############################################################
This message is sent to you because you are subscribed to
the mailing list <webobjects-dev@wocommunity.org>.
To unsubscribe, E-mail to: <webobjects-dev-off@wocommunity.org>
To switch to the DIGEST mode, E-mail to <webobjects-dev-digest@wocommunity.org>
To switch to the INDEX mode, E-mail to <webobjects-dev-index@wocommunity.org>
Send administrative queries to <webobjects-dev-request@wocommunity.org>