ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Ws Wiki] Update of "FrontPage/Axis2/JAX-WS/JSR-181" by NickGallardo
Date Tue, 21 Nov 2006 16:39:02 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.

The following page has been changed by NickGallardo:
http://wiki.apache.org/ws/FrontPage/Axis2/JAX-WS/JSR-181

------------------------------------------------------------------------------
- The issue of supporting a JSR-181-based programming model for Axis2 endpoints was first
addressed by Rajith under JIRA issue 883 (http://issues.apache.org/jira/browse/AXIS2-883).
 This provides support for annotating an existing Java bean and deploying it as an Axis2 Web
service.
+ The issue of supporting a JSR-181-based programming model for Axis2 endpoints was first
addressed by Rajith under JIRA issue 883 (http://issues.apache.org/jira/browse/AXIS2-883).
 The goal is to provide support for annotating an existing Java bean and deploying it as an
Axis2 Web service.  JAX-WS 2.0 also includes support for JSR-181 annotations as a way to simplify
web service development.  
  
- The approach used is to read the annotation info from the classes using WSM.  For a given
annotated Java bean, WSM can create an instance of a [http://svn.apache.org/viewvc/beehive/wsm/trunk/src/core/org/apache/beehive/wsm/model/WsmService.java?view=markup
 WSMService] class.  The data from this WSMService instance is then used to create an AxisService
object.  With the configured AxisService, the Axis2 engine can then serve requests for that
new service.
  
- Because of the fact that the Axis2 implementation is also going to support JAX-WS, there
is are a few issues that need to be resolved.  The discussion started via email (http://marc.theaimsgroup.com/?t=115250120500001&r=1&w=2)
but has since been moved here.
+ 
  
  '''Targeting a Programming Model'''
  
@@ -25, +24 @@

  }
  }}}
  
- When processing this class, what marker can we use to determine whether or not this endpoint
uses the native Axis2 programming model, or whether it should be using JAX-WS?  One of the
goals of providing an annotations-based programming model is the removal of the required deployment
descriptor (services.xml).  The hope is that the service can be configured using just the
information that exists in the Java.  In this case though, the class is generic enough that
it appears too ambiguous to determine just by looking at the Java information.
+ When processing this class, what marker can we use to determine whether or not this endpoint
uses the native Axis2 programming model, or whether it should be using JAX-WS?  One of the
goals of providing an annotations-based programming model is the removal of the required deployment
descriptor (services.xml in the Axis2 case and webservices.xml in the JAX-WS/JSR-109 case).
 The requirement is that the service can be configured using just the information that exists
in the Java.  In this case though, the class is generic enough that it appears too ambiguous
to determine the target runtime just by looking at the Java information.
  
  One of the proposed methods for solving this was to expose every JSR-181 annotated Java
bean as an Axis2 endpoint as well as a JAX-WS endpoint.  This just moves the problem from
a deploy time issue to a runtime issue.  Since both services would be configured based on
the same endpoint information, the burden of determining which endpoint/operation should be
invoked would be placed on one of the Dispatchers.  Since the same operations exist on both
endpoints, there is again a situation where it's ambiguous as to which one is correct.
  
  So it seems like making the decision at deploy time is the correct one.  But to achieve
this, there will need to be some metadata beyond what exists today.  One proposal was to allow
a services.xml approach where the MessageReceiver could be specified explicitly.  This is
a simple way to solve the problem, but then negates one of the goals of not having a deployment
descriptor in lieu of annotations data.
  
- A third proposal that was suggested was to allow for an additional annotation to be included
on the class that would denote what the target programming model is:
+ A third proposal that was suggested was to allow for an additional annotation to be included
on the class that would denote what the target programming model is.  Here's a definition
of an annotation, @RuntimeBinding, that could be included on a class to trigger which runtime
was to be used.
  
  {{{
- @Axis2ServiceBinding(types={ServiceBindingType.NATIVE , ServiceBindingType.JAXWS})
+ package org.apache.axis2.annotation;
+ 
+ @Target (ElementType.TYPE)
+ @Retention (RetentionPolicy.RUNTIME)
+ public @interface RuntimeBinding {
+     
+     public enum Runtime {AXIS2, JAXWS};
+ 
+     public Runtime target();
+ }
  }}}
  
  Of the three approaches provided, this seems like the one closest to the goal.  If this
approach were chosen though, there would need to be a default chosen for the cases in which
this annotation was not specified on the endpoint.  To pass the JAX-WS TCK, we cannot require
the presence of an additional annotation, so the default should be JAX-WS.

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@ws.apache.org
For additional commands, e-mail: general-help@ws.apache.org


Mime
View raw message