You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Jean-Sebastien Delfino <js...@apache.org> on 2008/05/13 03:25:10 UTC
How to deploy standalone and webapp nodes in an SCA domain, was:
Tomcat and the new distributed domain modules
ant elder wrote:
> On Sun, May 11, 2008 at 7:34 PM, Jean-Sebastien Delfino <
> jsdelfino@apache.org> wrote:
>
>> ant elder wrote:
>>
>>> I've been trying to use the new distributed domain stuff -
>>> domain-manager
>>> and node2* etc - to get Tomcat as a domain manager with SCA webapps
>>> being
>>> individual nodes, but not really making much progress getting it to work
>>> so
>>> asking here to see if there are any suggestions - mainly from you
>>> Sebastien
>>> as you've written most of those new modules :-)
>>>
>> I'm going to send steps to show how to run an SCA node as a web app in a
>> different email.
>>
Here's a scenario and detailed steps showing how to deploy and run the
tutorial's catalog-webapp on Tomcat and integrate it with the other
tutorial modules running on other nodes in the same SCA domain.
Note: I had to fix PackageTypeDescriberImpl as its support for WARs was
broken by a recent patch in SVN r641645 so these steps should work with
the 1.2 release and trunk but won't work with r641645 <= SVN < r655704.
First build a Tuscany distribution or just have Maven place all the
required Tuscany dependency JARs in a directory as follows:
cd tutorial/domain
mvn dependency:copy-dependencies
That will copy the required JARs to tutorial/domain/target/dependency.
Start the domain manager app as follows:
java -jar
<Tuscany distribution root or location of the JARs>
/tuscany-node2-launcher-2.0-incubating-SNAPSHOT.jar domain
Browse http://localhost:9990/ui/workspace/
You should see the tutorial contributions already deployed to the
tutorial SCA domain.
Browse http://localhost:9990/ui/cloud/ to see the SCA nodes declared in
the tutorial.
Check CurrencyNode and CatalogsNode
Press Start, the two nodes should appear as started (clicking the
started link shows their log).
cd tutorial/store-eu
Edit store-eu.composite and change:
<reference name="fruitsCatalog" target="FruitsCatalogWebService">
to
<reference name="fruitsCatalog" target="WebFruitsCatalog">
to make it use the catalog packaged in catalog-webapp.
mvn clean install to rebuild store-eu
Browse http://localhost:9990/ui/cloud/
Check StoreEUNode, press Start to start the store application.
Copy tutorial/catalog-webapp/target/tutorial-catalog-webapp.war to
CatalogWebAppNode.war in some folder.
If you open CatalogWebAppNode.war you'll see that it only contains a
minimum of Tuscany runtime JARs (basically just the API JARs needed to
compile application code like JSPs for example) and a Tuscany launcher
JAR, responsible for launching the SCA node inside the Webapp.
CatalogWebAppNode is the name of the SCA node allocated to the
catalog-webapp composite. Having the Web context named CatalogWebAppNode
tells the launcher that it's dealing with CatalogWebAppNode. It also
makes it easy to find, manage, start/stop these Tomcat nodes using the
Tomcat manager app.
You can also deploy the same composite Webapp to multiple nodes this
way, you just need to name use the proper Web context name when you're
deploying the Webapp to the Web container.
Note that other application servers like WebSphere or Geronimo (IIRC)
allow you to set the Web context name without renaming the WAR. It may
be possible to do the same with Tomcat too using a Tomcat deployment
descriptor, I'm not sure but anyway I think that there's more power in
being portable and Web server independent here, as an SCA domain can
include many servers of different types.
Configure environment variable TUSCANY_HOME=<location of the JARs used
earlier> or <root of Tuscany distribution install>. This will tell the
launcher where to find these JARs, as an alternative to shared libraries
that are not supported by all servers.
Start Tomcat
Deploy CatalogWebAppNode.war to Tomcat, it should start right away.
Browse http://localhost:8080/CatalogWebAppNode/
You should see a catalog of fruits.
Browse http://localhost:8104/ui/store-eu.html
You should see the store catalog, listing some fruits and vegetables.
Assuming that everything worked to this point, you've basically run 4
SCA nodes, 3 running as J2SE standalone nodes and one running as a
webapp on Tomcat.
Here are the details:
- The store widget component runs in your Web browser;
- The widget talks to the store components running on a 1st standalone
SCA node;
- The store components use two catalogs, a vegetables catalog running on
a 2nd standalone SCA node and a fruits catalog running on a 3rd SCA
node, configured as a Webapp on Tomcat;
- Both catalogs use the same currency converter service running on a
fourth standalong SCA node.
In addition to Webapp deployment this scenario also showed the ability
to start nodes in any order - you can try different sequences :) - and
update and rewire a composite already deployed to the domain (store-eu
was updated and rebuilt then changes were picked up without having to
redeploy it).
The same steps work with Geronimo and WebSphere. On WebSphere you just
need to configure a shared library pointing to the Tuscany JARs and
dependencies.
Hope this helps.
P.S. I'll try to send a variation of these steps later that show how you
can run SCA nodes in Webapps without exposing any of the Webapp
specifics to the application developer (basically you just work with
plain contribution JARs). I meant to do that today but was just too busy
to get to it.
--
Jean-Sebastien
Re: How to deploy standalone and webapp nodes in an SCA domain, was: Tomcat and the new distributed domain modules
Posted by ant elder <an...@gmail.com>.
On Tue, May 13, 2008 at 2:25 AM, Jean-Sebastien Delfino <
jsdelfino@apache.org> wrote:
> ant elder wrote:
>
> > On Sun, May 11, 2008 at 7:34 PM, Jean-Sebastien Delfino <
> > jsdelfino@apache.org> wrote:
> >
> > ant elder wrote:
> > >
> > > I've been trying to use the new distributed domain stuff -
> > > > domain-manager
> > > > and node2* etc - to get Tomcat as a domain manager with SCA webapps
> > > > being
> > > > individual nodes, but not really making much progress getting it to
> > > > work
> > > > so
> > > > asking here to see if there are any suggestions - mainly from you
> > > > Sebastien
> > > > as you've written most of those new modules :-)
> > > >
> > > > I'm going to send steps to show how to run an SCA node as a web app
> > > in a
> > > different email.
> > >
> > >
> Here's a scenario and detailed steps showing how to deploy and run the
> tutorial's catalog-webapp on Tomcat and integrate it with the other tutorial
> modules running on other nodes in the same SCA domain.
>
> Note: I had to fix PackageTypeDescriberImpl as its support for WARs was
> broken by a recent patch in SVN r641645 so these steps should work with the
> 1.2 release and trunk but won't work with r641645 <= SVN < r655704.
>
> First build a Tuscany distribution or just have Maven place all the
> required Tuscany dependency JARs in a directory as follows:
> cd tutorial/domain
> mvn dependency:copy-dependencies
> That will copy the required JARs to tutorial/domain/target/dependency.
>
> Start the domain manager app as follows:
> java -jar
> <Tuscany distribution root or location of the JARs>
> /tuscany-node2-launcher-2.0-incubating-SNAPSHOT.jar domain
>
> Browse http://localhost:9990/ui/workspace/
> You should see the tutorial contributions already deployed to the tutorial
> SCA domain.
>
> Browse http://localhost:9990/ui/cloud/ to see the SCA nodes declared in
> the tutorial.
>
> Check CurrencyNode and CatalogsNode
> Press Start, the two nodes should appear as started (clicking the started
> link shows their log).
>
> cd tutorial/store-eu
> Edit store-eu.composite and change:
> <reference name="fruitsCatalog" target="FruitsCatalogWebService">
> to
> <reference name="fruitsCatalog" target="WebFruitsCatalog">
> to make it use the catalog packaged in catalog-webapp.
>
> mvn clean install to rebuild store-eu
>
> Browse http://localhost:9990/ui/cloud/
> Check StoreEUNode, press Start to start the store application.
>
> Copy tutorial/catalog-webapp/target/tutorial-catalog-webapp.war to
> CatalogWebAppNode.war in some folder.
>
> If you open CatalogWebAppNode.war you'll see that it only contains a
> minimum of Tuscany runtime JARs (basically just the API JARs needed to
> compile application code like JSPs for example) and a Tuscany launcher JAR,
> responsible for launching the SCA node inside the Webapp.
>
> CatalogWebAppNode is the name of the SCA node allocated to the
> catalog-webapp composite. Having the Web context named CatalogWebAppNode
> tells the launcher that it's dealing with CatalogWebAppNode. It also makes
> it easy to find, manage, start/stop these Tomcat nodes using the Tomcat
> manager app.
>
> You can also deploy the same composite Webapp to multiple nodes this way,
> you just need to name use the proper Web context name when you're deploying
> the Webapp to the Web container.
>
> Note that other application servers like WebSphere or Geronimo (IIRC)
> allow you to set the Web context name without renaming the WAR. It may be
> possible to do the same with Tomcat too using a Tomcat deployment
> descriptor, I'm not sure but anyway I think that there's more power in being
> portable and Web server independent here, as an SCA domain can include many
> servers of different types.
>
> Configure environment variable TUSCANY_HOME=<location of the JARs used
> earlier> or <root of Tuscany distribution install>. This will tell the
> launcher where to find these JARs, as an alternative to shared libraries
> that are not supported by all servers.
>
> Start Tomcat
> Deploy CatalogWebAppNode.war to Tomcat, it should start right away.
>
> Browse http://localhost:8080/CatalogWebAppNode/
> You should see a catalog of fruits.
>
> Browse http://localhost:8104/ui/store-eu.html
> You should see the store catalog, listing some fruits and vegetables.
>
> Assuming that everything worked to this point, you've basically run 4 SCA
> nodes, 3 running as J2SE standalone nodes and one running as a webapp on
> Tomcat.
>
> Here are the details:
> - The store widget component runs in your Web browser;
> - The widget talks to the store components running on a 1st standalone SCA
> node;
> - The store components use two catalogs, a vegetables catalog running on a
> 2nd standalone SCA node and a fruits catalog running on a 3rd SCA node,
> configured as a Webapp on Tomcat;
> - Both catalogs use the same currency converter service running on a
> fourth standalong SCA node.
>
> In addition to Webapp deployment this scenario also showed the ability to
> start nodes in any order - you can try different sequences :) - and update
> and rewire a composite already deployed to the domain (store-eu was updated
> and rebuilt then changes were picked up without having to redeploy it).
>
> The same steps work with Geronimo and WebSphere. On WebSphere you just
> need to configure a shared library pointing to the Tuscany JARs and
> dependencies.
>
> Hope this helps.
>
> P.S. I'll try to send a variation of these steps later that show how you
> can run SCA nodes in Webapps without exposing any of the Webapp specifics to
> the application developer (basically you just work with plain contribution
> JARs). I meant to do that today but was just too busy to get to it.
> --
> Jean-Sebastien
>
Thanks for this. Though its not the same as the scenario being discussed
over on the Tomcat thread so i hope you can still find the time to answer
over there - http://apache.markmail.org/message/tim32bk7ijwszi2e
...ant