The new SOAP/JMS transport option in binding-ws-axis provided by Dinesh
motivated me to go and look at how this new option (soap/jms) might be
selected using the policy framework. This all started a while back with this
thread ( http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg20657.html).
By way of a little education in the policy framework I've just looked at the
server side of things at the moment and have a few questions of those who
know policy better than I do....

I created a definitions.xml file with the following...

 <sca:intent name="transport.jms">
              <sca:description>
              A JMS transport is required
              </sca:description>
 </sca:intent>

 <sca:policySet name="wsJMSTransportPolicy"
     provides="transport.jms"
     appliesTo="sca:binding.ws">
     <tuscany:wsConfigParam>
        <parameter name="TuscanyQueueConnectionFactory">
            <parameter name="java.naming.factory.initial">
org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url
">tcp://localhost:61616</parameter>
            <parameter
name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>

        </parameter>
     </tuscany:wsConfigParam>
 </sca:policySet>

I plumbed this into the Axis2ServiceProvider as an alternative to providing
this information via the binding.ws uri attibute so you can specify the
following...

    <component name="HelloWorldServiceComponent">
        <implementation.java class="helloworld.HelloWorldImpl" />
        <service name="HelloWorldService">
            <interface.wsdl interface="
http://helloworld#wsdl.interface(HelloWorld)" />
            <binding.ws wsdlElement="
http://helloworld#wsdl.binding(HelloWorldSoapJmsBinding)" requires="
transport.jms"/>
        </service>
    </component>

Quetions...

- How does an SCA artifact, binding-ws in this case, advertise what intents
and policy sets can validly be specified. Is the intention that it is
inferred through the policy set appliesTo attribute?

- I used the policy-scurity Axis2ConfigParamPolicy to structure the policy
here. This is more generally useful that security. It raises the question
about where we put policy implementations.
      Each in a separate module
      In one big module (possibly with separate package names)
      With the SCA artifact implementation to which they belong
      Somewhere else

- This policy is very specific to Axis2. Well the information is general but
the parameters are structured as they are because this is the way that Axis
reads configuration parameters. In the end though I didn't end up pushing
them directly into Axis 2 so, in theory, they could be structured
differently. It would be interesting to look at more general alternatives,
e.g. ws-policy. Are there any examples in the codebase yet?

- I was originally going to drive the processing from the required intents
on the binding but they don't appear to be preserved in the model. Is this
intentional?

I haven't looked at the reference side of this yet.

The non SCA client relies on the service location in the wsdl having the
appropriate JMS configuration so the WSDL needs to be generated taking
intents into account.

In the case of an SCA  client  in the same domain I'm assuming we would
expect the specification of a policy intent to be sufficient so that  this
can be part of the  reference/service  matching process. Currently I name
the JMS queue after the service name so the minimum information is the
contract, the reference target and the policy set.

Regards

Simon

Reply via email to