Steve, just so you understand, CXF is more than just another SOAP stack. In contains a SOAP stack as a component, but it's "oh so much more" than that. It may be that it provides too much for what you are trying to do.

That being said, I do sympathize with your initial impression that the amount of dependencies is overwhelming, and it would be an interesting exercise to see how much the CXF "kernel" could be pared down to having a minimal set of dependencies, and then allow you to bolt on the parts that you need. The current distribution is a bit monolithic in that sense ("here are all the jars; go for it"), but it's the tool that launched this thread (maven) that is really what you should be using to get your minimal set of dependencies; the internal maven components are all quite modular.

Though note that there have been discussions on this forum that have advocated for less granularity, than more ("I just want one jar file -- what's so hard about that?"). Well it is hard, if you have version x of lib y, but your customer needs to use version z, no ifs ands or buts.

-Fred

On Dec 1, 2008, at 4:11 PM, Steve Cohen wrote:

Thanks, Daniel, more inline comments below.

Daniel Kulp wrote:
Interesting discussion.   Let me jump in here.....



Cause CXF does use it? Most of the wiring of CXF itself is done with Spring. CXF can provide limited functionality without spring, but if you want to do any advanced configuration, you're most likely going to need Spring. Also, the JMS transport now uses Spring JMS. Thus, if you need soap/jms, you need spring.


Well, fortunately, I don't need soap/jms so I don't need Spring and am functioning without it. I am surprised that the CXF folks have made a deliberate decision to depend on Spring or have drifted into this. I've not used Spring, so I may be guilty of missing the greatest thing since Sliced Bread, but it sounds like we are walking into a Brave New World of competing platforms. My memory of Spring is hearing about it four years ago and what I took home was how lightweight it all was.
What, for Pete's sake, is Neethi, and why was it necessary to add it?

Neethi is the WS-Policy implementation. That said, if you aren't using any policy assertions we probably could somehow make this optional. That's definitely something we could look into. For basic soap/http, this could be removable. However, once we start getting the WS-SecurityPolicy stuff flushed, it would DEFINITELY be required for that.

The service I am accessing is using Basic Authentication.
This is actually a "problem" with our "common" and "api" modules. They pull in a bunch of deps that may not be needed if nothing uses those parts of the apis. Some of these could be marked "provided" in the api module and then make them runtime/compile scope in the modules that really need them. (in this case, the ws-policy module)


That would be good.


In all honesty, the difference between server and client side deps is almost nill. In fact, I cannot think of anything other than the tooling stuff. You MAY think that Jetty is not client side, but if you use WS-RM or WS-Addressing, it IS required on the client side.

The fault there may be with Jetty, then. THEY may have packaged their client and server stuff together and not allowed for separation. Again, I thought the point of SOAP was supposed to be independence of client from server.
One thing that I ran into last week that could be a big help is to flush out a useful set of Maven archetypes that would be good "getting started" points for various things. The poms they produce could be "minimal deps" type things. While working on a Maven presentation last week, I discovered our single "hello world, java first" archetype actually didn't work. I've fixed that on trunk, but it definitely shows there isn't much work done in that area. We really should have a several archetypes to use as getting started things. A "jax-rs" archetype. A "wsdl first client" archetype, a "wsdl first war" archetype, security, etc....

That would be a good start.

Another thing I started but haven't completed was to get things to work with the versions of various things built into Java 6. Specifically JAXB. Right now, if using Java6, you can remove SOME of the jars, but JAXB isn't one of them. On trunk, the RUNTIME will work with the in-jdk jaxb, but none of the tooling will.
Dan



Still using 1.5, but this would help if we moved up. Corporate bureaucracy prevents, see Dilbert, etc.

Steve


Reply via email to