Luciano,
First try with url = "file://.../provider.jar" doesn't work because :
In ContributionServiceImpl.java, initializeContributionMetadata (line 134) :
URL[] clUrls = {sourceURL};
URLClassLoader cl = new URLClassLoader(clUrls);
contributionMetadataURL =
cl.getResource(Contribution.SCA_CONTRIBUTION_META);
sourceURL = "file://.../provider.jar"
contributionMetadataURL =
"file://.../consumer/target/classes/META-INF/sca-contribution.xml"
because of the parent class loader in cl.
If I put a null parent class loader in the creation of cl :
URL[] clUrls = {sourceURL};
URLClassLoader cl = new URLClassLoader(clUrls, null);
contributionMetadataURL =
cl.getResource(Contribution.SCA_CONTRIBUTION_META);
it finds the good sca-contribution :
contributionMetadataURL =
"jar:file://.../provider.jar!/META-INF/sca-contribution.xml"
and it loads the ProviderComposite and the ProviderComponent in it.
But in my test :
// Determine my class loader and my test SCA contribution location
String url =
"file:///h:/it/logiciel_gi/sca/provider/target/provider.jar";
ContributionService contributionService =
domain.getContributionService();
DomainCompositeHelper helper = domain.getDomainCompositeHelper();
ModelResolver myResolver = new
ModelResolverImpl(getClass().getClassLoader());
// Contribute the SCA contribution
List<Contribution> contributions = new ArrayList<Contribution>(2);
Contribution contribution = contributionService
.contribute("http://www.greisch.com/provider", new URL(url),
myResolver, false);
assertNotNull(contribution);
contributions.add(contribution);
url = "file:///h:/it/logiciel_gi/sca/consumer/target/classes/";
contribution = contributionService
.contribute("http://www.greisch.com/consumer", new URL(url),
myResolver, false);
assertNotNull(contribution);
contributions.add(contribution);
for (Contribution contrib : contributions) {
for (Composite composite : contrib.getDeployables()) {
helper.addComposite(composite);
}
for (Composite composite : contrib.getDeployables()) {
helper.startComposite(composite);
}
}
Consumer consumer = domain.getService(Consumer.class,
"ConsumerComponent");
consumer.consume("Test");
I get a NullPointerException when running consumer.consume("Test"). It
doesn't link consumer with my ProviderComponent as required in
Consumer.composite.
I keep going on with all this.
Thanks for your help.
> -----Message d'origine-----
> De : Luciano Resende [mailto:[EMAIL PROTECTED]
> Envoyé : mardi 5 juin 2007 19:49
> À : [email protected]
> Objet : Re: Simple use case problem
>
>
> Patrick
>
> The contribution service package processor takes care of
> identifying what is the package type and creating the proper jar url
> for jar archives. Have you tried to pass a regular file url to the jar
> ? Something like :
>
> String url = "file://.../provider.jar"
>
> The contribution service iTest [1] gives an example of contributing
> a jar directly to the contribution service, just look for
> testContributeJAR.
>
> Please let me know if it works for you after you pass the
> simple file url.
>
>
> [1]
> https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/itest/
> contribution/src/test/java/org/apache/tuscany/sca/test/contributio
> n/ContributionServiceTestCase.java
>
>
>
> On 6/5/07, Mike Edwards <[EMAIL PROTECTED]> wrote:
> > Patrick,
> >
> > One point to make here is that separate contributions are intended to
> > have different addresses, which in a simple file system equates to
> > different directories. If you want multiple composites in the same
> > directory, then you should make them part of one contribution, which is
> > allowed.
> >
> >
> > Yours, Mike.
> >
> > Patrick Vanhuyse wrote:
> > > Hi Simon,
> > >
> > > I removed sca-contibutions.xml from provider. I copied
> Provider.composite to
> > > consumer/src/main/resource. I add ProviderComposite to the consumer
> > > sca-contribution.xml. And it works.
> > >
> > > I have had a look at the code in SCADomain.newInstance(). It
> loads only one
> > > sca-contribution.xml, the first found by the class loader, I
> think. To solve
> > > this, it should look at all the sca-contribution.xml
> (conflict : they are
> > > all in the same folder) from the various jars on the
> classpath in place of
> > > using only one (depends on the ClassLoader). I don't know if
> it's possible
> > > (the class loading mechanism is a mystery to me !).
> Furthermore, there is
> > > the SCA loading mechanism used which is yet a greater mystery.
> > >
> > > I will go on with my other tests. Afterwards, if I dare, I
> will throw myself
> > > into all this loading stuff.
> > >
> > > Thanks for your help.
> > >
> > > Patrick
> > >
> > > -----Message d'origine-----
> > > De : Simon Laws [mailto:[EMAIL PROTECTED]
> > > Envoyé : mercredi 30 mai 2007 18:11
> > > À : [email protected]
> > > Objet : Re: Simple use case problem
> > >
> > >
> > > Hi Patrick
> > >
> > > What is going on here is that the consumer module is not loading the
> > > provider composite. I can make this work by doing the following...
> > >
> > > 1 - Make the provider composite available to the consumer runtime
> > > copy the Provider.composite to consumer/src/main/resource
> > > 2 - Make the ProviderComposite deployable
> > > add the ProviderComposite to the consumer
> > > sca-contributions.xmlfile
> > >
> > > Now I kind of expected to have to do 2 so that the runtime
> knows that the
> > > composite exists and should be deployed.
> > >
> > > However I don't know how to get round 1. I would like to be
> able to specify
> > > a jar to load alongside the consumer composite that is
> loaded. However I
> > > took a look at the code and there seems to be more work to do
> in making the
> > > runtime and contribution service flexible in this way. All help is
> > > gratefully received if you feel like getting your hands dirty ;-)
> > >
> > > Regards
> > >
> > > Simon
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Luciano Resende
> Apache Tuscany Committer
> http://people.apache.org/~lresende
> http://lresende.blogspot.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]