X-CGP-ClamAV-Result: CLEAN X-VirusScanner: Niversoft's CGPClamav Helper v1.25a (ClamAV 1.4.3/27947) X-Junk-Score: 0 [] X-KAS-Score: 0 [] From: "Markus Ruggiero (rucotec)" Received: from mail01.rucotec.ch ([65.21.159.64] verified) by post.selbstdenker.com (CommuniGate Pro SMTP 6.3.18) with ESMTPS id 35446044 for webobjects-dev@wocommunity.org; Sat, 21 Mar 2026 14:19:56 +0100 Received-SPF: pass receiver=post.selbstdenker.com; client-ip=65.21.159.64; envelope-from=markus.ruggiero@rucotec.ch Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 5B2DE68AFC for ; Sat, 21 Mar 2026 14:19:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rucotec.ch; s=dkim; t=1774099184; h=from:subject:date:message-id:to:mime-version:content-type:in-reply-to: references; bh=40ioIcQ6XVMzbtsiD6vxZum1Md+Gc/Klw9IMvZIawTc=; b=ZQMPRTxKLSLkkyU776Lfedy+qLhfJjMutLx9cemtr3nZOmo6sx5Ji72licpoGHWvNATm5e Os5RVBclbBNnbLac6ndy6r7l+Fn8Tz/llnrmXx/63tNB7HyhetqlozIkf9BwgJN0CpUK+N nybiPRzSYwx37YZZJuLaVJU2oy5aZ8DcrA48OV92hD37DCNJTVe/LoexLkJrdtTuO4RWf0 FzsyGKyTN6F4A+aeZjeUXZr3zSZC71+Cex1ZqEjm2NQtJNoQ680d0Vdwpip6J51fEoMXaj /GXGrRSEwsEvsehsVWeywOvZRADZj2YzJ9w3f6IHSp41fnw7Er7aYj1vBXLiig== Content-Type: multipart/signed; boundary="Apple-Mail=_8E5118BF-8E4D-4F4E-AAFD-0DB9F1D9FB7F"; protocol="application/pkcs7-signature"; micalg=sha-256 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.400.21\)) Subject: Re: [WO-DEV] Apache on Ubuntu issue Date: Sat, 21 Mar 2026 14:19:31 +0100 References: To: WebObjects & WOnder Development In-Reply-To: Message-Id: X-Mailer: Apple Mail (2.3864.400.21) X-Last-TLS-Session-Version: TLSv1.2 --Apple-Mail=_8E5118BF-8E4D-4F4E-AAFD-0DB9F1D9FB7F Content-Type: multipart/alternative; boundary="Apple-Mail=_F509A8FB-2CDC-45C0-B680-87E63F83B86C" --Apple-Mail=_F509A8FB-2CDC-45C0-B680-87E63F83B86C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi Ted, I think there is more to it than just Apache - and then there is less = required.... I am running development apps from within Eclipse without having to do = anything special. It just works (as they say in the Apple world). So I = am not sure you need anything other than Eclipse. What probably helps is = checking the =E2=80=9CCreate Bundle=E2=80=9D box in the WOLips build = preferences. And of course you should reference all WebServerResources = through filename bindings (not href or src). These can have paths = (don=E2=80=99t start them with a /) and inside your WebServerResources = folder you simply create that folder path. If you reference a resource = that is inside your app=E2=80=99s bundle specify =E2=80=9Capp=E2=80=9D = as the bundle name binding (not specifying it should default to = =E2=80=9Capp=E2=80=9D anyway). For all resources referenced from any = framework, yours or any other, just give the framework name to the = respective binding. I never bothered developing through Apache and run = all my dev apps right from Eclipse. And if you specify WOPort in the = Eclipse Run/Debug configuration for your app(s) you can run two apps at = the same time in dev/debug mode inside Eclipse and call direct actions = on one from the other. Perfect for debugging client/server interactions. Regarding Apache on macOS (if you really want to have even more fun): Install Apache with Homebrew and you should already be good. No need for = any Apache dev tools. The only thing you need is a compiled WOAdaptor. = Of course you can install the Apache dev tools and compile the adaptor = yourself (I've done that once) or just ask for a binary=F0=9F=98=87. When using Homebrew the following directories are important (use brew = info apache2 and read the output) /usr/local/var/www is the document root for your server /usr/local/etc/httpd is the system wide config directory I have several virtual hosts configured, none with a public domain name, = just a name resolved through the standard /etc/hosts file (edit with = sudo required). I have then installed wotaskd and JavaMonitor and now = have a deployment environment on my dev MacBook pro. There is really no = difference to an installation on Linux (just the default paths are = different) Here are two examples. =E2=80=9Cinfo=E2=80=9D is a static site for = reference information, =E2=80=9Cwoapps=E2=80=9D is my deployment site. The chosen domain name is simply =E2=80=9Cinfo=E2=80=9D, no tld or = anything. And for the fun of it I set up the domain =E2=80=9Cwoapps=E2=80=9D= for my test deployments Edit /etc/hosts and add the following lines: 127.0.0.1 info 127.0.0.1 woapps You can now ping info and woapps and should get a positive answer, no = need for reboot or anything. Edit /usr/local/etc/httpd/httpd.conf Specify your username as the user to run the Apache server Make sure these two lines look the way they are here. These will allow = you to have your virtual host specs inside the sites folder # Virtual hosts #Include /usr/local/etc/httpd/extra/httpd-vhosts.conf Include /usr/local/etc/httpd/sites/*.conf Here is my config file for the woapps virtual host $ cat /usr/local/etc/httpd/sites/woapps_80.conf ServerName woapps ServerAdmin admin@example.com DocumentRoot "/usr/local/var/www/woapps/htdocs" DirectoryIndex index.html index.php /xcode/ /wiki/ default.html CustomLog /usr/local/var/www/woapps/logs/access_info_log = combinedvhost ErrorLog /usr/local/var/www/woapps/logs/error_info_log Options All -Indexes -ExecCGI +Includes +MultiViews AllowOverride None Require all granted $ ls /usr/local/etc/httpd/other/ wo_apache.conf* wo_expires.conf* wo_rewrite.conf* These are referenced at the end of httpd.conf (this line shoould already = be there. if not simply add it) Include /usr/local/etc/httpd/other/*.conf $ cat /usr/local/etc/httpd/other/wo_apache.conf # WebObjects 5.4: Enable the WebObjects module. #LoadModule WebObjects_module = /Library/WebObjects/Adaptors/mod_WebObjects.so LoadModule WebObjects_module = /Users/Shared/Developer/Libraries/Wonder/woadaptor_pr992_fixed/Apache2.4/m= acOS_Intel/mod_WebObjects.so # You can change the 'cgi-bin' part of WebObjectsAlias to whatever you # prefer (such as Apps), but the 'WebObjects' part is required. WebObjectsAlias /apps/WebObjects Require all granted Require all denied # Here are the 3 possible configuration modes. # The apache module uses one of them to get information # about your deployed applications. # 1085 is the reserved port on which wotaskd processes listen to by = default. # Host List Configuration # wotaskd is started automatically on supported platforms, # so this is the default mode. # The apache module gets its configuration from the wotaskds # listed on the configuration line # For multiple hosts: # WebObjectsConfig = http://:,http://: # For localhost: WebObjectsConfig http://woapps:1085 10 # Multicast Configuration # The apache module gets its configuration from all wotaskds # that respond to the multicast call on the subnet # WebObjectsConfig webobjects://239.128.14.2:1085 10 # File Configuration # The apache module gets its configuration from one file # WebObjectsConfig file:// 10 # To enable public access to the WOAdaptorInfo page, uncomment the = following line # WebObjectsAdminUsername public # To enable the WOAdaptorInfo page with restricted access, # uncomment the next two lines and set the user and password # To access the WOAdaptorInfo page with restricted access, # use a URL like: = http://webserver/cgi-bin/WebObjects/WOAdaptorInfo?user+password. # WebObjectsAdminUsername user # WebObjectsAdminPassword password # To change the logging options, read the following comments: # The option name is "WebObjectsLog" and the first value indicates the = path of the log file. # The second value indicates the log level. There are five, in = decreasing informational order: # "Debug", "Info", "Warn", "Error", "User" # # Note: To enable logging, touch '/tmp/logWebObjects' as the = administrator user (usually root). # # The following line is the default: # WebObjectsLog /Library/WebObjects/Logs/WebObjects.log Debug $ cat /usr/local/etc/httpd/other/wo_expires.conf ## File for Expires ExpiresActive On=20 ExpiresDefault A60 ExpiresByType image/x-icon A3600 ExpiresByType application/x-javascript A3600 ExpiresByType text/css A3600 ExpiresByType image/gif A3600 ExpiresByType image/png A3600 ExpiresByType image/jpeg A3600 ExpiresByType application/x-shockwave-flash A3600 ExpiresByType video/x-flv A3600 ExpiresByType application/pdf A3600 =20 $ cat less /usr/local/etc/httpd/other/wo_rewrite.conf ## File for Rewrite ## RewriteEngine On ## RewriteRule ^/$ /page/HomePage [R] ## RewriteCond %{QUERY_STRING} ^appNum=3D([-0-9]+)(.*)$ ## RewriteRule ^/page/(.*)$ = /cgi-bin/WebObjects/AppName.woa/%1/wa/viewPage?pageName=3D$1%2 [L,PT] ## RewriteRule ^/page/(.*)$ = /cgi-bin/WebObjects/AppName.woa/wa/viewPage?pageName=3D$1 [L,PT,QSA] You cannot run https with a letsencrypt certificate because your sites = are not publicly reachable. You can however create your own CA and cert = if you really want to be that fancy (use KeychainAccess.app on the Mac). = I never bothered though.=20 Be careful when you try to connect with your web browser. Browsers = usually play tricks with the URL and add https and www and other = niceties and that will fail to open your single name domain. You must = specify the whole URL so that the browser does not have to second guess = and break the final address. HAVE FUN, there is a whole weekend coming up....... ---markus--- > On 21 Mar 2026, at 03:38, Theodore Petrosky = wrote: >=20 > Markus, >=20 > It appears that you have some experience with setting up Apache. Your = explanation really helped clear up some misconceptions I had. >=20 > But here is my next project. I have a couple of D2W apps that I have = to support. While in development mode in Eclipse, the pages do not = render correctly with some elements missing from the page. All my = research points to the Direct Connection problem and why I need to use = Apache. I found these two wiki pages: >=20 > = https://wiki.wocommunity.org/xwiki/bin/view/WO/Home/To%20classify/Developm= ent-Direct%20Connect/ > and=20 > = https://wiki.wocommunity.org/xwiki/bin/view/documentation/Home/How-tos/Dev= elopment%20Tools-Running%20Through%20Apache/ >=20 > I found that Apache on OSX does not come with the developer tools so I = found that homebrew's solution took care of that but of course nothing = is in the 'right' place. I will have to get wotaskd and javamonitor = running with launchctl which should not be too bad. but that leaves the = connection to Apache. >=20 > Have you had any success with running a WO server is OSX? >=20 > This is the first time I have actually thought of switching to Linux = to do development. >=20 > Ted >=20 >=20 >=20 >=20 >=20 > On 3/16/26 8:58 AM, Markus Ruggiero (rucotec) wrote: >=20 >> Something seems not quite right here.=20 >> I deploy to a Ubuntu VServer on Hetzner.com . My = applications are built with ant. This automatically create a split = install. There are two locations on the server that are of interest: the = Apache webroot directory for your domain, which the default is = /var/www/html and an arbitrary directory for the WOA executable. Mine is = at /opt/WebObjects/applications. >>=20 >> Create the WebObjects directory inside your webroot: mkdir = /var/www/html/WebObjects >>=20 >> Building with ant I get two files: MyApp-Application.tar.gz and = MyApp-WebServerResources.tar.gz. Move both to your server and unpack, = the MyApp-Application.tar.gz unpacks into /opt/WebObjects/applications/ = and MyApp-WebServerResources.tar.gz unpacks into = /var/www/html/WebObjects and you are already good to go. No need for = anything with symlinks and environments like NEXT_ROOT. >> Change ownership of the application files to the owner you use to run = things and install the application in JavaMonitor. All done. In the web = inspector you should then see something like = href=3D=E2=80=9C/WebObjects/MyApp.woa/Frameworks/ERModernDefaultSkin.frame= work/WebServerResources/tab.png=E2=80=9D. This is a resource from an = embedded D2W framework. Before building make sure you embed your = frameworks, that=E2=80=99s just a checkbox in WOLips build properties = for your project. >>=20 >> If you need more help just yell. I can give you a step by step guide = of everything you have to do after you create the base Ubuntu OS = install. This includes setting up Apache with virtual hosts, = letsencrypt, PostgreSQL, Java, wotaskd and JavaMonitor and then on top = of that the application! >>=20 >> Hope this helps.=20 >> ---markus---=20 >>=20 >>> On 16 Mar 2026, at 13:04, D Tim Cummings = = wrote: >>>=20 >>> I think the href should be >>>=20 >>> = href=3D"/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERMode= rnDefaultSkin.framework/WebServerResources/default_login_page.css" >>>=20 >>> On my ubuntu install I can find the file to be served through Apache = at >>>=20 >>> = /var/www/example.com/WebObjects/Applications/BookingD2W.woa/Contents/Frame= works/ERModernDefaultSkin.framework/WebServerResources/default_login_page.= css >>>=20 >>> This is achieved by setting up a symlink from the Apache directory = to the installation directory >>>=20 >>> # Create Apache virtual host >>> sudo mkdir -p /var/www/$SERVER_NAME >>> sudo mkdir -p = $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects >>> sudo ln -s $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects = /var/www/$SERVER_NAME/WebObjects >>>=20 >>> The symlink is on /var/www/example.com/WebObjects which points to = /opt/webobjects/Local/Library/WebServer/Documents/WebObjects >>>=20 >>> I don't know why your href starts with /Local/Library but for that = to work you would need the served file to be sitting at the following = location in the file system >>>=20 >>> = /var/www/example.com/Local/Library/WebObjects/Applications/BookingD2W.woa/= Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/defau= lt_login_page.css >>>=20 >>> Tim >>>=20 >>> On 16/3/26 14:04, Theodore Petrosky wrote: >>>> I have a new Ubuntu install (24.04) everything appears OK and = JavaMonitor runs fine. >>>>=20 >>>> I can setup a new app however the D2W css is not available to the = app. >>>>=20 >>>> Ubuntu is running locally on a little Windows box as a Hyper-v = instance. >>>>=20 >>>> The app has the appropriate Properties line: = WOFrameworksBaseURL=3D/WebObjects/BookingD2W.woa/Contents/Frameworks >>>>=20 >>>> when I go to the app's URL, the result displays, without the css. = so in the Web Inspector of Safari i see: >>>>=20 >>>> >>>> >>>> Booking_D2W Login >>>> >>>>=20 >>>> I select the red default_login_page.css and I am shown: An error = occurred trying to load the resource. >>>>=20 >>>> Of course the href above is missing the NEXT_ROOT (/opt/webobjects = as the first part of the listing. >>>>=20 >>>> Please any ideas what I am missing? when I list the directory, it = shows all the files are owned by appserver:appserveradm >>>>=20 >>>> Ted >>>>=20 >>>>=20 >>>> ############################################################# >>>> This message is sent to you because you are subscribed to >>>> the mailing list = . >>>> To unsubscribe, E-mail to: = >>>> To switch to the DIGEST mode, E-mail to = = >>>> To switch to the INDEX mode, E-mail to = = >>>> Send administrative queries to = = >>>>=20 >>>=20 >>> ############################################################# >>> This message is sent to you because you are subscribed to >>> the mailing list = . >>> To unsubscribe, E-mail to: = >>> To switch to the DIGEST mode, E-mail to = = >>> To switch to the INDEX mode, E-mail to = = >>> Send administrative queries to = = >>>=20 >>=20 >>=20 >>=20 >>=20 Markus Ruggiero rucotec GmbH web https://rucotec.ch Leonhardsberg 1 email markus.ruggiero@rucotec.ch 4051 Basel / Switzerland mobile +41 79 508 4701 --Apple-Mail=_F509A8FB-2CDC-45C0-B680-87E63F83B86C Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Hi Ted,

I think there = is more to it than just Apache - and then there is less = required....

I am running development apps from = within Eclipse without having to do anything special. It just works (as = they say in the Apple world). So I am not sure you need anything other = than Eclipse. What probably helps is checking the =E2=80=9CCreate = Bundle=E2=80=9D box in the WOLips build preferences. And of course you = should reference all WebServerResources through filename bindings (not = href or src). These can have paths (don=E2=80=99t start them with a /) = and inside your WebServerResources folder you simply create that folder = path. If you reference a resource that is inside your app=E2=80=99s = bundle specify =E2=80=9Capp=E2=80=9D as the bundle name binding (not = specifying it should default to =E2=80=9Capp=E2=80=9D anyway). For all = resources referenced from any framework, yours or any other, just give = the framework name to the respective binding. I never bothered = developing through Apache and run all my dev apps right from Eclipse. = And if you specify WOPort in the Eclipse Run/Debug configuration for = your app(s) you can run two apps at the same time in dev/debug mode = inside Eclipse and call direct actions on one from the other. Perfect = for debugging client/server = interactions.

Regarding Apache on macOS (if you = really want to have even more fun):

Install = Apache with Homebrew and you should already be good. No need for any = Apache dev tools. The only thing you need is a compiled WOAdaptor. Of = course you can install the Apache dev tools and compile the adaptor = yourself (I've done that once) or just ask for a = binary=F0=9F=98=87.

When using Homebrew the = following directories are important (use brew info apache2 and read the = output)

/usr/local/var/www is the document root = for your server
/usr/local/etc/httpd is the system wide config = directory

I have several virtual hosts = configured, none with a public domain name, just a name resolved through = the standard /etc/hosts file (edit with sudo required). I have then = installed wotaskd and JavaMonitor and now have a deployment environment = on my dev MacBook pro. There is really no difference to an installation = on Linux (just the default paths are = different)

Here are two examples. =E2=80=9Cinfo=E2= =80=9D is a static site for reference information, =E2=80=9Cwoapps=E2=80=9D= is my deployment site.
The chosen domain name is simply = =E2=80=9Cinfo=E2=80=9D, no tld or anything. And for the fun of it I set = up the domain =E2=80=9Cwoapps=E2=80=9D for my test = deployments

Edit /etc/hosts and add the = following lines:
127.0.0.1       = info
127.0.0.1       = woapps

You can now ping info and woapps = and should get a positive answer, no need for reboot or = anything.

Edit /usr/local/etc/httpd/httpd.co= nf
Specify your username as the user to run the Apache = server
Make sure these two lines look the way they are here. = These will allow you to have your virtual host specs inside the sites = folder

# Virtual hosts
#Include = /usr/local/etc/httpd/extra/httpd-vhosts.conf
Include = /usr/local/etc/httpd/sites/*.conf

Here is my = config file for the woapps virtual host
$ = cat /usr/local/etc/httpd/sites/woapps_80.conf

<VirtualHost *:80>
        = ServerName woapps
        ServerAdmin = admin@example.com
        DocumentRoot = "/usr/local/var/www/woapps/htdocs"
        = DirectoryIndex index.html index.php /xcode/ /wiki/ = default.html
        CustomLog = /usr/local/var/www/woapps/logs/access_info_log = combinedvhost
        ErrorLog =  /usr/local/var/www/woapps/logs/error_info_log
  =       <Directory = "/usr/local/var/www/woapps/htdocs">
      =           Options All -Indexes -ExecCGI = +Includes +MultiViews
          =       AllowOverride None
      =           Require all granted
  =       = </Directory>
</VirtualHost>

$ ls /usr/local/etc/httpd/other/
wo_apache.conf* =  wo_expires.conf* wo_rewrite.conf*

These = are referenced at the end of httpd.conf (this line shoould already be = there. if not simply add it)
Include = /usr/local/etc/httpd/other/*.conf

$ cat = /usr/local/etc/httpd/other/wo_apache.conf
# WebObjects = 5.4: Enable the WebObjects module.
#LoadModule = WebObjects_module = /Library/WebObjects/Adaptors/mod_WebObjects.so
LoadModule = WebObjects_module = /Users/Shared/Developer/Libraries/Wonder/woadaptor_pr992_fixed/Apache2.4/m= acOS_Intel/mod_WebObjects.so

# You can change = the 'cgi-bin' part of WebObjectsAlias to whatever you
# prefer = (such as Apps), but the 'WebObjects' part is = required.
WebObjectsAlias = /apps/WebObjects

<Location = /apps/WebObjects/>
    <Limit GET POST OPTIONS = >
      Require all granted
  =   </Limit>
    Require all = denied
</Location>

# Here are = the 3 possible configuration modes.
# The apache module uses = one of them to get information
# about your deployed = applications.
# 1085 is the reserved port on which wotaskd = processes listen to by default.

# Host List = Configuration
# wotaskd is started automatically on supported = platforms,
# so this is the default mode.
# The = apache module gets its configuration from the wotaskds
# = listed on the configuration line
# For multiple = hosts:
# WebObjectsConfig = http://<name-of-a-host>:<port-on-a-host>,http://<name-of-an= other-host>:<port-on-a-host> <interval>
# For = localhost:
WebObjectsConfig http://woapps:1085 = 10

# Multicast Configuration
# The = apache module gets its configuration from all wotaskds
# that = respond to the multicast call on the subnet
# WebObjectsConfig = webobjects://239.128.14.2:1085 10

# File = Configuration
# The apache module gets its configuration from = one file
# WebObjectsConfig = file://<path-to-a-xml-config-file> 10

# = To enable public access to the WOAdaptorInfo page, uncomment the = following line
# WebObjectsAdminUsername = public

# To enable the WOAdaptorInfo page with = restricted access,
# uncomment the next two lines and set the = user and password
# To access the WOAdaptorInfo page with = restricted access,
# use a URL like: = http://webserver/cgi-bin/WebObjects/WOAdaptorInfo?user+password.
# WebObjectsAdminUsername user
# WebObjectsAdminPassword = password

# To change the logging options, read = the following comments:
# The option name is "WebObjectsLog" = and the first value indicates the path of the log file.
# The = second value indicates the log level. There are five, in decreasing = informational order:
# "Debug",    "Info", =    "Warn",    "Error",   =  "User"
#
# Note: To enable logging, touch = '/tmp/logWebObjects' as the administrator user (usually = root).
#
# The following line is the = default:
# WebObjectsLog = /Library/WebObjects/Logs/WebObjects.log Debug

$ = cat /usr/local/etc/httpd/other/wo_expires.conf
## File = for Expires
<IfModule mod_expires.c>
  = ExpiresActive On 
  ExpiresDefault = A60
  ExpiresByType image/x-icon A3600
  = ExpiresByType application/x-javascript A3600
  = ExpiresByType text/css A3600
  ExpiresByType image/gif = A3600
  ExpiresByType image/png A3600
  = ExpiresByType image/jpeg A3600
  ExpiresByType = application/x-shockwave-flash A3600
  ExpiresByType = video/x-flv A3600
  ExpiresByType application/pdf = A3600
</IfModule>   =  

$ cat less = /usr/local/etc/httpd/other/wo_rewrite.conf
## File for = Rewrite
<IfModule mod_rewrite.c>
  ## = RewriteEngine On
  ## RewriteRule ^/$ /page/HomePage = [R]
  ## RewriteCond %{QUERY_STRING} = ^appNum=3D([-0-9]+)(.*)$
  ## RewriteRule ^/page/(.*)$ = /cgi-bin/WebObjects/AppName.woa/%1/wa/viewPage?pageName=3D$1%2 = [L,PT]
  ## RewriteRule ^/page/(.*)$ = /cgi-bin/WebObjects/AppName.woa/wa/viewPage?pageName=3D$1 = [L,PT,QSA]
</IfModule>

You cannot run https with a letsencrypt certificate because your sites = are not publicly reachable. You can however create your own CA and cert = if you really want to be that fancy (use KeychainAccess.app on the Mac). = I never bothered though. 
Be careful when you try to = connect with your web browser. Browsers usually play tricks with the URL = and add https and www and other niceties and that will fail to open your = single name domain. You must specify the whole URL so that the browser = does not have to second guess and break the final = address.

HAVE FUN, there is a whole weekend = coming = up.......
---markus---

On 21 Mar 2026, at 03:38, Theodore Petrosky = <webobjects-dev@wocommunity.org> wrote:

=20 =20

Markus,

It appears that you have some experience with = setting up Apache. Your explanation really helped clear up some misconceptions I = had.

But here is my next project. I have a couple of D2W apps that = I have to support. While in development mode in Eclipse, the pages do not render correctly with some elements missing from the page. All my research points to the Direct Connection problem and why I need to use Apache. I found these two wiki pages:

https://wiki.wocommunity.org/xwiki/bin/view= /WO/Home/To%20classify/Development-Direct%20Connect/
and 
https://wiki.wocommu= nity.org/xwiki/bin/view/documentation/Home/How-tos/Development%20Tools-Run= ning%20Through%20Apache/

I found that Apache on OSX does not = come with the developer tools so I found that homebrew's solution took care of that but of course nothing is in the 'right' place. I will have to get wotaskd and javamonitor running with launchctl which should not be too bad. but that leaves the connection to Apache.

Have you had = any success with running a WO server is OSX?

This is the first = time I have actually thought of switching to Linux to do development.

Ted



On 3/16/26 8:58 AM, Markus Ruggiero (rucotec) wrote:

Something seems not quite right here. 
I deploy to a Ubuntu VServer on Hetzner.com. My applications are built with ant. This automatically create a split install. There are two locations on the server that are of interest: the Apache webroot directory for your domain, which the default is /var/www/html and an arbitrary directory for the WOA executable. Mine is at /opt/WebObjects/applications.

Create the WebObjects directory inside your webroot: mkdir /var/www/html/WebObjects

Building with ant I get two files: MyApp-Application.tar.gz and MyApp-WebServerResources.tar.gz. Move both to your server and unpack, the MyApp-Application.tar.gz unpacks into /opt/WebObjects/applications/ and MyApp-WebServerResources.tar.gz unpacks into /var/www/html/WebObjects and you are already good to go. No need for anything with symlinks and environments like NEXT_ROOT.
Change ownership of the application files to the owner you use to run things and install the application in JavaMonitor. All done. In the web inspector you should then see something like href=3D=E2=80=9C/WebObjects/MyApp.woa/Frameworks/ERModernDefaultSkin.framework/W= ebServerResources/tab.png=E2=80=9D.  This is a resource from an embedded D2W framework. = Before building make sure you embed your frameworks, that=E2=80=99s = just a checkbox in WOLips build properties for your project.

If you need more help just yell. I can give you a step by step guide of everything you have to do after you create the base Ubuntu OS install. This includes setting up Apache with virtual hosts, letsencrypt, PostgreSQL, Java, wotaskd and JavaMonitor and then on top of that the application!

Hope this helps. 
---markus--- 

On 16 Mar 2026, at 13:04, D Tim Cummings <webobjects-dev@wocommun= ity.org> wrote:

I think the href should be

= href=3D"/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERMode= rnDefaultSkin.framework/WebServerResources/default_login_page.css"

On my ubuntu install I can find the file to be served through Apache at

= /var/www/example.com/WebObjects/Applications/BookingD2W.woa/Contents/Frame= works/ERModernDefaultSkin.framework/WebServerResources/default_login_page.= css

This is achieved by setting up a symlink from the Apache directory to the installation directory

# Create Apache virtual host
sudo mkdir -p /var/www/$SERVER_NAME
sudo mkdir -p = $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects
sudo ln -s = $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects /var/www/$SERVER_NAME/WebObjects

The symlink is on /var/www/example.com/WebObjects which points to = /opt/webobjects/Local/Library/WebServer/Documents/WebObjects

I don't know why your href starts with /Local/Library but for that to work you would need the served file to be sitting at the following location in the file system

= /var/www/example.com/Local/Library/WebObjects/Applications/BookingD2W.woa/= Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/defau= lt_login_page.css

Tim

On 16/3/26 14:04, Theodore Petrosky wrote:
I have a new Ubuntu install (24.04) everything appears OK and JavaMonitor runs fine.

I can setup a new app however the D2W css is not available to the app.

Ubuntu is running locally on a little Windows box as a Hyper-v instance.

The app has the appropriate Properties line: =  WOFrameworksBaseURL=3D/WebObjects/BookingD2W.woa/Contents/Frameworks=

when I go to the app's URL, the result displays, without the css. so in the Web Inspector of Safari i see:

<html>
    <head>
        <title>Booking_D2W = Login</title>
    <link rel=3D"stylesheet" = type=3D"text/css" = href=3D"/Local/Library/WebObjects/Applications/BookingD2W.woa/Contents/Fra= meworks/ERModernDefaultSkin.framework/WebServerResources/default_login_pag= e.css"/>

I select the red default_login_page.css and I am shown: An error occurred trying to load the resource.

Of course the href above is missing the NEXT_ROOT (/opt/webobjects as the first part of the = listing.

Please any ideas what I am missing? when I list the directory, it shows all the files are owned by appserver:appserveradm

Ted


#############################################################
This message is sent to you because you are subscribed to
 the mailing list <webobjects-dev@wocommun= ity.org>.
To unsubscribe, E-mail to: <webobjects-dev-off@= wocommunity.org>
To switch to the DIGEST mode, E-mail to <webobjects-dev-d= igest@wocommunity.org>
To switch to the INDEX mode, E-mail to <webobjects-dev-in= dex@wocommunity.org>
Send administrative queries to <webobjects-dev-= request@wocommunity.org>


#############################################################
This message is sent to you because you are subscribed to
the mailing list <webobjects-dev@wocommun= ity.org>.
To unsubscribe, E-mail to: <webobjects-dev-off@= wocommunity.org>
To switch to the DIGEST mode, E-mail to <webobjects-dev-d= igest@wocommunity.org>
To switch to the INDEX mode, E-mail to <webobjects-dev-in= dex@wocommunity.org>
Send administrative queries to  <webobjects-dev-= request@wocommunity.org>







Markus = Ruggiero


rucotec GmbH              =           web https://rucotec.ch
Leonhardsberg 1         =           email markus.ruggiero@rucotec.ch
4051 Basel / Switzerland    =      mobile +41 79 508 4701

<= /div>
=






= --Apple-Mail=_F509A8FB-2CDC-45C0-B680-87E63F83B86C-- --Apple-Mail=_8E5118BF-8E4D-4F4E-AAFD-0DB9F1D9FB7F Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCC0kw ggUxMIIEGaADAgECAhBlq2xzPOn5KzWir0WS5Gh3MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQG EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50 aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI1MDEyMjAwMDAwMFoXDTI3MDEyMjIzNTk1 OVowKzEpMCcGCSqGSIb3DQEJARYabWFya3VzLnJ1Z2dpZXJvQHJ1Y290ZWMuY2gwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCo9WG6/IdTctaFtvkEdE9BLlvGIEo7MpX3Lu90L/IVN3Ef 9MjKJ0oWfQurzpe6LpsyEljfomT1ScVROSQQOGS8TM3PyaC+199uwcpdNpoQUj2vvOlLZZlhIajr tXhfBrlm4SbYPRDkOVYowETRVNmK7NAo/9zI/d9eJlOqEowodYJtW1dx1225NkHBNjbG1ZpaYKbU pxqZ4TvssNd5U67Sg+5fWoVCuhAD2eW/HVMWnpgxcm/QQlWd73ym1GVOPPOvRQ9SEW2aVAU+y0Gt Ss+zLfnq+n399O4pW+dCmJgmSGkRZJIIs7RuIWTxE76O8bbqiDBp4KSDeKTK2nyAqWp9AgMBAAGj ggHjMIIB3zAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUhXWSXZ5l jkUfGHSShsLSIHQISXIwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYI KwYBBQUHAwQGCCsGAQUFBwMCMFAGA1UdIARJMEcwOgYMKwYBBAGyMQECAQoBMCowKAYIKwYBBQUH AgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01JTUVDUFMwCQYHZ4EMAQUBAjBaBgNVHR8EUzBRME+g TaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlv bmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggrBgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6 Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJl RW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMCUGA1UdEQQe MByBGm1hcmt1cy5ydWdnaWVyb0BydWNvdGVjLmNoMA0GCSqGSIb3DQEBCwUAA4IBAQC2cKdSaX/A aVRczXn2Zp7/rpGQmPnQTcCLkQTxyyeA7rqR3ra0W3XMXgVTJTLHAcAXNGqTJjXEzUspuMdshnso Od1Vb8cQDsg/Oihc+2Qr2RAXZeaq1/oLBQCyISXvhCk6ig8zl1DyoQDVLrnIbG88Z0wEA6WrOQEZ IBCIK3ohJSAzkbD/pq27NoIsG2ZTJ7mM+5/jaydeH4me7SkchOA2g9mrIyG2XnHWWdpVvki17fVb DZ+7z2DxdAvvHWhnFu90XgEyHNibLHeN1EQhR3+pa1QmLIAdNXuNO4apokmPbRPV4KhMYbitgP0+ HhkUSjVmo4Ud95w3BeBZ5ogOf1XTMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkq hkiG9w0BAQwFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcT C0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVT RVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAx MjMxMjM1OTU5WjCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ MA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0 aWdvIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq 0s2cUIE/bZQu85eoZ9X140qOTKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19sz fBxxo0Nm9l79L9S+TZNTEDygNfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tu dN55/yE1+XvFnz5xsOFbme/SoY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+ mwSTManRy6XcCFJE6k/LHt3ndD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEA AaOCAWQwggFgMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8 C9qU21/+K9+omULPyeCtADAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcw RaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9u QXV0aG9yaXR5LmNybDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNl cnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA 3RfXehwQOJDI47G9FzGR87bjgrShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2 f102qxxvM3TEoGg65FWM89YN5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1 w+vnKhav2VuQVHwpTf64ZNnXUF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlV Ef32VBXglIrHQ3v9AAS0yPo4Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tP bDAL4jNdUNA7jGee+tAnTtlZ6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2 gpIKHAYNBAWLG2Q2fG7Bt2tPC8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhm WVfh0fyYeqxGlTw0RfwhBlakdYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOicz xX/aS5ABRVrNUDcjfvp4hYbDOO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDP eUI05svqw1o5A2HcNzLOpklhNwZ+4uWYLcAi14ACHuVvJsmzNicxggPEMIIDwAIBATCBqzCBljEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9y ZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQg QXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIQZatsczzp+Ss1oq9FkuRodzANBglg hkgBZQMEAgEFAKCCAekwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN MjYwMzIxMTMxOTMxWjAvBgkqhkiG9w0BCQQxIgQgoOygSvn+5NLsevxfEUSP22bM/GAHJnzcGTUg iHuOslcwgbwGCSsGAQQBgjcQBDGBrjCBqzCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk MT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBF bWFpbCBDQQIQZatsczzp+Ss1oq9FkuRodzCBvgYLKoZIhvcNAQkQAgsxga6ggaswgZYxCzAJBgNV BAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAW BgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xpZW50IEF1dGhl bnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEGWrbHM86fkrNaKvRZLkaHcwDQYJKoZIhvcN AQELBQAEggEAH3lVz+Ky0QA8wmVxAgRobfwS/zkr0PvnSPXlTPqMWA5btOrDmhZkLA9M+Lb9MXyr Z/8+6j3rL/UsSb+JjE17l+uAuW+7GCKLOPRxP0fHD5NCpeDZtOOHnMvy0/v+XnjZ4HuCDYts5zU9 X5FgWuJnRtCLrpzq2wBM8oZ6sDB7Lc/L9EmnJhYtmHgwgq9bESpTJh6DxfmDHszaTHw05CbMdxbh P2ezJGZIoethgRxTIskx+HDkh53t0xuElbqhJEP4QWo0eWA5wrCfK9HLbXNaJBNQB6KKbxSLz7TY 05ugq0N5L5Fk2pb3YuDkc77zaBU4zeSRhVrUlu3cjz+e70+hkwAAAAAAAA== --Apple-Mail=_8E5118BF-8E4D-4F4E-AAFD-0DB9F1D9FB7F--