Welcome to the Leopard WebObjects mess

So, you thought Leopard and WebObjects 5.4 would bring some good news to WebObjects developers, right? Well… so did I.

I’m not even going to talk much about Leopard itself. It’s clearly an unfinished product, with dubious interface “improvements”, and totally unstable, at least on PowerPC macs. I try to keep my blog tecnhically-centered, and not based on personal opinions, but please Apple… you can do much better than that. Stop playing arround with the iPhone and concentrate on what really matters.

Well, about WO… Leopard has a new version of WebObjects, 5.4. It has some bug fixes and improvements over the previous versions, but unfortunately there are still a lot of show-stoppers that keep me from installing Leopard (and as you can guess from the last paragraph, I’m not specially motivated for that).

The first one is that Wonder still does not compile on 5.4. So, if you use Wonder (and you should), you must bring WebObjects 5.3 to Leopard. It’s not a very complicated process, but of course, it means trashing the brand new version. The good news is, if you use Wonder, you don’t really need WO 5.4, because almost all the features are already implemented on Wonder. The ideia is installing 5.4 (basically to get the Apache 2.2 adaptor), them trashing everything else, and finally installing 5.3. I installed it from the xCode 2 DMG and it worked fine. Anyway, Milke did an excellent (as always) document about his trip back to 5.3 on Leopard.

You should note the detail that the plists for LaunchD to boot WOTaskD and WOMonitor are not even in Leopard Client. Apparently, someone actually forgot to include that in the release. Assuming that most people develop without direct connect enabled (I don’t know how true this assumption is, but at least I do!), implying that they actually need WOTaskD to be running, it’s a bit scarry to see that actually no-one at apple tested this, or else they would find out that the files were not included. It surely doesn’t boost my confidance on all this.

Also, I develop using virtual hosts. Basically I set the adaptor URL, in WOLips launch options, to be something like http://aVirtualHost.mac/cgi-bin/WebObjects. I kept getting the “No instance available” message until I run “sudo hostname -s aVirtualHost.mac” on the command line and restarted every WO-related process (apache, WOTaskD, and the app itself). BTW, note that the file included in apache2 configuration for vhost configuration has errors, and will actually kill apache at launch if you don’t remove both examples that come with it (the error is in the logging configuration for both sample virtual hosts). Even worse, if you are trying to look for apache error logs in the error_log apache file as you always did on tiger… forget it. This kind of errors are now thrown to /var/log/system.log.

But the biggest show-stopper is EOGenerator. You do use EOgenerator, don’t you? EOGenerator was based on the same frameworks as the Apple WO tools, like EOModeler. Apple moved those frameworks from “deprecated” to “dead” with Leopard, so EOGenerator went to the grave with them. Relax, there will be a Java replacement included on WOLips, but it’s still not there. Well, talk about living in the information age… the EOGenerator is out! :)

So, if you are an WebObjects developer wondering about jumping to Leopard… my adviced is, wait. Unless you don’t use Wonder and EOGenerator, which is highly unlikely.

7 Responses to “Welcome to the Leopard WebObjects mess”

  1. Paulo Andrade Says:

    If you’re wondering how to get your hands on the WO53 frameworks described in the link to revert your WO54 to WO53, you can get them in the XCode 2.5 release.
    Mount the XCode 2.5 release, and in

    /Volumes/Xcode\ Tools/Packages/Packages/WebObjectsDevelopment.pkg/Contents/Archive.pax.gz

    you have:

    EOModeler.framework
    JavaEOTool.framework
    JavaWebObjects.framework
    JDBCEOAdaptor.framework
    JNDIEOAdaptor.framework

    and in

    /Volumes/Xcode\ Tools/Packages/Packages/WebObjectsRuntime.pkg/Contents/Archive.pax.gz

    you have:

    JavaDirectToWeb.framework
    JavaEOApplication.framework
    JavaDTWGeneration.framework
    JavaEOCocoa.framework
    JavaEODistribution.framework
    JavaEOGeneration.framework
    JavaEOAccess.framework
    JavaEOControl.framework
    JavaEOInterface.framework
    JavaEOInterfaceCocoa.framework
    JavaEOInterfaceSwing.framework
    JavaEOProject.framework
    JavaEORuleSystem.framework
    JavaFoundation.framework
    JavaJDBCAdaptor.framework
    JavaJNDIAdaptor.framework
    JavaWebObjects.framework
    JavaWebServicesClient.framework
    JavaWebServicesGeneration.framework
    JavaWebServicesSupport.framework
    JavaWOExtensions.framework
    JavaWOJSPServlet.framework
    JavaXML.framework

    Note that the JavaWebobjects.framework is inside both Archives, you should use the one in the WebobjectsRuntime.

  2. Ed Says:

    I’m having an issue with WO in Leopard, namely that even though I install it with XCode, it doesn’t seem to be installed. I’ve tried uninstalling Xcode, reinstalling, and it still doesn’t show up in the New Project Assistant (like it’s supposed to in the Apple documentation).

    Has anyone experienced this or have any idea how to fix it or where I could go to figure out how to do so?

    Thanks in advance.

  3. Miguel Arroz Says:

    Hi Ed!

    xCode, and all the other tools, moved from the “deprecated” status in Tiger to “dead” in Leopard. Apple finally killed the Java/ObjectiveC bridge, so none of the tools work.

    xCode still opens old WebObjects projects, and compiles them (that is a pure Java operation, it’s not related to the bridge) but won’t allow you to create any more projects.

    Eclipse and the WOLips plugin are now the official tools to create WebObjects projects. WOLips, although it’s created and maintained by the open-source community, is being partially sponsored by Apple. Apple itself uses Eclipse/WOLips massively, and that is one the the reasons the Apple tools were dropped: they clearly think Eclipse and WOLips are much better than their own tools.

    Personally, I jumped to Eclipse some time ago, and I love every minute of it. It’s so much better than xCode for Java coding that you won’t ever want to use another IDE. It’s a bit heavy on the machine (specially on RAM, you should have 2GB at least) but all those CPU cycles are being used to do very useful stuff.

    WOLips is the plugin that will make Eclipse create and compile WO projects, and replaces all the Apple tools (WOBuilder, EO Modeler, etc) with modern tools that are integrated right there on the IDE.

  4. Ed Says:

    Thanks so much for the information, Miguel! As a new developer (or developer wannabe as the case may be), I find this a bit confusing, particularly based on the information provided via ADC.

    That said, you have done a masterful job of clearing that up for me, and I do appreciate it. Do you have any links to some more information for the Eclipse WOLips plugin, leaning towards the rudimentary?

    Again, thank you for the clarification!

  5. Miguel Arroz Says:

    Hi!

    One of the best links I can give you is the WO Community page. Get Eclipse and checkout the simple WOLips plugin installation instructions.

    The WO Community page has the “Getting started” link, with everything you need to setup your development environment, and some tutorials made by a few people in the community. Janine’s tutorial seems to be particularly cool.

    One of the problems of WO is precisely the “learning cliff”, specially how confusing is to setup everything and start. People are trying to work on that. Until then, you may get all the help you need on the WebObjects Development mailing list, hosted by Apple. There’s also the deploy list.

    Feel free to ask all kinds of questions on that list, I have found there many many helpful people who will help you getting on this WOnderful world! :)

    BTW, don’t forget that, if you want to use Wonder (a huge open-source set of frameworks that provide a lot of enhancements to the bare-bones WO), and I DO recommend you to do that, you must use WebObjects 5.3.1 (or 5.3.2 or whatever the latest 5.3 version is, I don’t recall it). Although Wonder already compiles with 5.4, there are still many bugs.

  6. Ricardy Says:

    I have crated my WO app using WOLips on Eclips and everything runs from the command line when I deploy but when I try to run it through Monitor I get the following error:

    Application: WOAppName
    Error: java.lang.reflect.InvocationTargetException exception
    Reason:
    java.lang.reflect.InvocationTargetException

    I believe this is coming from the cgi adaptor but I have not been able to get the Apache 1.3 or 2.2 adaptors to work. Can anyone help?

    Thanks

  7. Miguel Arroz Says:

    Hi Richardy

    You should ask that on the Apple’s WebObjects Development or Deployment mailing lists. I’m certainly someone will help you fixing that problem.

Leave a Reply