
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68
230 lines
14 KiB
HTML
230 lines
14 KiB
HTML
|
||
<!--
|
||
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE- 2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
|
||
|
||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<HTML>
|
||
<HEAD>
|
||
<!-- generateKeywords macro -->
|
||
<META name="description" content="Apache Tuscany">
|
||
<META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource">
|
||
<!-- generateKeywords macro end -->
|
||
|
||
<LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
|
||
<LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">
|
||
<TITLE>Apache Tuscany : Tuscany SCA Web Application Integration Story</TITLE>
|
||
<META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
|
||
|
||
<BODY onload="init()">
|
||
<!-- topNav macro -->
|
||
<TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
|
||
<TR>
|
||
<TD valing="top" align="left">
|
||
<A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
|
||
</TD>
|
||
<TD>
|
||
<A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
|
||
</TD>
|
||
|
||
<TD width="100%">
|
||
|
||
</TD>
|
||
|
||
<!-- Adds the edit page link to the top banner-->
|
||
<TD valign="bottom">
|
||
<DIV style="padding: 2px 10px; margin: 0px;">
|
||
<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=53596">
|
||
<IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
|
||
</DIV>
|
||
</TD>
|
||
|
||
</TR>
|
||
</TABLE>
|
||
<!-- topNav macro end -->
|
||
|
||
<!-- breadCrumbs macro -->
|
||
<TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
|
||
<TR class="topBar">
|
||
<TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
|
||
<A href="home.html" title="Apache Tuscany">Apache Tuscany</A> > <A href="home.html" title="Home">Home</A> > <A href="sca-overview.html" title="SCA Overview">SCA Overview</A> > <A href="sca-java.html" title="SCA Java">SCA Java</A> > <A href="sca-java-work-in-progress.html" title="SCA Java Work-In-Progress">SCA Java Work-In-Progress</A> > <A href="" title="Tuscany SCA Web Application Integration Story">Tuscany SCA Web Application Integration Story</A>
|
||
</TD>
|
||
|
||
<TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
|
||
<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
<!-- breadCrumbs macro end -->
|
||
|
||
|
||
<TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
|
||
<TR>
|
||
<TD align="left" valign="top">
|
||
|
||
<!-- pageContent macro -->
|
||
<DIV id="PageContent">
|
||
|
||
<DIV class="pagecontent">
|
||
<DIV class="wiki-content">
|
||
<TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR><TD class="confluenceTd" valign="top" width="15%"><P></P>
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>General</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="home.html" title="Home">Home</A><BR>
|
||
<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License </A><BR>
|
||
<A href="tuscany-downloads-documentations.html" title="Tuscany Downloads & Documentations">Downloads</A><BR>
|
||
<A href="tuscany-downloads-documentations.html" title="Tuscany Downloads & Documentations">Documentation</A><BR>
|
||
<A href="tuscany-books-and-articles.html" title="Tuscany Books and Articles">Books and Articles</A><BR>
|
||
<A href="tuscany-dashboard.html" title="Tuscany Dashboard">Dashboard</A><BR>
|
||
<A href="issue-tracking.html" title="Issue Tracking">Found a Bug?</A><BR>
|
||
<A href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Sponsorship </A><BR>
|
||
<A href="http://www.apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks </A><BR>
|
||
<A href="privacy-policy.html" title="Privacy Policy">Privacy Policy</A></P>
|
||
</DIV></DIV>
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Community</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="getting-involved.html" title="Getting Involved">Get Involved</A><BR>
|
||
<A href="mailing-lists.html" title="Mailing Lists">Mailing Lists</A><BR>
|
||
<A href="committers.html" title="Committers">Committers</A><BR>
|
||
<A href="chinese-portal.html" title="Chinese Portal">Chinese Portal </A> <SPAN class="image-wrap" style=""><IMG src="community.data/chinese.jpg" style="border: 0px solid black"></SPAN><BR>
|
||
<A href="projects-using-tuscany.html" title="Projects Using Tuscany">Powered By</A></P>
|
||
</DIV></DIV>
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany SCA</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sca-overview.html" title="SCA Overview">SCA Overview</A><BR>
|
||
<A href="sca-java.html" title="SCA Java">SCA Java</A><BR>
|
||
<A href="sca-native.html" title="SCA Native">SCA Native</A><BR>
|
||
<A href="php-sca.html" title="PHP SCA">SCA PHP</A></P>
|
||
</DIV></DIV>
|
||
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany SDO</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sdo-overview.html" title="SDO Overview">SDO Overview</A><BR>
|
||
<A href="sdo-java.html" title="SDO Java">SDO Java</A><BR>
|
||
<A href="sdo-cpp.html" title="SDO CPP">SDO C++</A><BR>
|
||
<A href="sdo-php.html" title="SDO PHP">SDO PHP</A></P>
|
||
</DIV></DIV>
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Tuscany DAS</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="das-overview.html" title="DAS Overview">DAS Overview </A><BR>
|
||
<A href="das-java.html" title="DAS Java">DAS Java</A><BR>
|
||
<A href="das-c.html" title="DAS C++">DAS C++ </A></P>
|
||
</DIV></DIV></TD><TD class="confluenceTd" valign="top" width="85%">
|
||
|
||
<H2><A name="TuscanySCAWebApplicationIntegrationStory-WebApplicationIntegrationstorygoals"></A>Web Application Integration story goals</H2>
|
||
|
||
<UL class="alternate" type="square">
|
||
<LI>Simplify the web application as a client application story</LI>
|
||
<LI>Use a simple approach, familiar to all web application developers</LI>
|
||
</UL>
|
||
|
||
|
||
<H2><A name="TuscanySCAWebApplicationIntegrationStory-IntegratingusingServletContextLister"></A>Integrating using ServletContextLister</H2>
|
||
|
||
<P>This approach register a context listener on the application web.xml that will bootstrap the runtime when the web-app is started, and closes the runtime when the web-app is shutdown.</P>
|
||
|
||
<P>Necessary updates in web.xml</P>
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
<listener>
|
||
<listener-class>org.apache.tuscany.sca.webapp.TuscanyContextListener</listener-class>
|
||
</listener>
|
||
</PRE>
|
||
</DIV></DIV>
|
||
|
||
<P>Then, once this integration part is defined, developers only need to get a reference to the SCADomain in their JSP and then get a reference to a service and start consuming it<BR>
|
||
Below, you can find the JSP code snippet to get a SCARuntime reference :</P>
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
SCADomain domain = (SCADomain) application.getAttribute(<SPAN class="code-quote">"org.apache.tuscany.sca.SCADomain"</SPAN>);
|
||
</PRE>
|
||
</DIV></DIV>
|
||
|
||
<P>In order to use this approach, you will need to specify a sca-contribution.xml inside the META-INF directory of your web-app, this file will be used to identify the root of the contribution as well as the list of deployable composites.</P>
|
||
|
||
<P>Here is a sample sca-contribution.xml used in the calculator-web application:</P>
|
||
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
<?xml version=<SPAN class="code-quote">"1.0"</SPAN> encoding=<SPAN class="code-quote">"UTF-8"</SPAN>?>
|
||
<contribution xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN>>
|
||
</SPAN> <deployable composite=<SPAN class="code-quote">"Calculator"</SPAN>/>
|
||
</contribution>
|
||
</PRE>
|
||
</DIV></DIV>
|
||
|
||
|
||
<P>Tuscany also supports the scenario where you would drop the SCA composite files inside the META-INF\sca-deployables directory, and this would also be used to identify the root of the contribution and the list of deployable composites.</P>
|
||
|
||
<P><B>pros</B>: Consistent programming model between JSP and Servlets<BR>
|
||
<B>cons</B>: require web.xml integration and sca-contribution.xml, although the trend is to make web apps simpler and web.xml is optional in newer specs of J2EE</P>
|
||
|
||
<H2><A name="TuscanySCAWebApplicationIntegrationStory-IntegratingusingpureJSPcode"></A>Integrating using pure JSP code</H2>
|
||
|
||
<P>Integration using useBean tag: This approach would be very simple, and would basically ask the developer to add a useBean to instantiate the domain, and a setProperty to set the deployableComposite/</P>
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
<jsp:useBean id=<SPAN class="code-quote">"SCADomain"</SPAN> class=<SPAN class="code-quote">"org.apache.tuscany.host.embedded.SCADomainBean"</SPAN> scope=<SPAN class="code-quote">"application"</SPAN>>
|
||
<jsp:setProperty property=<SPAN class="code-quote">"deployableComposite"</SPAN> value=<SPAN class="code-quote">"Calculator.composite"</SPAN> />
|
||
</jsp:useBean>
|
||
...
|
||
<%
|
||
SCADomain domain = (SCADomain) application.getAttribute(<SPAN class="code-quote">"SCADomain"</SPAN>);
|
||
CalculatorService calculatorService = domain.getService(CalculatorService.class, <SPAN class="code-quote">"CalculatorServiceComponent"</SPAN>);
|
||
%>
|
||
</PRE>
|
||
</DIV></DIV>
|
||
<P>Optional attributes can be defined by using the <jsp:setProperty> calls, if no attributes are specified, the sca-contribution.xml will be used to hint the root of the contribution as well as to find the deployable composites.</P>
|
||
|
||
<P>In this scenario, the SCADomain is stopped when the application goes out of scope and the garbage collection process the termination of the SCADomain.</P>
|
||
|
||
<P><B>pros</B>: simple, does not involve changes on web.xml<BR>
|
||
<B>cons</B>: leaves toping the sca domain/runtime to when garbage collection process the application scope bean, also introduce different programming model between JSP and Servlets.</P>
|
||
|
||
|
||
|
||
<H2><A name="TuscanySCAWebApplicationIntegrationStory-References"></A>References</H2>
|
||
|
||
<P><A href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/" class="external-link" rel="nofollow">http://java.sun.com/j2ee/1.4/docs/tutorial/doc/</A><BR>
|
||
<A href="http://java.sun.com/products/jsp/docs.html#syntax" class="external-link" rel="nofollow">http://java.sun.com/products/jsp/docs.html#syntax</A><BR>
|
||
<A href="http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html" class="external-link" rel="nofollow">http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html</A><BR>
|
||
<A href="http://java.sun.com/products/javabeans/docs/spec.html" class="external-link" rel="nofollow">http://java.sun.com/products/javabeans/docs/spec.html</A></P>
|
||
</TD></TR></TBODY></TABLE>
|
||
</DIV>
|
||
</DIV>
|
||
</DIV>
|
||
<!-- pageContent macro end -->
|
||
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<!-- footer macro -->
|
||
<SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||
</SCRIPT>
|
||
<SCRIPT type="text/javascript">
|
||
_uacct = "UA-1174707-5";
|
||
urchinTracker();
|
||
</SCRIPT>
|
||
|
||
<A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>
|
||
|
||
<DIV class="footer">
|
||
Copyright <20> 2003-2012, The Apache Software Foundation </BR>
|
||
Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
|
||
</DIV>
|
||
<!-- footer macro end -->
|
||
|
||
</BODY>
|
||
</HTML>
|