----- Original Message -----
From: "Juan Hernandez" <jhernand(a)redhat.com>
To: engine-devel(a)ovirt.org
Sent: Tuesday, June 5, 2012 3:53:08 PM
Subject: [Engine-devel] Improve classpath building
Hello all,
I would like to propose an improvement in the way we build
class-paths
in the tools associated to the engine. At the moment we have at least
two different ways to build classpaths:
1. Hard coded in the scripts, with maybe some variables:
CP=$EAR_LIB/engine-encryptutils.jar:$EAR_LIB/engine-compat.jar:...
This depends a lot on where we place the jar files, and we need to
place
them in different places in different environments if we want to
adhere
to common packaging practices.
2. Use the build-classpath script:
CP=`build-classpath engine-encryptutils engine-compat ...`
This depends less on the place we put them, but it doesn't work in
development environments where some jars are not installed to the
proper
system locations.
None of these is good for all environments.
I would like to replace this classpath building logic with an script
that performs the task in an smarter way and that works in all our
environments (production, development, Fedora, RHEL, etc).
In general it looks like a very good idea.
Running the utilities in a development environment today is a real pain, so such a change
will save a lot of time both when setting the development environment, and when testing
changes.
Didn't review all the whole source code, but from a quick glance I saw the
preferredJars dictionary.
IMO it is better to put this configuration in a configuration file, instead of a
dictionary.
Also, I would allow to change the path to this file, to allow developers to create a
custom file (if they need one).
My proposal is to create a "engine-java" script that we
should use
always when invoking java programs. This script will receive the same
parameters that the "java" launcher receives, but the "-cp" or
"-classpath" options will contain not the absolute name of the jar
files, but just a simple jar name instead, something like
"commons-logging", "commons-codec" or "engineencryptutils".
The
script
will extract the "-cp" or "-classpath" options given and use them to
do
a search of the jar files in the locations where they can be in
different environments:
/usr/share/java
/usr/share/java/ovirt-engine
/usr/share/ovirt-engine/engine.ear
/usr/share/ovirt-engine/engine.ear/lib
<your jboss development installation>/engine.ear
<your jboss development installation>/engine.ear/lib
In addition the script will check that all the give jar files exist
and
will abort the execution if any of them is missing.
Find attached the initial version of the proposed script.
Let me know what you think.
Regards,
Juan Hernandez
--
Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
3ºD, 28016 Madrid, Spain
Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat
S.L.
_______________________________________________
Engine-devel mailing list
Engine-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel