On Jul 9, 2008, at 1:12 PM, Joe Bohn wrote:
Thanks for the post Lin. I was going to start a new thread for this
discussion.
I mentioned a third possibility in the Geronimo 2.1.2 plans
thread ... that is adding the artifact alias entries for 2.1 & 2.1.1
directly into the 2.1.2 server image as part of the release.
I guess each plugin can include aliases for previous versions of
itself and the jars it depends on. This might be better than the
compatibility plugin but might also turn into a maintenance nightmare.
I'm not exactly sure how I feel about this. It would solve the
problem and eliminate the need for a user to manually change the
entries or install a compatibility plugin. On the other hand it
seems a bit heavy-handed and will expose the user a long list of
alias entries if they need to manually change the file themselves.
I also wonder if there are any performance implications as the list
gets longer.
I'd say, no. Currently it's a hashmap lookup and should not be
noticeably affected by the size of the hashmap.
All in all, the alias approach will work in the short term but I
think it's just a band-aid fix. At some point it is going to cause
grief when things are not really compatible but the aliases allow a
user to install anyway. At some point we're going to have to invest
in a more complicated and complete plugin solution that address
compatibility more completely.
Maybe. Testing compatibility would be a nice thing to do but I have
essentially no idea how. Without testing I don't see the point in
making things more complicated and with it I don't see a problem with
the "lots of aliases" approach. Representing the aliases in property
files is not essential and if they start getting unwieldy we could
look for an alternate notation. On the other hand I don't expect
users to be messing with the artifact alias files by hand anyway: i'd
expect that normally they'd only be modified by installing more plugins.
thanks
david jencks
Joe
Lin Sun wrote:
Hi Joe/All,
Finally I was able to deploy the jaxws-calculator car file onto the
server, after adding a bunch of entries in the
artifact-aliases.properties file, which is essentially the same as
what your compatibility plugin does.
We'll have to quickly decide what to do with the compatability issue
otherwise none of our sample will be installable on 2.1.2 server.
One approach is to release the compatibility plugin you worked on.
Is this checked in?
Pros: we can have this quickly and get ready for the 2.1.2 release.
Cons: it is extra work for the user.
The other approach is to add the matching entries to the
artifact-aliases.properties and client_artifact-aliases.properties on
the fly. We'll have to determine how to add them, what to add to
different assemblies (can different assemblies have same entries if
the extra entries don't hurt anything), etc.
Pros: no extra work for the user, assuming the server can add the
common matching entries to different assembly on the fly.
Cons: Could take longer and is this appropriate for 2.1.2 given we'll
release it very soon?
Thanks, Lin
On Tue, Jul 8, 2008 at 2:51 PM, Joe Bohn <[EMAIL PROTECTED]>
wrote:
Lin Sun wrote:
Yes, I am able to move onto the next missing dependency module.
Thanks.
Is there a reason why we need both? I thought we just need one and
version can be omitted on the left side per
http://cwiki.apache.org/GMOxDOC21/how-to-upgrade-jars-and-swap-modules.html
What you need depends on the way the dependency itself is
specified. If it
is specified with the version such as 2.1 then you need the /2.1/
entry.
This is the case for the jsp sample. If it is called out without
a version
then you need the // entry. The doc you referenced calls the
former a
"fixed version".
IIRC the jsp sample had 2.1 in the jasper dependency ... but it
also had a
dependency on the tomcat/jetty car. The tomcat/jetty car has a
dependency
on jasper without the version. You might not need the // entry
but in
general it is usually best to provide both the versioned and non-
versioned
entries.
BTW, I was actually using a quick pass at a compatibility plugin I
had
created for that included all of the cars for the tomcat server
instance ...
so some other dependencies may have been resolved beyond jasper
(such as the
tomcat dependency).
Joe
Lin
On Tue, Jul 8, 2008 at 2:06 PM, Joe Bohn <[EMAIL PROTECTED]>
wrote:
Lin Sun wrote:
Hi Joe,
Is this scenario working for you after your fix? I updated the
artifact-aliases.properties file in var/config manually when
server is
shutdown -
org.apache.geronimo.configs/jasper//
car=org.apache.geronimo.configs/jasper/2.1.2-SNAPSHOT/car
You need one more additional entry ...
org.apache.geronimo.configs/jasper/2.1/
car=org.apache.geronimo.configs/jasper/2.1.2-SNAPSHOT/car
That worked for me.
Joe
However, I am still getting the "Missing dependency:
org.apache.geronimo.configs/jasper/2.1/car" error.
What am I missing? Thanks, Lin
On Thu, Jul 3, 2008 at 4:19 PM, Joe Bohn
<[EMAIL PROTECTED]> wrote:
Joe Bohn wrote:
Ok, I confirmed that DefaultArtifactResolver.queryArtifacts()
was not
including aliases for the query ... hence the problem. Thanks
to a
good
pointer from David Jencks I was able to easily add this into
the query.
I
created GERONIMO-4182 for this problem and checked in a fix for
2.1.2-SNAPSHOT and 2.2-SNAPSHOT.
Unfortunately, that means that we won't be able to use a version
compatibility plugin for anything prior to 2.1.2/2.2 ... so we
will
need
to
come up with another solution for samples or other plugins
created for
Geronimo 2.1 that we want to run on Geronimo 2.1.1.
Joe
Joe
thanks
david jencks
On Jul 2, 2008, at 8:46 AM, Joe Bohn wrote:
I attempted to create a version compatibility plugin such
that
plugins
with dependencies on 2.1 artifacts could attempt to be
installed in
a
2.2-SNAPSHOT server image (mapping 2.1 car artifacts to 2.2-
SNAPSHOT
car
artifacts). However, thus far I'm not having any success.
The plugin is fairly simple. Just a bunch of entries for
artifact
aliases and no other content:
<plugin-artifact>
...
<artifact-alias
key="org.apache.geronimo.configs/jasper//
car">org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car</
artifact-alias>
<artifact-alias
key="org.apache.geronimo.configs/jasper/2.1/
car">org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car</
artifact-alias>
...
I also verified that after installing the compatibility
plugin that
the
entries are added to the artifact-aliases.properties file in
var/config:
...
org.apache.geronimo.configs/jasper//
car=org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car
org.apache.geronimo.configs/jasper/2.1/
car=org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car
...
Yet, even with these entries, I still get essentially the
same error
attempting to install samples created for 2.1 in a 2.2-
SNAPSHOT
server
as I
had without the artifact-alias entries. I showed the
jasper entries
above
because that is the missing dependency when I attempt to
install the
Tomcat
JSP example plugin created for 2.1 on 2.2-SNAPSHOT (see error
below).
I had
similar results on a 2.1.1 server when I attempted to use a
another
compatibility plugin mapping 2.1 cars to 2.1.1. Am I missing
something
obvious?
11:22:45,918 ERROR [PluginInstallerGBean] Unable to install
plugin
org
.apache
.geronimo.kernel.repository.MissingDependencyException:
Plugin
is not installable on Geronimo 2.2-SNAPSHOT
Missing dependency: org.apache.geronimo.configs/jasper/2.1/
car
at
org
.apache
.geronimo
.system
.plugin
.PluginInstallerGBean
.validatePlugin(PluginInstallerGBean.java:920)
at
org
.apache
.geronimo
.system
.plugin
.PluginInstallerGBean
.downloadArtifact(PluginInstallerGBean.java:1081)
...
Joe