Re: Integrating jars for WOFrameworks ?

From: Ken Anderson (list..nderhome.com)
Date: Fri Mar 24 2006 - 15:54:34 EST

  • Next message: Ken Anderson: "Deployment trouble"

    Please ignore - I didn't realize it was building into /Library/
    WebObjects/Applications instead of /Library/WebObjects/
    JavaApplications - so I was looking at the wrong release.

    Ken

    On Mar 24, 2006, at 2:53 PM, Ken Anderson wrote:

    > Marc & everyone,
    >
    > OK, my fears about this have been realized. I'm including jars in
    > a framework that, in xcode, used to be integrated into the one
    > single jar with the same name as the framework. When my apps look
    > for classes, they're not finding ones that are in the other jars.
    > WOLips/eclipse is just copying those jars into the Java directory
    > of the framework.
    >
    > What's the best approach for me to get this to work? Because these
    > jars cannot be shared system wide, I can't just put them in
    > extensions. I could probably manually add the entire directory to
    > the classpath, but that's a maintenance headache.
    >
    > Any thoughts?
    >
    > Thanks again for all your help,
    >
    > Ken
    >
    > On Mar 21, 2006, at 3:30 PM, Marc Respass wrote:
    >
    >> [snip]
    >>>> XCode used to have the ability to "merge" a jar which just
    >>>> unjarred then included all the classes in your jar. If that's
    >>>> what you're looking for, I believe you need to write some ant
    >>>> targets to do that for you.
    >>>
    >>> No real need to merge the jar if nothing else cares - I just
    >>> always thought it merged them because it would only have a
    >>> classpath to that single jar.
    >>
    >> Maybe it does. I have an app that uses a framework and I see the
    >> following entry for it in the MacOSClassPath.txt file
    >>
    >> LOCALROOT/Library/Frameworks/BailModel.framework/Resources/Java/
    >> bailmodel.jar
    >>
    >> So it's clearly going straight for the jar file in the classpath,
    >> not loading every jar in Resources/Java. If you're including jars
    >> with your framework, maybe they are merged in
    >>
    >> [snip]
    >>> Yes, I'm beginning to see the advantage to this. So you're
    >>> advocating building regular jars and just having the apps
    >>> reference them, getting rid of the framework concept altogether.
    >>> It certainly is better than installing in /Library/Frameworks all
    >>> the time. Where do you store your eomodeld?
    >>
    >> My former boss wrote a library which I enhanced. It loads an
    >> external plist as a configuration file. I store a public ivar to
    >> it and then I can call valueForKeyPath on WOApplication. I set a
    >> known location (/Library/EOModelFiles for instance) where I put my
    >> models. I wrote a Handler which I subclass. The class stores a
    >> reference to an EOModel. In the constructor, I load the model from
    >> the name in the configuration file. Of course, this only works
    >> with one model but that meets my needs. It's a simple matter to
    >> make a key ModelNames returning an array, work through the array,
    >> and load all the models.
    >>
    >> In my case, I'm writing a lot of apps that are nothing but web
    >> service servers. I have also had a need for a lot of apps with a
    >> timer that triggers an action to load data from the DB and send it
    >> somewhere. I ended up writing a generic wrapper application that
    >> loads the right class and the class loads the model when it's
    >> first used. This has led to a very flexible app that can be reused
    >> with a different configuration file so writing a new "application"
    >> really means only writing a new class or two, putting it in the
    >> right place in /Library/WebObjects/Extensions, and running an
    >> instance of my app which loads a different config. It's all very
    >> flexible and much easier to manaage than writing a new app every
    >> time with an accompanying framework.
    >>
    >> Here's the constructor for my class.
    >>
    >> public Handler() {
    >> if (model == null) {
    >> String modelPath = RESOURCE_PATH
    >> + (String) WOApplication.application
    >> ().valueForKeyPath("config.ModelName");
    >> modelPath = modelPath + ".eomodeld";
    >> logger.debug("Attempting to load model at path " +
    >> modelPath);
    >>
    >> URL modelPathURL = null;
    >> try {
    >> modelPathURL = URLUtilities.urlForFilePath
    >> (modelPath);
    >> model = new EOModel(modelPathURL);
    >> EOModelGroup.defaultGroup().addModel(model);
    >> logger.info("loaded model at path: " + modelPath);
    >> } catch (MalformedURLException e) {
    >> logger.fatal("Unable to load required EOModel at
    >> url: " + modelPathURL);
    >> System.exit(1);
    >> }
    >> }
    >> }
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Fri Mar 24 2006 - 15:54:36 EST