Sameera Jayasoma wrote:


On Sat, Jan 3, 2009 at 12:56 PM, Mike Edwards <[email protected] <mailto:[email protected]>> wrote:

    Folks,

    I am writing as a developer on the Apache Tuscany project.

    We are building a version of Tuscany that runs on OSGi - and we use
    Axis2 in our codebase.

    We're experiencing some problems associated with running Axis2 with
    Tuscany under OSGi and I'd
    appreciate any help you can give us.

    The problem we've run into relates to user-provided Message Receiver
    classes that are part of the
    Tuscany code and which are configured into axis2.xml as follows:

       <messageReceivers>

          <!-- Added by Tuscany -->
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";

    
class="org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInMessageReceiver"/>

           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

          <!-- Added by Tuscany -->
           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";

    
class="org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver"/>

          <!-- Added by Tuscany -->
           <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only";

    
class="org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInMessageReceiver"/>

           <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only";
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
           <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out";
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

          <!-- Added by Tuscany -->
           <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out";

    
class="org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceInOutSyncMessageReceiver"/>

       </messageReceivers>

    When we run the code using OSGi, we get class loading exceptions for
    those Tuscany message receiver
    classes, since the code that loads those classes is in the Axis2
    code (AxisConfigBuilder) - but that
    code has no declared dependencies on the Tuscany packages containing
    the message receivers - so that
    we get class not found exceptions.

    Do you have a solution for this problem?



Yes. As you have mentioned the problem here is, The class loader which loads Axis2 classes does not see the Tuscany classes. You can use DynamicaImport-Package OSGi manifest header for the Axis2 bundle.

DynamicImport-Package: *

This allows Axis2 bundle to dynamically load classes from other bundles which are not wired during the Resolving process performed by the OSGi framework implementation. At the same time, you need to export the package in which message receiver classes reside.




    I got the code working with the Eclipse/Equinox version of OSGi by
    patching the following into the
    manifest for the axis2-kernel jar:

    Eclipse-BuddyPolicy: dependent

    ...and then declaring the relevant Tuscany jar files as being
    buddies of the axis2-kernel bundle in
    thier manifests.


Seems like your implementation works only with Equinox, since you have used Equinox specific constructs.


    However, I know that this is really a sticking-plaster solution and
    will only currently work for the
    Equinox version of OSGi.  Do you have a nice neat solution that will
    work for all the OSGi
    implementations?


Yes. We, in WSO2 have built WSO2 Carbon [1] which runs on OSGi. WSO2 Carbon is the base platform for all the WSO2 java projects. Carbon uses Axis2 and we have solved most of these problems.

Sameera,

Thanks for responding to my email.

Would you be able to say more about how you solved these OSGi problems with Axis2 in the Carbon project? Are your solutions of general applicability - and do they involve changes to the Axis2 codebase?


Yours,  Mike.





    Yours,  Mike.


[1] http://wso2.org/projects/carbon

--
Sameera Jayasoma
Software Engineer
WSO2 Inc.
Oxygenating the Web Service Platform.
http://wso2.org/

blog:http://tech.jayasoma.org/

Reply via email to