-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Eran Chinthaka wrote:
> Good explanation. Can we have this on wiki ?

yes .. I'll do

Sanka
> 
> 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
>>
>>
>>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFD9Emt/Hd0ETKdgNIRAt8pAKCHUEYuEBFVQm3oKpcyoBEsZegmLwCeNIPY
ZG7faGkTIQGtew3WZyzwmkc=
=kdgQ
-----END PGP SIGNATURE-----

Reply via email to