HI Sanka;

Thanks verymuch for detailed explanation!

I will have a look at the code, and get back. I am really worrid about
the ServiceClient level.
For an example when I provide a WSDL with policy to the Service
Client, It should be configure itself.

>From your explanation I think it is easy thing to do. Is there a work
done on that aspect?

Thanks
Srinath






On 2/15/06, Eran Chinthaka <[EMAIL PROTECTED]> wrote:
> Good explanation. Can we have this on wiki ?
>
> Sanka Samaranayake wrote:
>
> >
> > Hi Srinath, all,
> >
> > At this point, Axis2 Codegen does support WS Policies at client-side.
> >
> > Let me briefly explain how it happens..
> >
> > Phase1: (At PolicyEvaluator)
> >
> > Codegen engine runs few of its registered extension before it generates
> > the stub. When PolicyEvalutor (which is a registered Codegen extension)
> > is initialized it populates a registry of namespaces of supported
> > policies to module. For instance module foo might have a mapping of
> > namespace http://test.com/foo which means any primitive assertion which
> > has this namespace will be processed by this module.
> >
> > e.g. <mns:MyAssertion xmlns:mns="http:tests.org/foo">
> >     ...
> >      </mns:MyAssertion>
> >
> > In other words the above assertion in a policy will be processed by the
> > module 'foo'. Those modules are located using the repository-path which
> > is given as an argument.
> >
> > Then at the engagement, effective policy of each operation is calculated
> > based on policy information declared in the WSDL document. Here we
> > assumes that effective policy of an operation contains a single
> > alternative (Multiple policy alternatives are not supported). Then we
> > split that policy into few other policies such that each policy will
> > contains primitive assertions belonging to only one namespace
> >
> > <wsp:Policy>       <wsp:Policy>    <wsp:Policy>   <wsp:Policy>
> >   <a:Foo/>          <a:Foo/>          <b:Foo/>      <c:Bar/>
> >   <a:Bar/>     =>    <a:Bar/>      </wsp:Policy>  </wsp:Policy>
> >   <b:Foo/>        </wsp:Policy>
> >   <c:Bar/>
> > </wsp:Policy>
> >
> > Then each policy is given to the appropriate module with an
> > org.w3c.Element type object to which the module can append any
> > other elements/attributes it wishes. Those attributes/elements should
> > resolved to meaningful stub functions via PolicyExtensionTemplate.xsl at
> > latter point of time.
> >
> > For instance depending on the policy, Security module can append
> > <username>, <passwd> elements to the given element as children, which
> > are later resolved into setUsername(..), setPasswd(..), functions of the
> > stub. This way a module can add additional methods to the stub which can
> > be used get specific parameters to the module. Those methods store any
> > user input in the ServiceClient properties
> > (ServiceClient.getOptions().putProperty(...)) which can later be access
> > by the module.
> >
> > Phase2: (At MultiLanguageClientEmitter)
> >
> > Further, effective policies (based on the WSDL) at appropriate levels
> > (service level, operation level) are stored as policy strings in the
> > stub. Few more generic methods are also added to the stub which are used
> >  to evaluate/processing policies at runtime.
> >
> > Runtime:
> >
> > When a new stub object is created, the policy strings in the stub are
> > converted into policy objects and merge together to get the effective
> > policies of each operation. That policy information is stored in the
> > AxisOperation object which a module can access at later point of time.
> >
> > Then based on its policy each AxisOperation is engaged to a set of
> > modules.
> >
> > And when the stub method is invoked, those modules which are engaged to
> > that AxisOperation, access the policy information for that operation via
> > AxisOperation object. It can get other information needed from the
> > MessageContext which are get stored by stub methods which the module has
> > added to the stub earlier. The modules are required to loads their
> > configurations according to that policy information and properties they
> > get via MessageContext.
> >
> > Hope this'll help !!
> >
> > Best,
> > Sanka
> >
> >
> > Srinath Perera wrote:
> >
> > >Oops forget to put the prefix, seems I have been too far away
> >
> > >---------- Forwarded message ----------
> > >From: Srinath Perera <[EMAIL PROTECTED]>
> > >Date: Feb 13, 2006 5:29 PM
> > >Subject: State of WS-Policy?
> > >To: "[email protected]" <[email protected]>
> >
> >
> > >Hi All;
> >
> > >I want to ask the state of our policy implementation, and how much the
> > >policy descriptions are bound to modules?
> >
> > >I saw from the code, if there are modules engaged, they are printed
> > >out in WSDL as policy, do we support other side, engaging and
> > >configure the
> > >modules according to the WS-Policy information given in Axis2
> > configuration.
> >
> > >I am more interested in having the policy support in the client side,
> > >and I believe it should be WSDL based. Have we done any work on it? If
> > >not I would like to try to do something on the enabling them on the
> > >dynamic client interface (give a wsdl and configure the
> > >ServiceCleint/OperationClient) as a start
> >
> > >I wrote few thoughts and a possible implementation down, I think most
> > >of it is already done. I want to tie the loose threads and use it and
> > >to fix what ever I can.  Please comment.
> >
> > >Thanks
> > >Srinath
> >
> >
> > >WS-Policy and Axis2 Modules are kind of parallel, I would view them as
> > >one is abstract representation and other is implementation of the
> > >representation. To build a policy model for Axis2 we need to describe
> > >two scenarios
> >
> > >1) Build a Service, engage Modules and then create a WSDL description.
> > >This is the most natural scenario for the Server side
> > >2) Given a WSDL, extract the Policy and create a Service with modules
> > engaged
> >
> > >The main work we have to do is
> > >1) Provide a mapping from a given type of policy to a specific module,
> > >then hand over handling that policy to module
> > >2) Define the parameter conversion to and from the Policy, we have
> > two options
> > >        a) We can define a mapping from policy to the our parameters
> > >in the modules
> > >        b) We can use policy segments inside the service.xml file, for
> > >an example for security module
> >
> >
> > >Possible Implementation
> > >=======================
> > >        1) Every module register a name space of the policy it can handle
> > >        2) If we start from Axis2 configuration Modules at engagement
> > receive
> > >the policy directly or via the service. The Policy could be Axis2
> > >parameters or Policy xml segment.  Following is example of policy
> > >segment in engagement.
> >
> > >        <service name="SecureService">
> > >                <engage name="">
> > >                        <wsp:Policy>
> > >                                ...............
> > >                                 <sp:SignedSupportingTokens>
> > >                                    <wsp:Policy>
> > >                                        <sp:UsernameToken
> > >sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once";
> > >/>
> > >                                    </wsp:Policy>
> > >                                 </sp:SignedSupportingTokens>
> > >        ..........
> > >                         </wsp:Policy>
> > >                </enagege>
> > >       </service>
> > >    3) When  a WSDL is found with policy included, a module is called
> > >based on the #1 mapping, and module is able to process the policy and
> > >configure and engage himself
> >
> >
> > >--
> > >============================
> > >Srinath Perera:
> > >   http://www.cs.indiana.edu/~hperera/
> > >   http://www.bloglines.com/blog/hemapani
> >
> >
> >
>
>
>


--
============================
Srinath Perera:
   http://www.cs.indiana.edu/~hperera/
   http://www.bloglines.com/blog/hemapani

Reply via email to