tuscany-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Nash <n...@apache.org>
Subject Re: Tuscany class loading (was: Re: Using EMF with Tuscany 1.6)
Date Wed, 28 Nov 2012 10:12:32 GMT
Simon Nash wrote:
> Millies, Sebastian wrote:
>> Hello there,
>>
>> I've never been back to talk about this, so here goes.
>>
>> To re-iterate the problem: I want to set up my contributions, so that 
>> they can use
>> different versions of third-party libraries than the Tuscany runtime. 
>> My original example
>> was using recent versions of EMF (hence the subject line), another 
>> example is using
>> Tuscany with an Apache Solr 4.0 backend, which requires different 
>> Apache Http Components.
>>
>> The standard recommendation is [1], but I have had great trouble to 
>> get that to work. (The
>> reasons have to do with the use of SDOs in the application in question.)
>>
>> I have therefore decided to try the opposite approach of  including 
>> any different versions of components
>> used  by Tuscany in nested jars in the contribution itself. Nested 
>> jars in a zip contributionget added into
>> the contribution classpath.
>>
>> Here I am working under the assumption that the SCA contribution 
>> classloader would work
>> somewhat like a webapp class loader in that it would not follow the 
>> delegation model,
>> but would look for classes in the following order
>> 1) inside the contribution
>> 2) in the imports
>> 3) in the parent classloader
>>
>> With this behavior, everything goes well. For example, I can make 
>> calls to Apache Solr through
>> the solr-solrj-4.0.0.jar and its dependents, including 
>> httpclient-4.1.3.jar and httpcore-4.1.4.jar,
>> without impacting HTTP calls made by Tuscany-generated proxies elsewhere.
>>
>> Here's the snag: As it turned out, 
>> org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader DID
>> NOT work the way I expected, but rather looked in the parent 
>> classloader first, only then inside the contribution.
>> I had to change the coding (in module contribution-java) and the 
>> associated test. A patch is attached.
>>
>> Would my change break anything, perhaps with respect to OSGi? Is there 
>> anything in the SCA spec that mandates a
>> certain class loading behavior? I do feel that the alternative 
>> behavior is more natural than the one that is currently
>> implemented. (There a very few resources on Tuscany classloading, and 
>> e. g. [2] does not seem to mention
>> this particular issue.)
>>
>> Unfortunately, I cannot get all the Tuscany 1.6  tests to compile and 
>> run with maven.
>>
>> Please, would anyone be willing to see if Tuscany 1.6 with my patch 
>> applied would still pass all current tests?
>> (unless my proposal is obviously wrong for other reasons, of course)
>>
> I can run these tests on the Tuscany 1.x trunk tomorrow.
> 
>   Simon
> 
I tried this and got the following failures in modules and samples:

modules/binding-rmi-runtime:
testRmiService(org.apache.tuscany.sca.binding.rmi.BindingTestCase)

modules/binding-ws-axis2:
testEchoFoo(org.apache.tuscany.sca.binding.ws.axis2.itests.HelloWorldNoWSDLTestCase)
testImageFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)
testSourceFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)
testDataHandlerFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)
testOMElementFileTransfer(org.apache.tuscany.sca.binding.ws.axis2.itests.mtom.FileTransferMTOMTestCase)

samples/callbacks-jms:
testOderClient(callbacks.CallbacksTestCase)

samples/helloworld-ws-reference-lean:
testWSClient(helloworld.HelloWorldClientTestCase)

samples/helloworld-ws-sdo:
testWSClient(helloworld.HelloWorldClientTestCase)

samples/implementation-composite:
test(composite.CompositeTestCase)

samples/quote-xquery:
testQuoteJoin(xquery.quote.XQueryQuoteClientTestCase)

samples/simple-bigbank:
test(bigbank.BigBankTestCase)

samples/spring-bigbank-stockquote:
testServer(bigbank.stockquote.StockQuoteServiceTestCase)

samples/simple-callback:
test(simplecallback.SimpleCallbackTestCase)

samples/simple-callback-ws:
test(simplecallback.SimpleCallbackTestCase)

I didn't go any further, as the above errors seem to indicate there
are serious issues with this change.

   Simon

>> Best,
>> Sebastian
>>
>> [2] https://cwiki.apache.org/TUSCANYWIKI/classloading.html
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Simon Nash [mailto:nash@apache.org]
>> Gesendet: Samstag, 25. August 2012 09:17
>> An: user@tuscany.apache.org
>> Betreff: Re: Using EMF with Tuscany 1.6
>>
>> It's been over 2 years since I looked into this in detail and put 
>> together the list of gudelines in [1], so I don't recall 100% of the 
>> detail of how this works.  See inline below for my impressions of what 
>> may be happening.
>>
>>  [cut]
>>
>> I'll be interested to hear how you get on with that.
>>
>>    Simon
>>
>>> -- Sebastian
>>>
>>>> [1]
>>>> http://mail-archives.apache.org/mod_mbox/tuscany-user/201006.mbox/%3C
>>>> 4C164DD3.8090405@apache.org%3E
>>>>
>> IDS Scheer Consulting GmbH
>> Geschäftsführer/Managing Directors: Michael Rehm, Ivo Totev
>> Sitz/Registered office: Altenkesseler Straße 17, 66115 Saarbrücken, 
>> Germany - Registergericht/Commercial register: Saarbrücken HRB 19681
>> http://www.ids-scheer-consulting.com
>>
> 
> 


Mime
View raw message