David and I chatted a little bit online this weekend as we tried to
bring each other up to speed on the respective areas so we could have a
meaningful conversation about this. [1] I thought I'd take a little bit
to summarize.
As I understand it, we would need to integrate CXF at two points. First,
the deployment. We need to support JSR 109 deployment descriptors.
Second, we need to support invoking EJBs.
For deployment, we can wire in JSR 109 descriptors into the service
construction. In CXF we have a Service, which holds a WSDL like service
model and information about CXF can invoke the server (like databinding
info, interceptors/handlers, etc). Generally you create a Service from a
ServiceFactory [2][3]. The base service factory
(ReflectionServiceFactoryBean) can actually construct the service from
WSDL using the WSDLServiceFactory or from introspection. During this
construction, ServiceConfigurations [4] can provide values for the
service. There can be many of these. For instance, lets say we want to
determine the namespace of the service. We can have a
JaxWsServiceConfiguration which takes the namespace from the @WebService
attribute. If there is no specified namespace, the service factory will
move to the DefaultServiceConfiguration which will create a namespace
from the package name. With that all said - its easy to envision how a
Jsr109ServiceConfiguration could be created to override values in the
JAX-WS attributes. I still don't know enough about JSR109 to say if this
will be sufficient though - It would be good to come up with a list of
areas that JSR 109 affects.
The second area - EJB invocation - is a bit simpler. In CXF we have the
concept of Invokers [5][6]. Invokers allow you to control how your
object is invoked. You can supply your own object, scopes, etc. XFire
had an EJB invoker [7] which I think is similar to what needs to happen
here (although I know jack about EJBs, so I could be wrong). While the
Invoker interface in CXF is slightly different, all the same information
is there.
Are there other integration areas that I missed here? Anyone able to
provide a more comprehensive view of what exactly we need to do in terms
of JSR 109?
Cheers,
- Dan
1. http://dev.rectang.com/logs/codehaus/%23cxf/20061001.html
2.
http://fisheye3.cenqua.com/browse/celtixfire/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?r=450267#l287
3.
http://fisheye3.cenqua.com/browse/celtixfire/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?r=450397
4.
http://fisheye3.cenqua.com/browse/celtixfire/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java?r=450267
5.
http://fisheye3.cenqua.com/browse/~raw,r=437862/celtixfire/trunk/api/src/main/java/org/apache/cxf/service/invoker/Invoker.java
6.
http://fisheye3.cenqua.com/browse/celtixfire/trunk/rt/core/src/main/java/org/apache/cxf/service/invoker/AbstractInvoker.java?r=447027
7. http://xfire.codehaus.org/Invokers
David Jencks wrote:
I'm starting to look into jee5 webservices integration in geronimo.
So far I've got as far as locating some of the specs and starting to
read them :-). If anyone wants to help or take over aspects of this
that would be great!
Unfortunately I haven't been able to keep up with the dev lists for
either axis or cxf so I'm not sure whether anyone has thought about
this before nor how much of the appropriate specs are implemented
already by either project. I have been pointed to a cxf geronimo
builder, but haven't determined how out of date it is, as there have
been quite a few builder changes in geronimo since the builder was
written.
Thanks!
david jencks
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com
http://netzooid.com/blog