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:n...@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.8090...@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