You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Raymond Feng <en...@gmail.com> on 2007/05/23 18:00:38 UTC

Tuscany/Geronimo deep integration was: Re: Tuscany sample app

Hi, Manu.

Would it be possible that you make your code available in a JIRA? This way, 
we can look into it to better understand your approach.

Thanks,
Raymond

----- Original Message ----- 
From: "Manu George" <ma...@gmail.com>
To: <tu...@ws.apache.org>
Sent: Tuesday, May 22, 2007 10:38 PM
Subject: Re: Tuscany sample app


> Hi Raymond,
>       Thank you for the warm welcome and for the prompt response. I
> am adding my comments inline below.
>
> On 5/23/07, Raymond Feng <en...@gmail.com> wrote:
>> Hi, Manu.
>>
>> Welcome to Tuscany and thank you for looking into Tuscany/Geronimo
>> integration.
>>
>> Please see my comments inline below.
>>
>> Thanks,
>> Raymond
>>
>> ----- Original Message -----
>> From: "Manu George" <ma...@gmail.com>
>> To: <tu...@ws.apache.org>
>> Sent: Tuesday, May 22, 2007 1:00 PM
>> Subject: Re: Tuscany sample app
>>
>>
>> > Hi,
>> >        I am new to this list and product. I just wanted to know if
>> > there is any work going on in implementing deep integration with
>> > apache geronimo app server. If it is going on I am volunteering to
>> > help. If not I would again like to volunteer to take up that task
>> > along with anyone else interested.
>>
>> It would be really great that we start the Tuscany/Geronimo integration 
>> now
>> as we have a stable Tuscany code base (the 0.90 relase are being voted 
>> on).
>> A few of other folks have also expressed their interests in this area. 
>> Let's
>> keep all the discussions on this ML so that all of us can participate.
>>
>> I'm not sure what's the best way to
>>
> Sure thats the best way.
>> >
>> > Currently I have experimented a bit with deep integration and got the
>> > calculator service to deploy on geronimo.What I have achieved is the
>> > ability to deploy Tuscany services on geronimo packaged in a jar with
>> > a geronimo specific deployment descriptor.
>>
>> This is a very good step forward. Did you use the geronimo module plan 
>> for
>> the jar?
>
> What I have done is I wrote 2 gbeans. One GBean takes care of rigging
> up and starting the ReallySmallRuntime that provided with Tuscany. The
> other GBean takes care of instantiating the GeronimoSCADomain class.
> The latter GBean should be run in the same class loader as the SCA
> application so that during the SCADomain creation the .composite files
> can be picked up.
>
> I then wrote a deployer that implements the ConfigurationBuilder
> interface of geronimo and implemented the methods. This deployer is
> also a gbean and after registration it will be called for all jars
> that are deployed that have META-INF/geronimo-tuscany.xml files with a
> particular namespace. What this deployer does is create a
> configuration whose classloader  contains all the classes in the jar,
> rig the second GBean and add it to the configuration so that an
> SCADomain is created.
>
> In case of J2EE modules I created a Deployment Watcher class which
> again adds the second gbean to the configuration of the j2ee module if
> it contains META-INF/geronimo-tuscany.xml
>
> So when the configuration starts the second gbean also starts which
> starts the SCADomain
> and registers it in Global JNDI. When the configuration stops the
> domain is closed and removed from JNDI.
>
> Since the runtime just provides services to the SCADomain  that
> contains it, I just inject the ReallySmallRuntime I created earlier
> into the SCADomain.
>
>> >
>> > What I have done is created a new Domain class GeronimoSCADomain and
>> > the only difference of this from default SCA domain is that it takes a
>> > ReallySmallRuntime as a parameter instead of creating it. So
>> > effectively one Runtime can be shared among all the SCADomains. I am
>> > assuming that there will be a single SCADomain per application and all
>> > SCADomains will share the same Runtime. Due to my lack of tuscany
>> > knowledge I am not sure if this is the way to go about it. Can any one
>> > of the tuscany gurus clarify if this is the correct approach?
>> >
>>
>> The SCA domain is a collection of runtimes that can host SCA composites. 
>> The
>> domain is logically represented as a SCA composite which include all the
>> deployable composites activated by all runtimes in the SCA domain. A SCA
>> domain can span multiple machines over the network. It consists of all 
>> the
>> runtimes that run SCA applications.
>>
>
> Ok, I was unaware that a domain can have multiple runtimes. But like
> the webapp sample which has a single runtime I am thinking that
> Geronimo will also have a single runtime only. ATleast initially that
> may be the way to go forward. Also from what i see of the code, the
> runtimes just provide services which the sca domain uses to set itself
> up. So its my assumption that a runtime that an SCADomain accesses
> doesn't need to be exclusive to it but can be shared among domains.
> Can you advise me if this assumtion is ok?
>
>> > I was unable to understand the need to create multiple runtimes for
>> > each sca domain (other than for the web app based integration). If
>> > there are any other reasons can someone please explain why we need a
>> > runtime per app?
>> >
> ?
>> > Other things that i am experimenting with is the ability to package
>> > the tuscany service along with an ear/war/ejb-jar.
>> >
>>
>> The SCA spec defines a loosely-formed packaging scheme for SCA 
>> composites.
>> Basically, it is the "contribution" concept. A contribution is some kind 
>> of
>> archive such as a folder, a zip, a jar, a rpm, or a EAR. The only
>> requirement is that the artifacts in the contribution can be represented 
>> as
>> URIs in the hierarchy.
>>
> Well I think we may not be able to support RPM etc because of the
> reason that geronimo expects a jar file for deployment. So I would
> first try to get it working for jar/war/ears
>
>> In Tuscany, we have the Contribution service which provides a framework 
>> to
>> plug in Package processors and Artifact processors.
>>
>> You can find more information here:
>> http://cwiki.apache.org/confluence/display/TUSCANY/Java+SCA+Architecture+Guide
>>
>> > I am binding the SCADomains created to global jndi and so applications
>> > can access the domains from there and invoke services on them.
>> >
>>
>> This is one way to manage the SCA domain metadata. Then the EE 
>> applications
>> can look up the SCADomain from JNDI and then gain access to the SCA
>> services.
>>
>> > Thinks that need to be done(not yet thought of how to implement are)
>> > 1) Make geronimo resources (Database pools,JMS resources, EJB
>> > references, Gbean references )available to Tuscany
>> >
>>
>> In SCA, we can use reference and binding to access non-SCA services such 
>> as
>> WS, EJB, JMS. This makes external services consumeable by SCA components.
>>
>> I'm not very sure how to expose other JEE resources such as DataSource, 
>> JMS
>> QCF to SCA components. Maybe a reference with autowire? Maybe a @Resource
>> annotation?
>
> I think there may be a way to inject them into the service classes if
> references are given in the tuscany plan file i.e.
> geronimo-tuscany.xml
>
>>
>> > 2) Make Tuscany services accessible accross app servers
>>
>> There is another important aspect. SCA component services can be promoted
>> over various bindings. This way, the SCA service can be exposed over
>> protocols such as Web Service, EJB, JSONRPC, RMI. Non-SCA client (such as
>> JEE artifacts) can be then access the promoted SCA services over the
>> protocols without knowing SCA. Of course, other SCA components can talk 
>> to
>> these promoted services using the bindings too.
>>
> Yes the bindings can be used so during integration there is no work
> that needs to be done to support this :)
>
>> > 3) Other things i have missed :)
>> >
>> > It would be great if someone could advise me on the tuscany side of
>> > these matters.
>> >
>> > Thus I conclude my first post on the tuscany dev list :)
>> >
>> > Thanks
>> > Manu
>> >
>> >
>> >
>> >
>> >
>> >
>> > On 5/15/07, Luciano Resende <lu...@gmail.com> wrote:
>> >> The suspicious code was identified on the Contribution Service, and
>> >> Tuscany
>> >> M2 does not have this service available, that would explain why there 
>> >> is
>> >> no
>> >> issues with M2.
>> >>
>> >>
>> >> On 5/10/07, Manu George <ma...@gmail.com> wrote:
>> >> > Hi Jay,
>> >> >
>> >> > Cool, I have not yet tried the trunk of tuscany. I will try it out 
>> >> > with
>> >> your fix
>> >> >
>> >> > Regards
>> >> > Manu
>> >> >
>> >> > On 5/10/07, Jay D. McHugh <jay@joyfulnoisewebdesign.com > wrote:
>> >> > > I changed my mind.
>> >> > >
>> >> > > I just went to look at M2 and -way- too much has changed since 
>> >> > > then.
>> >> > >
>> >> > > I don't think it would be worthwhile to try it just to see.
>> >> > >
>> >> > > Cool that it worked though.
>> >> > >
>> >> > >
>> >> > > Jay
>> >> > >
>> >> > > Jay D. McHugh wrote:
>> >> > > > Hey Manu,
>> >> > > >
>> >> > > > The versions that had trouble were trunk of both.
>> >> > > >
>> >> > > > I'm surprised that M2 worked (I'll have to try it just to see).
>> >> > > >
>> >> > > >
>> >> > > >
>> >> > > > Jay
>> >> > > >
>> >> > > > Manu George wrote:
>> >> > > >> Hi Jay,
>> >> > > >>         I was able to deploy the tuscany calculator webapp (M2
>> >> > > >> version) on the current geronimo trunk w/o any issues. Probably 
>> >> > > >> I
>> >> > > >> was
>> >> > > >> lucky in selecting my versions :). Which version of Geronimo 
>> >> > > >> and
>> >> > > >> Tuscany were giving the problem?
>> >> > > >>
>> >> > > >> Regards
>> >> > > >> Manu
>> >> > > >>
>> >> > > >> On 5/10/07, Luciano Resende < luckbr1975@gmail.com> wrote:
>> >> > > >>> Hey Jay, this is very good news, thanks for your help.
>> >> > > >>>
>> >> > > >>> As for the issue you mentioned, this is done while the Tuscany 
>> >> > > >>> is
>> >> > > >>> scaning and opening the necessary artifacts to process... let 
>> >> > > >>> me
>> >> look
>> >> > > >>> at that code in the Tuscany side and check what I can do.
>> >> > > >>>
>> >> > > >>> I'ĺl let you know about any progress...
>> >> > > >>>
>> >> > > >>>
>> >> > > >>> On 5/9/07, Jay D. McHugh <ja...@joyfulnoisewebdesign.com> wrote:
>> >> > > >>> > I didn't say, but in order to get the app to deploy in 
>> >> > > >>> > Geronimo
>> >> > > >>> > I
>> >> > > >>> had to
>> >> > > >>> > comment out the close() in IOHelper.
>> >> > > >>> >
>> >> > > >>> > Jay
>> >> > > >>> >
>> >> > > >>> > Jay D. McHugh wrote:
>> >> > > >>> > > Hello all.
>> >> > > >>> > >
>> >> > > >>> > > Well after wandering through class loaders and deployment
>> >> > > >>> managers, I
>> >> > > >>> > > finally managed to get the Tuscany calculator sample 
>> >> > > >>> > > webapp
>> >> > > >>> > > to
>> >> > > >>> deploy
>> >> > > >>> > > and run under Geronimo.
>> >> > > >>> > >
>> >> > > >>> > > And, the problem that made it so hard wasn't even in 
>> >> > > >>> > > Geronimo
>> >> (at
>> >> > > >>> > > least not directly).
>> >> > > >>> > >
>> >> > > >>> > > Tuscany is using a helper class when scanning jar files
>> >> > > >>> > > during
>> >> > > >>> startup
>> >> > > >>> > > (IOHelper).
>> >> > > >>> > >
>> >> > > >>> > > That class closes the jar file at the same time as it 
>> >> > > >>> > > closes
>> >> > > >>> > > the
>> >> > > >>> input
>> >> > > >>> > > stream based on the jar file (as recommended by Sun -
>> >> > > >>> > >
>> >> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4950148).
>> >> > > >>> > >
>> >> > > >>> > > Tomcat doesn't mind having the jar file get closed - 
>> >> > > >>> > > Geronimo
>> >> does.
>> >> > > >>> > >
>> >> > > >>> > > Does anyone have any comments on this?
>> >> > > >>> > >
>> >> > > >>> > > Does anyone know if Tomcat is built to reopen closed jars?
>> >> > > >>> > >
>> >> > > >>> > > Can Tuscany be changed to stop closing the jar file?
>> >> > > >>> > >
>> >> > > >>> > > Comments?
>> >> > > >>> > >
>> >> > > >>> > >
>> >> > > >>> > > Jay
>> >> > > >>> > >
>> >> > > >>> > >
>> >> > > >>> > > .
>> >> > > >>> > >
>> >> > > >>> >
>> >> > > >>>
>> >> > > >>>
>> >> > > >>> --
>> >> > > >>> Luciano Resende
>> >> > > >>> http://people.apache.org/~lresende
>> >> > > >>>
>> >> > > >
>> >> > > >
>> >> > > >
>> >> > >
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> Luciano Resende
>> >> http://people.apache.org/~lresende
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>>
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org