On Aug 27, 2007, at 9:06 AM, Jeff Genender wrote:



Kevan Miller wrote:
K. Can you explain to me what functionality is being taken away? Dan
said function would be lost, but then listed functionality and said that
configuring them "becomes quite a bit harder". Nor do I know how this
increased complexity would be who bears the burden for things becoming
quite a bit harder.


Read Dan's comment/answer.  The functionality is the ease of
configuration, etc.  For someone who has used Spring extensively, I
think its a huge loss not to be able to leverage it.

I want the client application to be in control of the Spring version. I
don't want the Geronimo server environment to dictate the version of
Spring used by the client application. At present, we are dictating the version of Spring. I think this needs to change. I don't think this is a
result of our ClassLoader structure.


What are you talking about...this is clearly a classloader problem. The fact the client and the server are fighting over whose version of Spring
is the "right one" points its finger at a classloader issue.  The fact
the client has to set the hidden classes attribute on plans clearly
shows this is a classloader problem.  Am I missing or not seeing
something here?  If so, please point it out...perhaps I'm simply not
getting it. Clashing versions is about as classloader related as it gets.




I have no real issue with our CXF server module requiring Spring.

I'm less happy if we're requiring that Spring be accessible from a
client application module to configure CXF web services client
capabilities.

I'm way less happy if we require the same Spring instance be accessible from the CXF server module and the client application module. This is
the case, at the moment. I think this needs to be changed.


Why should it be changed?  This seems to work with someone using
Tomcat...just not Geronimo.

Does Tomcat embed CXF? Does CXF distribute Tomcat binaries configured to
provide CXF-based web services? Or does CXF distribute CXF and
associated dependent jars which can be packaged into a WAR and
subsequently deployed into a web container?

CXF can certainly be used in Tomcat. Tomcat doesn't distribute it, but
it certainly can be used with that web container.  It appears the only
project who has this problem is Geronimo :-/

Cool down a minute and think about this. What happens in tomcat if you want to use cxf + an incompatible version of spring in your app? You bundle cxf + springA + springB into your web-app and then what happens?

IMO we are talking about trying to get geronimo to generically solve a problem that tomcat forces its users to deal with on an per-app basis.

It's by no means obvious to me that treating this as a problem with the coding of our classloaders is appropriate. Here are some possibilities I can think of off the top of my head:

1. cxf generates some code for each web service client/service that directly use spring classes. In this case there is AFAIK no way for an app to use a different spring version since these generated classes are going to be loaded in the application classloader and they need access to cxf's copy of spring classes. If this is what is going on I hope it's possible for cxf to stop doing this.

2. If putting spring in the apps hidden-classes works and allows the app to use a different spring version, then evidently (1) isn't a problem. In this case if we automatically add spring to hidden- classes of every app we would be preventing all apps from using our copy of spring which seems undesirable to me. hidden-classes currently means "don't import these classes from parents". We could look into also having a "don't export these classes to children" filter in our classloader.

3. With just the "don't export" filter proposed in (2), people adding the spring jars to their dependency list would be getting spring loaded in a different classloader for their app and for cxf. This might not be desirable. We could make a spring configuration to provide a single classloader to load spring in that cxf and apps could depend on.

thanks
david jencks




I believe it's the latter. In which case, you're not giving me an
apples-to-apples comparison, IMO.


Well...lets agree to disagree.  The bottom line is we are castrating
other projects because we have messed up classloaders.  That, IMNSHO,
has nothing to do with apples-to-apples comparison and we are creating a
treatment to the problem rather than a panacea.

Do as you may, but call my issue with how we are handling this a
dissenting voice.  I am not in agreement with this action.

--kevan


Reply via email to