summaryrefslogtreecommitdiffstats
path: root/branches/site-20070701-mvnbased/site-author/java_sca_overview.xml
blob: e6fca50a2731ccefb287ee2db32b5070fc1d5d2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<?xml version="1.0" encoding="UTF-8"?>
<document>
    <properties>
       <title>Tuscany</title>
       <bannertitle>Welcome to Tuscany</bannertitle>
       <tab>sca</tab>
    </properties>
    <body>
        <section name="Tuscany Service Component Architecture - Java">
 <p> Tuscany SCA Java provides an implementation for the SCA 
specifications made available at <a 
href="http://www.osoa.org/display/Main/Service+Component+Architecture+Home"
target="_blank">Open SOA</a>.
This Java implementation provides an SCA runtime that is
itself built as an assembly of SCA components.  It is modularized into a core and a set of SPIs that provides the flexibility of varying parts or whole of the runtime implementation.<br />
<br />
Tuscany SCA Java provides a number of useful extensions (implementation type containers and transport / protocol extension bindings) that can be used to quickly assemble solutions around components implemented over different technologies. Here is a diagram showing the extensions available with SCA Java.<br /></p>
			<div align="center">
              <img src ="./images/sca_java_overview_2.png" alt="Tuscany Overview" usemap="#tuscany_overview" border="0" />
			 </div>
</section>

<section name="SCA Java Overview">

<p>You will find information here on how to download Tuscany SCA Java, install it, build and run the samples, and develop Tuscany SCA Java applications.</p>

<h3>Downloading the Release Files</h3>
<p>See <a href="sca_downloads.html" title="SCA Downloads">SCA Downloads</a> for links to the downloadable archives for Tuscany SCA Java.
<i>Note: These archives all unpack into the current directory.</i></p>

<h3>Installing the Binary Distribution</h3>
<p>If you would like to run from a pre-built binary distribution, proceed as follows:</p>
<ol>
<li>Download the binary distribution tuscany-sca-1.0-incubator-M2-bin.tar.gz or tuscany-sca-1.0-incubator-M2-bin.zip.</li>
<li>Create an empty directory and unpack the binary distribution into that directory.</li>
<li>In later sections of this document, we will refer to the directory that was created in step 2 (or built from source following the alternative instructions above) as (sca-home).</li>
</ol>

<h3>Building the Source Distribution</h3>
<p>If you prefer to build the Tuscany SCA Java implementation from the source distribution, the procedure is as follows:</p>
<ol>
<li>Download the implementation source distribution tuscany-sca-1.0-incubator-M2-src.tar.gz or tuscany-sca-1.0-incubator-M2-src.zip.</li>
<li>Create an empty directory and unpack the source distribution into that directory.</li>
<li>Follow the instructions in the BUILDING.txt file that was unpacked.</li>
</ol>
<p>As part of the above build process, the SCA and commonj specification files will be downloaded as pre-built binaries from the remote maven repositories into your local maven repository.</p>
<p>Alternatively, you can build these specification binaries from source and install them in your local maven repository, as follows:</p>
<ol>
<li>Download the SCA specification source distribution tuscany-spec-sca-r0.95-incubator-M2-src.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-src.zip.</li>
<li>Create a new empty directory and unpack the source distribution into that directory.</li>
<li>Change directory to the newly created directory and run "mvn install".  The SCA specification binary jar will be installed in your local maven repository.</li>
<li>Download the commonj specification source distribution tuscany-spec-commonj-1.1-incubator-M2-src.tar.gz or tuscany-spec-commonj-1.1-incubator-M2-src.zip.</li>
<li>Create a new empty directory and unpack the source distribution into that directory.</li>
<li>Change directory to the newly created directory and run "mvn install".  The commonj specification binary jar will be installed in your local maven repository.</li>
</ol>

<h3>Checking Out and Building the Source</h3>
<p>If you want to do a development build from the latest Tuscany SCA Java source tree in the subversion repository, you will need to check out and build the code.  You'll need Subversion and Maven installed on your machine.  For details of where to obtain these, see the <a href="java-projects.html" title="Java project page">Java project page</a>.  The following instructions are correct at the time of writing, but may change in the near future because of build restructuring.</p>
<p><i>Note: Maven automatically downloads project dependencies from remote repositories, so a live internet connection is required the first time a build is run.  Because of load on the repository servers, you may experience occasional download failures.  If these should occur, simply rerun the build.</i></p>
<ol>
<li>Before building Tuscany SCA Java, you will previously need to have built Tuscany SDO Java.  The SDO Java build installs the SDO jars in your local Maven repository (located by default in ${user.home}/.m2/repository ) from where they will be picked up when building the Tuscany SCA implementation.  See <a href="java_sdo_overview.html" title="SDO Java">SDO Java</a> for details of how to do this.</li>
<li>Create an empty directory and cd to that directory.</li>
<li>Check out the SCA specifications Java source by running the command
<p style="font-family:monospace">&#160;svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/sca/ spec/sca</p></li>
<li>cd to the spec/sca subdirectory and run "mvn" from this directory.  This will install the SCA specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.</li>  
<li>cd back to the directory you created and check out the commonj specifications Java source by running the command
<p style="font-family:monospace">&#160;svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/spec/commonj/ spec/commonj</p></li>
<li>cd to the spec/commonj subdirectory and run "mvn" from this directory.  This will install the commonj specifications jar in your local Maven repository from where it will be picked up when building the Tuscany SCA implementation.</li> 
<li>cd back to the directory you created and check out the Tuscany SCA Java source by running the command
<p style="font-family:monospace">&#160;svn co http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/ sca</p></li>
<li>cd to the sca subdirectory and run "mvn" from this directory.  This will install the Tuscany SCA Java jars in your local Maven repository.  It also assembles a binary distribution in the "distribution" module under the sca directory.</li>
</ol>

<h3>Building and Running the Samples</h3>
<p>To build and run the samples in the release distribution, proceed as follows.</p>
<ol>
<li>Download the samples distribution tuscany-spec-sca-r0.95-incubator-M2-samples.tar.gz or tuscany-spec-sca-r0.95-incubator-M2-samples.zip.</li>
<li>Create a new empty directory and unpack the samples distribution into that directory.</li>
<li>Change directory to the newly created directory and run "mvn -N install".  This will install the samples parent pom.xml file into your local maven repository.</li>
<li>Follow the instructions in the readme.html files for the various samples.</li>
</ol>
<p>The SCA-related samples in the latest Tuscany Java source tree in the subversion repository have been divided into two categories:</p>
<ul>
<li>Sample applications that use a mix of SCA, SDO and DAS.  See "Running the Samples" on the <a href="java-projects.html#Running the Samples">Java project page</a> for details.</li>
<li>Technology samples that illustrate specific technical features of SCA and show how they can be used by an application developer.  These are in the <a href="http://svn.apache.org/repos/asf/incubator/tuscany/java/samples/sca">java/samples/sca</a> module.</li>
</ul>
   
<h3>Tuscany SCA Java M2 files available from maven</h3>
<p>The following Tuscany SCA Java M2 files have been published to the public maven repository <a href="http://people.apache.org/repo/m2-incubating-repository/" title="http://people.apache.org/repo/m2-incubating-repository/">http://people.apache.org/repo/m2-incubating-repository/</a>
and will be downloaded automatically by maven as needed.</p>
<p>&#160;org/apache/tuscany/sca/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/kernel/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/kernel/tuscany-api/1.0-incubator-M2/tuscany-api-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/kernel/tuscany-host-api/1.0-incubator-M2/tuscany-host-api-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/kernel/tuscany-spi/1.0-incubator-M2/tuscany-spi-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/kernel/core/1.0-incubator-M2/core-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/test/1.0-incubator-M2/test-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/services/idl/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/services/idl/wsdl/1.0-incubator-M2/wsdl-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/containers/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/services/containers/javascript/1.0-incubator-M2/javascript-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/containers/ruby/1.0-incubator-M2/ruby-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/runtime/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/runtime/webapp/1.0-incubator-M2/webapp-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/containers/spring/1.0-incubator-M2/spring-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/databinding/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/services/databinding/databinding-axiom/1.0-incubator-M2/databinding-axiom-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/databinding/databinding-sdo/1.0-incubator-M2/databinding-sdo-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/bindings/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/services/bindings/axis2/1.0-incubator-M2/axis2-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/bindings/rmi/1.0-incubator-M2/rmi-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/services/maven/1.0-incubator-M2/maven-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/runtime/webapp-host/1.0-incubator-M2/webapp-host-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/runtime/standalone/1.0-incubator-M2/standalone-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/runtime/standalone-host/1.0-incubator-M2/standalone-host-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/commands/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/commands/launcher/1.0-incubator-M2/launcher-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/sca-tools/1.0-incubator-M2/sca-tools-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/plugins/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/plugins/tuscany-war-plugin/1.0-incubator-M2/tuscany-war-plugin-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/plugins/tuscany-plugin-wsdl2java/1.0-incubator-M2/tuscany-plugin-wsdl2java-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/plugins/tuscany-plugin-java2wsdl/1.0-incubator-M2/tuscany-plugin-java2wsdl-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2.pom<br />
&#160;org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2-bin.zip<br />
&#160;org/apache/tuscany/sca/distribution/1.0-incubator-M2/distribution-1.0-incubator-M2-bin.tar.gz<br />
&#160;org/apache/tuscany/sca/samples/parent/1.0-incubator-M2/parent-1.0-incubator-M2.pom<br />
&#160;org/osoa/sca-api-r0.95/1.0-incubator-M2/sca-api-r0.95-1.0-incubator-M2.jar<br />
&#160;org/apache/tuscany/commonj-api_r1.1/1.0-incubator-M2/commonj-api_r1.1-1.0-incubator-M2.jar</p>
<p>The Tuscany runtime is able to download dependent jars of Tuscany extensions from the maven repositories as needed.</p>

<h3>Packaging a Standalone Tuscany Application</h3>
<p>To package a Tuscany application for running in the standalone environment (i.e., not within a web application), the application must be packaged as a jar file with the following contents:</p>
<p style="font-family:monospace">&#160;META-INF/MANIFEST.MF<br />
&#160;META-INF/sca/default.scdl<br />
&#160;application executable code and resources</p>
<p>In the following instructions, we will refer to this application jar file as (executable-jar).</p>
<p>The MANIFEST.MF file must contain the following line:</p>
<p style="font-family:monospace">&#160;Main-Class: packagename.classname</p>
<p>This is the name of the main class to be run by the Tuscany standalone launcher.</p>
<p>The default.scdl file defines the SCA components whose implementations are in the jar file.  See the SCA documentation and the Tuscany samples for details of how to write an SCDL file.</p>

<h3>Running a Standalone Tuscany Application</h3>
<p>To run a Tuscany application in the standalone environment, issue the following command:</p>
<p style="font-family:monospace">&#160;java -jar (sca-home)/bin/launcher.jar (executable-jar)</p>
<p>The standalone launcher initializes the Tuscany runtime, deploys any installed extensions (see below), creates components defined by the default.scdl file, and calls the main class of the application jar file (executable-jar).</p>

<h3>Adding Extensions to the Standalone Environment</h3>
<p>To add extensions to the standalone environment, you need to copy the required extension jars into the directory</p>
<p style="font-family:monospace">&#160;(sca-home)/extensions</p>
<p>The launcher for the standalone environment looks for this directory and deploys all the extension jars that it finds there.</p>
<p>Applications may need a combination of extensions, and some extensions may depend on other extensions.  For example, the helloworldwsclient sample needs the following extensions to be present in the extensions directory:</p>
<p style="font-family:monospace">&#160;axis2-1.0-incubator-M2.jar<br />
&#160;databinding-sdo-1.0-incubator-M2.jar</p>
<p>These extensions will load their required dependencies from the maven repository.  The required dependencies are:</p>
<p style="font-family:monospace">&#160;databinding-axiom-1.0-incubator-M2.jar<br />
&#160;wsdl-1.0-incubator-M2.jar</p>

<h3>Building a Tuscany Web Application</h3>
<p>To package a Tuscany application for running in a web application container such as Apache Tomcat, the application must be packaged as a war file with some Tuscany-specific contents.</p>
<p>If you are buildng a Tuscany war file using maven, Tuscany provides a maven plugin</p>
<p style="font-family:monospace">&#160;org/apache/tuscany/sca/plugins/tuscany-war-plugin/1.0-incubator-M2/tuscany-war-plugin-1.0-incubator-M2.jar</p>
<p>that performs this packaging.  It is downloaded automatically from the maven repository when invoked by a pom.xml.  For an example of how to create a pom.xml file that uses this plugin, see the pom.xml file for the webapp/calculatorws sample.  Within this pom.xml file, you will see the line</p>
<p style="font-family:monospace">&#160;&lt;loadExtensionDependencies&gt;false&lt;/loadExtensionDependencies&gt;</p>
<p>This instructs the Tuscany maven war plugin to create a war file that does not include dependent jar files of Tuscany extensions.  Instead, these jar files will be loaded on demand by the Tuscany runtime.  If the value of this element is set to true, then the Tuscany maven war plugin will bundle all required dependent jar files within the war file.</p>
<p>If you are not using maven to build a Tuscany war file, then you will need to ensure that the following files are included in the war file:</p>
<table border="0" width="95%">
  <tr>
    <td width="45%" valign="top">WEB-INF/default.scdl</td>
	<td>see description above</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/web.xml</td>
	<td>see below</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/classes</td>
	<td>application executable code and resources</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/lib</td>
	<td>Tuscany runtime jars from (sca-home)/lib, plus webapp-1.0-incubator-M2.jar (available from maven repository)</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/tuscany/boot</td>
	<td>Tuscany runtime jars from (sca-home)/boot, plus webapp-host-1.0-incubator-M2.jar (available from maven repository)</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/tuscany/extensions</td>
	<td>required Tuscany extensions</td>
  </tr>
  <tr>
    <td width="45%" valign="top">WEB-INF/tuscany/repository/dependency.metadata</td>
	<td>see below</td>
  </tr>
</table>
<p>The &lt;web-app&gt;...&lt;/webapp&gt; section of the WEB-INF/web.xml file must contain the following code:</p>
<p style="font-family:monospace">&#160;&lt;listener&gt;<br />
&#160;&#160;&#160;&#160;&lt;listener-class&gt;org.apache.tuscany.runtime.webapp.TuscanyContextListener&lt;/listener-class&gt;<br />
&#160;&lt;/listener&gt;<br />
&#160;&lt;servlet&gt;<br />
&#160;&#160;&#160;&#160;&lt;servlet-name&gt;TuscanyServlet&lt;/servlet-name&gt;<br />
&#160;&#160;&#160;&#160;&lt;display-name&gt;Tuscany Servlet&lt;/display-name&gt;<br />
&#160;&#160;&#160;&#160;&lt;servlet-class&gt;org.apache.tuscany.runtime.webapp.TuscanyServlet&lt;/servlet-class&gt;<br />
&#160;&lt;/servlet&gt;<br />
&#160;&lt;servlet-mapping&gt;<br />
&#160;&#160;&#160;&#160;&lt;servlet-name&gt;TuscanyServlet&lt;/servlet-name&gt;<br />
&#160;&#160;&#160;&#160;&lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;<br />
&#160;&lt;/servlet-mapping&gt;</p>
<p>For runtime loading of dependent jars (see the description of the &lt;loadExtensionDependencies&gt; element above), the WEB-INF/tuscany/repository/dependency.metadata file must contain the following code:</p>
<p style="font-family:monospace">&#160;&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&#160;&lt;java version="1.5.0_06" class="java.beans.XMLDecoder"&gt;<br /> 
&#160;&#160;&lt;object class="java.util.HashMap"/&gt;<br />
&#160;&lt;/java&gt;</p> 
<p>If these dependent jars are packaged within the web application's WEB-INF/tuscany/repository/ directory, please refer to the output of the Tuscany war plugin (with &lt;loadExtensionDependencies&gt; set to true) to see what code needs to be included within the WEB-INF/tuscany/repository/dependency.metadata file.</p>

<h3>For Further Information</h3>
<p>If you have any questions about installing, building, or running Tuscany SCA Java M2 that are not answered here, please post them to either the tuscany-user@ws.apache.org list (for end-user questions) or the tuscany-dev@ws.apache.org list (for developer questions).</p>
<br />


</section>
</body>
</document>