On Jan 25, 2008, at 4:23 PM, Daryl Lee wrote:
David,On Jan 25, 2008, at 11:38 AM, David Avendasora wrote:
On Jan 24, 2008, at 2:22 PM, Daryl Lee wrote:
I'd file a bug with WOLips. If I have spare cycles (which is rare these days), I might be able to look into this for you.
I'm not sure what I'd say in the bug report ... There's so many pieces and I don't _know_ which are needed and which aren't. I don't want to spend a bunch of time figuring out what something is used for and then filling a bug report/feature request, if it isn't even needed anymore.
Well, at a minimum, I'd file a request for the client side launch script and a default client classpath file to be embedded as part of the build process (development and deployment).
Okay, I'll do that much for sure.
Just to start with, Is there someplace that defines the client-side classes?
I suppose I could do a filter on the contents of /System/Library/Frameworks for any with WebServerResources/Java/*.jar and then add all those to a text file, then add in any contents of my project/WebServerResources/Java directory as well.
Any other places I should look? What's the deal with /Library/WebServer/Documents/WebObjects/Java/wojavaclient.jar?
I believe the wojavaclient.jar has all the base client-side frameworks that you'll need for deploying java client applications (both D2JC and Nib). It's a signed jar and is intended for WebStart deployments. The clients side classes are also copied on (OS X) into the Apache doc root for people who are deployment java client based applets.
So, if it's specifically for D2JC- and Nib-based development, is it now deprecated as well? If not, then I'll have to file a bug report because if I add it to my application's Build Path instead of all the various jc-related frameworks in System/Library/Frameworks I get the following error when I try to launch the application:
Exception in thread "main" java.lang.SecurityException: class "com.webobjects.foundation.NSMutableArray"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Is that a combined jar of everything from the System/Library/Frameworks/*.framework/WebServerResources/Java/*.jar or what?
I believe so.
What about the other scripts and such?
Which scripts are you referring to? The stuff in Application support? Most of those scripts support the Xcode JAM build system.
If you look in a Xcode-generated .woa package, there are the following files and scripts:
- MyApp.woa/MyApp which is a copy of UnixLaunch.sh
- MyApp.woa/MyApp.CMD which is a copy of WinLaunch.CMD
- MyApp.woa/WOBootstrap.jar
- MyApp.woa/Contents/pbdevelopment.plist
- MyApp.woa/Contents/PkgInfo
- MyApp.woa/Contents/MacOS/ClasspathClient.txt
- MyApp.woa/Contents/MacOS/MacOSClassPath.txt
- MyApp.woa/Contents/MacOS/MyApp which is another copy of UnixLaunch.sh
- MyApp.woa/Contents/MacOS/MyApp_Client which is a copy of UnixLaunchClient.sh
- MyApp.woa/Contents/UNIX/UNIXClassPath.txt
- MyApp.woa/Contents/Windows/MyApp.CMD which is a copy of WinLaunch.CMD
- MyApp.woa/Contents/Windows/CLSSPATH.TXT
The classpath files are pretty self-explanatory. The only real question I have there is where do they fit in the definition sequence? Are they overridden by the command-line arguments, or vice-versa?
Of the scripts (.sh and .CMD files) are these used only during a development build, or are they used in deployment too? WOLips doesn't create them, so I'm wondering what they're purpose was under Xcode, and is some key functionality missing due to their absence - like Auto Open Client Application not working.
If they're legacy and not used anymore, that's fine, I'm just trying to get it all straight so I know what to put in for feature requests or bug fixes for WOLips.
What was/is their function in a WO Application?
I can find no documentation (old or new) about what they do. Do they only serve a function for development builds, or are they needed in deployment too?
Mostly to assemble the application/framework bundles for various deployment styles (J2EE vs .woa and .framework vs self contained jars). They also did the split deployment builds.
Try examining the build phases in the 'Development' and 'Deployment' targets in an old Xcode WO project and you'll see them.
Yeah, I'm not really worried about the scripts in there that aren't copied to the application during a build.
These are the things I'm trying to figure out.