The Tuscany SCA Java runtime can run inside a webapp (a WAR) and expose
services when the webapp is started. In order for this to work
a number of things have to be in place in the webapp:
1. The Tuscany runtime jars have to be packaed in the webapp WEB-INF/lib
directory
2. The Tuscany HTTP filter servlet has to be configured in the
WEB-INF/web.xml file using something like:
tuscany
org.apache.tuscany.sca.host.webapp.TuscanyServletFilter
tuscany
/*
3. The composite application has to packaged in the WAR file. When the
TuscanyServletFilter started it effectvely reads its own WAR file as
the contribution. As an alternative you can package complete
contribution archives in the WEB-INF/sca-contributions directory.
In the getting-started/helloworl-webapp sample we provided a Maven
build script that perform these WAR packaging steps.
To execute a webapp based contributions (sample contributions that have webapp
at the end of their name) you can build the contribution using maven and then
copy the resulting war file to your web container of choice
For example, for learning-more/binding-jsonrpc/contribution-calculator-webapp,
do the following
cd learning-more/binding-jsonrpc/contribution-calculator-webapp
mvn
cp target/sample-contribution-binding-jsonrpc-calculator-webapp.war your_container_deployment-dir
As an alternative sample webapp based contributions can be run within Jetty directly from Maven, look for
webapp contributions that have the following configuration in their pom.xml file:
org.mortbay.jetty
maven-jetty-plugin
6.1.18
For contributions that have this, for example,
learning-more/binding-jsonrpc/contribution-calculator-webapp, do the following
cd learning-more/binding-jsonrpc/contribution-calculator-webapp
mvn jetty:run
This will launch the contribution in the Jetty runtime and then wait. At this point you can use
HTTP clients to send messages to services that the running SCA applcation exposes. For this
example try pointing your browser at:
http://localhost:8080/sample-contribution-binding-jsonrpc-calculator-webapp/