You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by aj...@apache.org on 2006/10/06 16:23:33 UTC
svn commit: r453609 - in /incubator/tuscany/cpp: sca/ sca/doc/ sca/doc/css/
sca/samples/BigBank/ sca/samples/Calculator/ sca/samples/PythonCalculator/
sca/samples/RubyBank/ sca/samples/RubyCalculator/ sdo/doc/ sdo/doc/css/
Author: ajborley
Date: Fri Oct 6 07:23:32 2006
New Revision: 453609
URL: http://svn.apache.org/viewvc?view=rev&rev=453609
Log:
Various document updates including changes in the sample deploy structures and updating and HTML-ifying the user docs
Added:
incubator/tuscany/cpp/sca/doc/Axis2CWSService.html (with props)
incubator/tuscany/cpp/sca/doc/CPPComponents.html (with props)
Removed:
incubator/tuscany/cpp/sca/doc/CreatingSCACPPComponents.txt
incubator/tuscany/cpp/sca/doc/WSEntrypoint.txt
Modified:
incubator/tuscany/cpp/sca/GettingStarted.html
incubator/tuscany/cpp/sca/doc/PythonExtension.html
incubator/tuscany/cpp/sca/doc/RubyExtension.html
incubator/tuscany/cpp/sca/doc/css/maven-theme.css
incubator/tuscany/cpp/sca/samples/BigBank/README
incubator/tuscany/cpp/sca/samples/BigBank/README.html
incubator/tuscany/cpp/sca/samples/Calculator/README
incubator/tuscany/cpp/sca/samples/Calculator/README.html
incubator/tuscany/cpp/sca/samples/PythonCalculator/README.html
incubator/tuscany/cpp/sca/samples/RubyBank/README
incubator/tuscany/cpp/sca/samples/RubyBank/README.html
incubator/tuscany/cpp/sca/samples/RubyCalculator/README
incubator/tuscany/cpp/sca/samples/RubyCalculator/README.html
incubator/tuscany/cpp/sdo/doc/BuildingSTDCXX.html
incubator/tuscany/cpp/sdo/doc/css/maven-theme.css
Modified: incubator/tuscany/cpp/sca/GettingStarted.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/GettingStarted.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/GettingStarted.html (original)
+++ incubator/tuscany/cpp/sca/GettingStarted.html Fri Oct 6 07:23:32 2006
@@ -194,7 +194,11 @@
<TD STYLE="vertical-align: top; white-space: nowrap;">C++
</TD>
<TD>Provides the SCA C++ client API and enables C++ component implementations
- and interfaces. This extension is built by default from a source release.
+ and interfaces. This extension is built by default from a source release. See
+ the <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ C++ Client and Implementation specification</A> for more details about the SCA C++
+ Programming Model and the <A HREF="doc/CPPComponents.html">Creating C++ SCA Components</A>
+ document for a step-by-step example.
</TD>
</TR>
<TR CLASS="a">
@@ -202,7 +206,11 @@
</TD>
<TD>Provides the Web Service bindings enabling Tuscany to call SCA references via
Web Services or expose SCA services as Web Services. This extension is built by
- default from a source release.
+ default from a source release. See the
+ <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ Web Service bindings specification</A> for more details about SCA Web Service support
+ and the <A HREF="doc/Axis2CWSService.html">Enabling Web Service
+ access to SCA Components</A> document for a step-by-step example.
</TD>
</TR>
<TR CLASS="b">
@@ -263,15 +271,15 @@
<TABLE CLASS="bodyTable">
<TBODY>
<TR CLASS="a">
- <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/CreatingSCACPPComponents.txt">Creating and building a Tuscany SCA C++ component</A>
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/CPPComponents.html">Creating and building a Tuscany SCA C++ component</A>
</TD>
<TD>A document that describes how to create, build and run a Tuscany SCA C++ component.
</TD>
</TR>
<TR CLASS="a">
- <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/WSEntrypoint.txt">Enabling Web Service access to your Tuscany SCA C++ component</A>
+ <TD STYLE="vertical-align: top; white-space: nowrap;"><A HREF="doc/Axis2CWSService.html">Enabling Web Service access to your Tuscany SCA component</A>
</TD>
- <TD>A document that describes how to expose a Tuscany SCA C++ component as a Web Service via an SCA Web Service Entrypoint.
+ <TD>A document that describes how to expose a Tuscany SCA C++ component as a Web Service via the Tuscany Axis2C Web Service support.
</TD>
</TR>
</TBODY>
Added: incubator/tuscany/cpp/sca/doc/Axis2CWSService.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/doc/Axis2CWSService.html?view=auto&rev=453609
==============================================================================
--- incubator/tuscany/cpp/sca/doc/Axis2CWSService.html (added)
+++ incubator/tuscany/cpp/sca/doc/Axis2CWSService.html Fri Oct 6 07:23:32 2006
@@ -0,0 +1,364 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed 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.
+ -->
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Creating C++ SCA Components</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Creating C++ SCA Components</H2>
+
+ <P>This document describes the deployment and use of the Axis2C Web Service
+ (binding.ws) service support in the Apache Tuscany SCA C++ runtime.
+ </P>
+ <P>The WS service code is based on <A HREF="http://ws.apache.org/axis2/c">Apache
+ Axis2C version 0.94</A> and allows SCA components to be invoked via Web
+ Service calls.
+ </P>
+ <P>WS service currently supports Document/literal Wrapped style Web Services
+ only. There are also restrictions about the parameter and return types of the
+ operations in SCA components that can be exposed as Web Services, see below
+ for more details.
+ </P>
+ <P>See the <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ Web Service binding specification</A> for more details about SCA Web
+ Service support.
+ </P>
+ <P>Also, see the <A HREF="../samples/GettingStarted.html">samples</A> for various
+ demonstrations of the use of the binding.ws service support.
+ </P>
+ </DIV>
+
+ <DIV CLASS="section">
+ <H2>Contents</H2>
+ <OL>
+ <LI><A HREF="#deploy">Deploying the Tuscany Web Service support to Axis2C..</A>
+ <UL>
+ <LI><A HREF="#autodeploy">..automatically via scripts</A></LI>
+ <LI><A HREF="#mandeploy">..manually</A></LI>
+ </UL></LI>
+ <LI><A HREF="#use">Defining an SCA Composite with a WS service</A></LI>
+ <LI><A HREF="#maptable">XML Schema Type to C++ Type Mapping</A></LI>
+ <LI><A HREF="#creatingwsdl">Notes on creating WSDL</A></LI>
+ </OL>
+ </DIV>
+
+
+ <DIV CLASS="section">
+ <A NAME="deploy"><H2>Deploying the Tuscany Web Service support to Axis2C</H2></A>
+ <A NAME="autodeploy"><H3>Deploying via scripts</H3></A>
+ <P>Tuscany provides simple shell scripts to deploy the Web Service support to Axis2C.
+ However, the script <STRONG>will overwrite your Axis2C axis.xml file</STRONG>, so if you
+ have altered your axis2.xml from the default provided by the Axis2C distribution, it is
+ recommended that you follow the <A HREF="#mandeploy">manual deployment</A> steps
+ outlined below.
+ </P>
+ <P>To automatically deploy Tuscany Web Service support to Axis2C on Linux:
+ <OL>
+ <LI>The AXIS2C_HOME environment variable is required:
+ <UL>
+ <LI>set AXIS2C_HOME=<path to axis2c version 0.94></LI>
+ </UL></LI>
+ <LI>Use the following command sequence to run the deploy script:
+ <UL>
+ <LI>cd <tuscany_sca_install_dir>/extensions/ws/service</LI>
+ <LI>./deploy.sh</LI>
+ </UL>
+ </LI>
+ </OL>
+ </P>
+ <P>To automatically deploy Tuscany Web Service support to Axis2C on Windows:
+ <OL>
+ <LI>The AXIS2C_HOME environment variable is required:
+ <UL>
+ <LI>export AXIS2C_HOME=<path to axis2c version 0.94></LI>
+ </UL></LI>
+ <LI>Use the following command sequence to run the deploy script:
+ <UL>
+ <LI>cd <tuscany_sca_install_dir>/extensions/ws/service</LI>
+ <LI>./deploy.cmd</LI>
+ </UL>
+ </LI>
+ </OL>
+ </P>
+
+
+ <A NAME="mandeploy"><H3>Deploying manually</H3></A>
+ <P>To deploy Tuscany Web Service support to Axis2C manually, use the following steps:
+ </P>
+ <OL>
+ <LI>Create a <axis2c version 0.94>/services/tuscany directory
+ </LI>
+ <LI>Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/services/tuscany/
+ to the directory created above
+ </LI>
+ <LI>Create a <axis2c version 0.94>/modules/tuscany directory
+ </LI>
+ <LI>Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/modules/tuscany/
+ to the directory created above
+ </LI>
+ <LI>Edit the <axis2c version 0.94>/axis2.xml file to add a <ref module="tuscany">
+ element. This will register the above module. E.g.:
+ <PRE>...
+ <!-- ================================================= -->
+ <!-- Global Modules -->
+ <!-- ================================================= -->
+ <!-- Comment this to disable Addressing -->
+ <module ref="addressing"/>
+
+ <module ref="tuscany"/>
+
+... </PRE>
+ </LI>
+ </OL>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="use"><H2>Defining an SCA Composite with a WS service</H2></A>
+
+ <P>In this section we will use the Calculator sample as a worked example.
+ The Calculator code and files can be found at
+ <tuscany_sca_install_dir>samples/Calculator.
+ </P>
+ <P>Pre-requisites:
+ <UL>
+ <LI>A working component within a composite and solution composite,
+ with SCAGEN generated Proxy and Wrapper classes and a .dll or
+ .so library compiled from these and the component class files.
+ The *.composite and *.componentType files must also be available
+ and working
+ </LI>
+ </UL>
+ </P>
+ <OL>
+ <LI>Create the WSDL that defines the interface of your SCA component. See the
+ table <A HREF="#maptable">XML Schema Type to C++ Type Mapping</A> and
+ <A HREF="#creatingwsdl">Notes on creating WSDL</A> below
+ for mapping the parameters and return types of the component operations to XML
+ schema types in the WSDL. This file needs to be accessible from the component,
+ so place it in the same directory as the component or in a subdirectory.
+ <BR/>
+ See the <tuscany_sca_install_dir>/samples/Calculator/sample.calculator/Calculator.wsdl
+ file as an example.
+ </LI>
+ <LI>Add a service definition to the component .composite file, setting the
+ interface.wsdl interface attribute to the namespace, port name specified in the
+ WSDL, in the form: "<namespace>#wsdl.interface(<port-name>)".
+ Link a reference from this service definition to your
+ component, give the service a name and set the multiplicity if required.
+ <BR/>
+ E.g. for the Calculator component, based on the Calculator.wsdl file:
+ <PRE><service name="CalculatorService">
+ <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
+ <binding.ws/>
+ <reference>CalculatorComponent/CalculatorService</reference>
+</service></PRE>
+ </LI>
+ <LI>You are now ready to start the Axis2C HTTP server. Remember you will need to have the
+ TUSCANY_SCACPP, TUSCANY_SDOCPP and AXIS2C_HOME environment variables set,
+ as well as the SCA and SDO bin directories and the Axis2C lib directory on
+ your PATH on Windows or the SCA, SDO and Axis2C lib directories on
+ your LD_LIBRARY_PATH on Linux. You will also need to set the TUSCANY_SCACPP_SYSTEM_ROOT
+ and TUSCANY_SCACPP_DEFAULT_COMPONENT environment variables to the
+ path to your SCA component directory structure and the default component respectively.
+ E.g. on Windows run the following commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP=C:/tuscany_sca </LI>
+ <LI>set TUSCANY_SDOCPP=C:/tuscany_sdo </LI>
+ <LI>set AXIS2C_HOME=C:/axis2c-bin-0.94-win32 </LI>
+ <LI>set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib</LI>
+ <LI>set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy </LI>
+ <LI>set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent </LI>
+ <LI>cd %AXIS2C_HOME%/bin/ </LI>
+ <LI>./axis2_http_server.exe </LI>
+ </UL>
+ </LI>
+ <LI>Optionally, enable Tuscany logging by setting the TUSCANY_SCACPP_LOGGING
+ environment variable with the level you wish to log at (0 for minimal
+ logging, up to 9 for more detailed logging) and the TUSCANY_SCACPP_LOG
+ environment variable to define the file to log to (if this is not set,
+ logging will go to the console). E.g. on Windows run the following
+ commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP_LOGGING=5 </LI>
+ <LI>set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt</LI>
+ </UL>
+ </LI>
+ </OL>
+ <P>Your component should now be exposed as an Axis2C Web Service, via the WS
+ service you created. See the Axis2C documentation for writing clients to
+ invoke the Web Service, or you can use any other Web Service client platform
+ (e.g. <A HREF="http://ws.apache.org/axis2">Axis2 for Java</A>), or you can invoke your
+ component from another Tuscany runtime by using Tuscany's WS reference
+ support.
+ </P>
+
+ </DIV>
+
+ <DIV CLASS="section">
+ <A name="maptable"><H2>XML Schema Type to C++ Type Mapping</H2></A>
+ <P>To help define the WSDL that describes the interface of your component, the
+ table below lists how incoming XML data in Web Service messages is mapped to
+ C++ types used in the parameters and return types of your component operations.
+ </P>
+ <P>This lists the only C++ types that can currently be used on the operations of a
+ component exposed as a Web Service. For other types, use an SDO DataObject to
+ wrap the data, and define that wrapping as a complexType in the WSDL. See the
+ <A HREF="http://www.osoa.org/display/Main/SDO+-+Previously+Published+Specifications">SDO
+ specifications</A> for the C++ types that SDO supports.
+ </P>
+ <TABLE CLASS="bodyTable">
+ <TBODY>
+ <TR CLASS="a">
+ <TD><STRONG>XML Schema Type</STRONG></TD>
+ <TD><STRONG>C++ Type</STRONG></TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>string</TD>
+ <TD>std::string</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>int</TD>
+ <TD>long</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>integer</TD>
+ <TD>long</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>short</TD>
+ <TD>short</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>float</TD>
+ <TD>float</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>double</TD>
+ <TD>long double</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>boolean</TD>
+ <TD>bool</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>hexBinary</TD>
+ <TD>char*</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>base64Binary</TD>
+ <TD>char*</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>byte</TD>
+ <TD>char</TD>
+ </TR>
+ <TR CLASS="b">
+ <TD>complexType</TD>
+ <TD>commonj::sdo::DataObjectPtr</TD>
+ </TR>
+ <TR CLASS="a">
+ <TD>any</TD>
+ <TD>commonj::sdo::DataObjectPtr with OpenDataObjectType</TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A name="creatingwsdl"><H2>Notes on creating WSDL</H2></A>
+ <P>Currently only Document/literal Wrapped style Web Services are supported by
+ WS EntryPoint, support for RPC style Web Services is planned for future
+ releases.
+ </P>
+ <P>See <A HREF="http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/">this article</A>
+ for an explanation of Document/literal Wrapped style WSDL and Web Services
+ </P>
+ <P>Operation parameter and return messages that are defined in the WSDL must be
+ XML Schema elements containing a complexType - there is currently no
+ support for simpleTypes or single-level elements. Also, Document/literal
+ Wrapped services require that the operation name is used as the name of the
+ incoming element that wraps the operation parameters.
+ </P>
+ <P>For example, a component operation defined in C++ as:
+ <PRE>long myOperation(std::string arg1, short arg2, DataObjectPtr arg3);</PRE>
+ will need to be described in WSDL with messages like:
+ <PRE><wsdl:message name="myOperationRequestMsg">
+ <wsdl:part element="tns:myOperation" name="myOperationRequestPart"/>
+</wsdl:message>
+<wsdl:message name="myOperationResponseMsg">
+ <wsdl:part element="tns:myOperationResponse" name="myOperationResponsePart"/>
+</wsdl:message></PRE>
+ and will need an XML schema to define the types like:
+ <PRE><xsd:element name="myOperation">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="arg1" type="xsd:string" minOccurs="1"/>
+ <xsd:element name="arg2" type="xsd:short" minOccurs="1"/>
+ <xsd:element name="arg3" minOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="dataObjectFloatData" type="xsd:float"/>
+ <xsd:element name="dataObjectStringData" type="xsd:string"/>
+ <xsd:element name="dataObjectIntData" type="xsd:int"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:element>
+
+<xsd:element name="myOperationResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="result" type="xsd:int" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:element></PRE>
+ </DIV>
+
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at <A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
Propchange: incubator/tuscany/cpp/sca/doc/Axis2CWSService.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/cpp/sca/doc/Axis2CWSService.html
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/cpp/sca/doc/CPPComponents.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/doc/CPPComponents.html?view=auto&rev=453609
==============================================================================
--- incubator/tuscany/cpp/sca/doc/CPPComponents.html (added)
+++ incubator/tuscany/cpp/sca/doc/CPPComponents.html Fri Oct 6 07:23:32 2006
@@ -0,0 +1,321 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+ Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed 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.
+ -->
+<HTML>
+<HEAD>
+ <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type">
+ <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type">
+ <STYLE MEDIA="all" TYPE="text/css">
+@import url("css/maven-base.css");
+@import url("css/maven-theme.css");
+ </STYLE>
+
+ <LINK HREF="css/maven-theme.css" MEDIA="print" REL="stylesheet"
+ TYPE="text/css">
+ <TITLE>Tuscany SCA for C++ - Creating C++ SCA Components</TITLE>
+</HEAD>
+
+<BODY>
+<DIV ID="bodyColumn">
+ <DIV ID="contentBox">
+ <DIV CLASS="section">
+ <H2>Tuscany SCA for C++ - Creating C++ SCA Components</H2>
+
+ <P>This document describes how to create and run SCA components in Tuscany SCA C++
+ milestone release 2.
+ </P>
+ <P>See the <A HREF="http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications">SCA
+ C++ Client and Implementation specification</A> for more details about the SCA C++
+ programming model.
+ </P>
+ <P>See <A HREF="../samples/Calculator/README.html">Calculator</A> or
+ <A HREF="../samples/BigBank/README.html">BigBank</A> for samples that
+ demonstrate the use of C++ components
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <H2>Creating and deploying an SCA C++ Component</H2>
+
+ <P>Each SCA C++ component needs:
+ </P>
+ <UL>
+ <LI>A service header file that defines the operations that can be invoked on the
+ component
+ </LI>
+ <LI>An implementation header file that defines the implementation and extends
+ the service header file
+ </LI>
+ <LI>A C++ implementation of the service that implements the operations defined
+ in the service header file
+ </LI>
+ <LI>Proxy and wrapper header and implementation files generated by the Tuscany
+ C++ SCAGEN tool
+ </LI>
+ <LI>A component definition in a composite file
+ </LI>
+ <LI>A service definition in a .componentType file
+ </LI>
+ <LI>A composite describing the configuration of the composite definition above
+ </LI>
+ </UL>
+ <P>In this section we will use the Calculator sample as a worked example.
+ The Calculator code and files can be found at samples/Calculator and has been
+ developed further than the details specified below. In the interests of
+ readability, the example used below takes the simplest path.
+ </P>
+ <OL>
+ <LI>Create the service header file that defines the operations your component
+ will implement. E.g. Calculator.h contains the following:<BR/>
+ <PRE>#ifndef CALCULATOR_H
+#define CALCULATOR_H
+class Calculator
+{
+public:
+ virtual float add(float arg1, float arg2) = 0;
+ virtual float sub(float arg1, float arg2) = 0;
+ virtual float mul(float arg1, float arg2) = 0;
+ virtual float div(float arg1, float arg2) = 0;
+};
+
+#endif</PRE>
+ </LI>
+ <LI>Create the implementation header file that extends the service header file.
+ E.g. CalculatorImpl.h contains the following:<BR/>
+ <PRE>#ifndef CALCULATORIMPL_H
+#define CALCULATORIMPL_H
+
+#include "Calculator.h"
+
+class CalculatorImpl : public Calculator
+{
+public:
+ CalculatorImpl();
+ virtual ~CalculatorImpl();
+
+ // Calculator interface
+ virtual float add(float arg1, float arg2);
+ virtual float sub(float arg1, float arg2);
+ virtual float mul(float arg1, float arg2);
+ virtual float div(float arg1, float arg2);
+};
+
+#endif</PRE>
+ </LI>
+ <LI>Create the implementation for the component based on the implementation
+ header file. E.g. CalculatorImpl.cpp contains the following code:<BR/>
+ <PRE>#include "CalculatorImpl.h"
+#include <stdio.h>
+
+CalculatorImpl::CalculatorImpl()
+{
+}
+
+CalculatorImpl::~CalculatorImpl()
+{
+}
+
+// Calculator interface
+float CalculatorImpl::add(float arg1, float arg2)
+{
+ float result = arg1 + arg2;
+
+ printf("CalculatorImpl::add %f + %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::sub(float arg1, float arg2)
+{
+ float result = arg1 - arg2;
+ printf("CalculatorImpl::sub %f - %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::div(float arg1, float arg2)
+{
+ float result = arg1 / arg2;
+ printf("CalculatorImpl::div %f / %f = %f\n", arg1, arg2, result);
+ return result;
+}
+
+float CalculatorImpl::mul(float arg1, float arg2)
+{
+ float result = arg1 * arg2;
+ printf("CalculatorImpl::mul %f * %f = %f\n", arg1, arg2, result);
+ return result;
+}</PRE>
+ </LI>
+ <LI>Create the componentType file for your component to define the service that
+ your component provides. The file must be named after your implementation
+ class and specifies the name of the service and the service header file
+ (which describes the service operations). E.g. CalculatorImpl.componentType
+ contains the following XML:<BR/>
+ <PRE><componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+
+ <service name="CalculatorService">
+ <interface.cpp header="Calculator.h"/>
+ </service>
+
+</componentType></PRE>
+ </LI>
+ <LI>Create a sample.calculator.composite file for your composite and define your
+ component within it. The component definition specifies the implementation
+ library to use (a .dll file on Windows and a .so file on Linux) and the
+ implementation header file (which describes the implementation class). Component
+ properties and references to other services can also be specified here. E.g. the
+ Calculator sample.calculator.composite file contains the following XML:<BR/>
+ <PRE><composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator">
+
+ <component name="CalculatorComponent">
+ <implementation.cpp library="Calculator" header="CalculatorImpl.h"/>
+ </component>
+
+</composite></PRE>
+ </LI>
+ <LI>Generate the proxy and wrapper classes and header files using the SCAGEN
+ tool. These classes are used by the Tuscany SCA C++ runtime to enable
+ service implementations to be invoked from a client or another component.
+ Run the SCAGEN tool, specifying the directory where your header files,
+ sca.composite and componentType file are and the directory where you
+ want the generated files to be placed. E.g. on Windows, the
+ following command is run from the directory where Tuscany SCA is deployed:<BR/>
+ <PRE>./bin/scagen.cmd -dir ./samples/Calculator/sample.calculator -output ./samples/Calculator/sample.calculator</PRE>
+ which produces the following files:
+ <UL>
+ <LI>CalculatorImpl_CalculatorService_Proxy.h</LI>
+ <LI>CalculatorImpl_CalculatorService_Proxy.cpp</LI>
+ <LI>CalculatorImpl_CalculatorService_Wrapper.h</LI>
+ <LI>CalculatorImpl_CalculatorService_Wrapper.cpp</LI>
+ </UL>
+ </LI>
+ <LI>Compile and link the code that has been written and generated. This will
+ produce a .dll or .so library file. The name should match the library name
+ specified in the sample.calculator.composite file.
+ </LI>
+ <LI>Create the sample.calculator.solution.composite file and define your composite
+ component within it. The composite component definition should specify the service
+ name used in the componentType file and the composite name used in the
+ sample.calculator.composite file. E.g. the Calculator sample.calculator.solution.composite
+ file contains the following XML:<BR/>
+ <PRE><composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="sample.calculator.solution">
+
+ <component name="sample.calculator.CalculatorComponent">
+ <implementation.composite name="sample.calculator" />
+ </component>
+
+</composite></PRE>
+ </LI>
+ <LI>Deploy the various files into the SCA directory structure, as follows:
+ <UL>
+ <LI><deploy_root>/CompositeName/ServiceHeader.h</LI>
+ <LI><deploy_root>/CompositeName/ImplementationHeader.h </LI>
+ <LI><deploy_root>/CompositeName/CompositeName.composite </LI>
+ <LI><deploy_root>/CompositeName/Implementation.componentType </LI>
+ <LI><deploy_root>/CompositeName/Implementation.dll (or .so on Linux) </LI>
+ <LI><deploy_root>/SolutionName.composite </LI>
+ </UL>
+ E.g. for the Calculator sample the structure is:
+ <UL>
+ <LI>samples/Calculator/deploy/sample.calculator/Calculator.h </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/CalculatorImpl.h </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/sample.calculator.composite </LI>
+ <LI>samples/Calculator/deploy/sample.calculator/CalculatorImpl.componentType</LI>
+ <LI>samples/Calculator/deploy/sample.calculator/Calculator.dll </LI>
+ <LI>samples/Calculator/deploy/sample.calculator.solution.composite</LI>
+ </UL>
+ </LI>
+ <LI>Your component, composite and subsystem are now ready to be invoked. Create a
+ client that will call the service. E.g. the Calculator client (in the
+ CalculatorClient.cpp file) contains code similar to the following:<BR/>
+ <PRE>try
+{
+ // Locate the service
+ CompositeContext myContext = CompositeContext::getCurrent();
+ Calculator *calcService = (Calculator*) myContext.locateService("CalculatorComponent/CalculatorService");
+ if (calcService == 0)
+ {
+ cout << "calculator_client: Unable to find Calculator service" << endl;
+ }
+ else
+ {
+ float result = calcService->add(arg1, arg2);
+ cout << "calculator_client add(" << arg1 << "," << arg2 << ") = " << result << endl;
+ }
+}
+catch (ServiceRuntimeException& ex)
+{
+ cout << "calculator_client: Error whilst invoking Tuscany: " <<
+ ex.getMessageText() << endl;
+}
+</PRE>
+ </LI>
+ <LI>Compile, link and run the client that has been created. You should
+ (hopefully!) see your component invoked. Remember you will need to have the
+ TUSCANY_SCACPP, TUSCANY_SDOCPP and AXIS2C_HOME environment variables set,
+ as well as the SCA and SDO bin directories and the Axis2C lib directory on
+ your PATH on Windows or the SCA, SDO and Axis2C lib directories on
+ your LD_LIBRARY_PATH on Linux. You will also need to set the TUSCANY_SCACPP_SYSTEM_ROOT
+ and TUSCANY_SCACPP_DEFAULT_COMPONENT environment variables to the
+ path to your SCA component directory structure and the default component respectively.
+ E.g. on Windows run the following commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP=C:/tuscany_sca </LI>
+ <LI>set TUSCANY_SDOCPP=C:/tuscany_sdo </LI>
+ <LI>set AXIS2C_HOME=C:/axis2c-bin-0.94-win32 </LI>
+ <LI>set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib</LI>
+ <LI>set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy </LI>
+ <LI>set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent </LI>
+ <LI>./calculator_client.exe </LI>
+ </UL>
+ </LI>
+ <LI>Optionally, enable Tuscany logging by setting the TUSCANY_SCACPP_LOGGING
+ environment variable with the level you wish to log at (0 for minimal
+ logging, up to 9 for more detailed logging) and the TUSCANY_SCACPP_LOG
+ environment variable to define the file to log to (if this is not set,
+ logging will go to the console). E.g. on Windows run the following
+ commands:
+ <UL>
+ <LI>set TUSCANY_SCACPP_LOGGING=5 </LI>
+ <LI>set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt</LI>
+ </UL>
+ </LI>
+ </OL>
+ <P>The Calculator sample has been developed further than the details specified
+ above. In particular, it demonstrates how two services can be wired together
+ such that one references and invokes the other. It also demonstrates how to
+ expose the Calculator component service as an Axis2C Web Service.
+ </P>
+ </DIV>
+ <DIV CLASS="section">
+ <A NAME="help"><H2>Getting Help</H2></A>
+
+ <P>First place to look is at the Tuscany FAQ at
+ <A HREF="http://incubator.apache.org/tuscany/faq.html"
+ TARGET="_blank">http://incubator.apache.org/tuscany/faq.html</A> </P>
+
+ <P>Any problem with this release can be reported to the Tuscany
+ <A HREF="http://incubator.apache.org/tuscany/mail-lists.html"
+ TARGET="_blank">mailing lists</A> or create a JIRA issue at <A HREF="http://issues.apache.org/jira/browse/Tuscany"
+ TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P>
+ </DIV>
+ </DIV>
+</DIV>
+</BODY>
+
+</HTML>
+
Propchange: incubator/tuscany/cpp/sca/doc/CPPComponents.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/cpp/sca/doc/CPPComponents.html
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/cpp/sca/doc/PythonExtension.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/doc/PythonExtension.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/doc/PythonExtension.html (original)
+++ incubator/tuscany/cpp/sca/doc/PythonExtension.html Fri Oct 6 07:23:32 2006
@@ -174,15 +174,15 @@
<A NAME="clients"><H3>Clients</H3></A>
<P>Using the sca module, a Python client can search for an SCA service with:
</P>
-<DIV CLASS="sourcecode">import sca
+<PRE>import sca
calculator = sca.locateservice("CalculatorComponent/CalculatorService")
-</DIV>
+</PRE>
<P>This finds the component and service as defined in the composite and componentType
side files and returns a proxy object that can call the SCA service. You can then
simply call a business method on "calculator", like this:
</P>
-<DIV CLASS="sourcecode">result = calculator.add(12.3, 45.6)</DIV>
+<PRE>result = calculator.add(12.3, 45.6)</PRE>
</P>
<A NAME="components"><H3>Components</H3></A>
<P>Python component implementations are standard Python scripts, where class-level
@@ -192,15 +192,15 @@
at path/to/module/PythonModuleName.py, where the path is relative to the location of
the composite file:
</P>
-<DIV CLASS="sourcecode"><implementation.python module="PythonModuleName" path="path/to/module"/>
-</DIV>
+<PRE><implementation.python module="PythonModuleName" path="path/to/module"/>
+</PRE>
<P>To instantiate a class instance and use a class-level function, the Python class must
have a default constructor (an __init__ method that takes no arguments besides
'self') and the class attribute must be defined in the implementation.python element
in your composite, like so:
</P>
-<DIV CLASS="sourcecode"><implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/>
-</DIV>
+<PRE><implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/>
+</PRE>
<P>Additionally, Tuscany currently requires a componentType file that corresponds to the
name of the Python module, e.g. for the Python Calculator sample, the module name is
'CalculatorImpl' and the componentType file is 'CalculatorImpl.componentType'. The
@@ -208,7 +208,7 @@
references are called by the component. For example, CalculatorImpl.componentType
contains the following:
</P>
-<DIV CLASS="sourcecode"><componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
+<PRE><componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
<service name="CalculatorService">
<interface.python/>
</service>
@@ -216,44 +216,44 @@
<interface.python/>
</reference>
</componentType>
-</DIV>
+</PRE>
<A NAME="references"><H3>References</H3></A>
<P>References are automatically added to your Python component implementation when
the runtime loads the implementation script, so they can be used like so:
</P>
-<DIV CLASS="sourcecode"># The module-level div function
+<PRE># The module-level div function
def div(val1, val2):
# Use the divideService reference
result = divideService.divide(val1, val2)
return result
-</DIV>
+</PRE>
<P>and in your composite file:
</P>
-<DIV CLASS="sourcecode"><component name="CalculatorComponent">
+<PRE><component name="CalculatorComponent">
<implementation.python module="CalculatorImpl"/>
<reference name="divideService">DivideComponent/DivideService</reference>
</component>
-</DIV>
+</PRE>
<A NAME="properties"><H3>Properties</H3></A>
<P>A composite with a property defined for a component like so:
</P>
-<DIV CLASS="sourcecode"><component name="DivideComponent">
+<PRE><component name="DivideComponent">
<implementation.python module="DivideImpl"/>
<property name="doRounding">true</property>
</component>
-</DIV>
+</PRE>
<P>and in the associated .componentType file like so:
</P>
-<DIV CLASS="sourcecode"><componentType ...
+<PRE><componentType ...
...
<property name="doRounding" type="xsd:boolean"/>
</componentType>
-</DIV>
+</PRE>
<P>means the property is automatically instantiated and assigned the
property value in the Python component implementation, so it can be
used like so:
</P>
-<DIV CLASS="sourcecode">def divide(val1, val2):
+<PRE>def divide(val1, val2):
result = float(val1) / float(val2)
print "Python - DivideImpl.divide " + str(val1) + " / " + str(val2) + " = " + str(result)
@@ -263,7 +263,7 @@
print "Python - DivideImpl.divide is rounding the result to " + str(result)
return result
-</DIV>
+</PRE>
</P>
</DIV>
Modified: incubator/tuscany/cpp/sca/doc/RubyExtension.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/doc/RubyExtension.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/doc/RubyExtension.html (original)
+++ incubator/tuscany/cpp/sca/doc/RubyExtension.html Fri Oct 6 07:23:32 2006
@@ -167,15 +167,15 @@
<A NAME="clients"><H3>Clients</H3></A>
<P>Using the Ruby SCA extension library, a Ruby client can search for an SCA service with:
</P>
-<DIV CLASS="sourcecode">require("libtuscany_sca_ruby")
+<PRE>require("libtuscany_sca_ruby")
calculator = SCA::locateService("CalculatorComponent/CalculatorService")
-</DIV>
+</PRE>
<P>This finds the component and service as defined in the composite and componentType
side files and returns a proxy object that can call the SCA service. You can then
simply call a business method on "calculator", like this:
</P>
-<DIV CLASS="sourcecode">result = calculator.add(12.3, 45.6)</DIV>
+<PRE>result = calculator.add(12.3, 45.6)</PRE>
</P>
<A NAME="components"><H3>Components</H3></A>
<P>Ruby component implementations are standard Ruby scripts, where class-level
@@ -183,15 +183,15 @@
use a Ruby component implementation, use the implementation.ruby element in
your .composite file. For example:
</P>
-<DIV CLASS="sourcecode"><implementation.ruby script="CalculatorImpl.rb"/>
-</DIV>
+<PRE><implementation.ruby script="CalculatorImpl.rb"/>
+</PRE>
<P>To instantiate a class instance and use a class-level function, the Ruby class must
have a default constructor (an initialize() method that takes no arguments) and the
class attribute must be definde in the implementation.ruby element
in your composite, like so:
</P>
-<DIV CLASS="sourcecode"><implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/>
-</DIV>
+<PRE><implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/>
+</PRE>
<P>You can write a componentType file for your Ruby component, but you don't have to, the Ruby
extension introspects Ruby component implementation classes for you and binds public
attributes to references and properties.
@@ -200,7 +200,7 @@
<P>References can be invoked from Ruby component implementations by the use of public
attributes in the component implementation classes, like this:
</P>
-<DIV CLASS="sourcecode">class CalculatorImpl
+<PRE>class CalculatorImpl
# Define the public attribute that corresponds to the divideService reference
attr_writer :divideService
@@ -215,26 +215,26 @@
...
end
-</DIV>
+</PRE>
<P>and in your composite file:
</P>
-<DIV CLASS="sourcecode"><component name="CalculatorComponent">
+<PRE><component name="CalculatorComponent">
<implementation.ruby script="CalculatorImpl.rb"/>
<reference name="divideService">DivideComponent/DivideService</reference>
</component>
-</DIV>
+</PRE>
<A NAME="properties"><H3>Properties</H3></A>
<P>A composite with a property defined for a component like so:
</P>
-<DIV CLASS="sourcecode"><component name="DivideComponent">
+<PRE><component name="DivideComponent">
<implementation.ruby script="DivideImpl.rb" class="DivideImpl"/>
<property name="round">true</property>
</component>
-</DIV>
+</PRE>
<P>allows a public attribute of a Ruby component implementation class to be
assigned the property value, so it can be used like so:
</P>
-<DIV CLASS="sourcecode">class DivideImpl
+<PRE>class DivideImpl
# Define the public attribute that corresponds to the round property
attr_writer :round
@@ -253,7 +253,7 @@
res
end
end
-</DIV>
+</PRE>
</P>
</DIV>
Modified: incubator/tuscany/cpp/sca/doc/css/maven-theme.css
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/doc/css/maven-theme.css?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/doc/css/maven-theme.css (original)
+++ incubator/tuscany/cpp/sca/doc/css/maven-theme.css Fri Oct 6 07:23:32 2006
@@ -4,6 +4,8 @@
body, td, select, input, li{
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 13px;
+ padding: 4px 4px 4px 4px;
+ line-height: 1.5em;
}
code{
font-family: Courier, monospace;
@@ -67,7 +69,7 @@
font-size: normal;
}
p {
- line-height: 1.3em;
+ line-height: 1.5em;
font-size: small;
}
#breadcrumbs {
@@ -129,6 +131,15 @@
font-size: 13px;
white-space: pre;
padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
+}
+pre {
+ border: 1px solid #999;
+ font-family: Courier, monospace;
+ font-size: 13px;
+ white-space: pre;
+ padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
}
Modified: incubator/tuscany/cpp/sca/samples/BigBank/README
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/BigBank/README?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/BigBank/README (original)
+++ incubator/tuscany/cpp/sca/samples/BigBank/README Fri Oct 6 07:23:32 2006
@@ -7,15 +7,11 @@
external Web Service via a reference, exposes the service as a Web Service
and also provides a PHP based client.
-There are five sub projects in this workspace:
+There are four sub projects in this workspace:
- bigbank.account
This contains the source code and SCDL artifacts for the SCA BigBank
composite implementing the account services.
- - bigbank.accountmanagement
- This contains the SCDL file describing the configuration of the SCA
- BigBank composite deployed to the SCA runtime.
-
- bigbank.client
A sample client which does a local call to the BigBank service.
@@ -26,4 +22,9 @@
A sample PHP client which calls the BigBank Web service and then
deconstructs and displays the result by using the SDO for PHP extension.
+Additionally, there is the bigbank.accountmanagement.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
+
See the README.html file for instructions to build and run this sample
+
Modified: incubator/tuscany/cpp/sca/samples/BigBank/README.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/BigBank/README.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/BigBank/README.html (original)
+++ incubator/tuscany/cpp/sca/samples/BigBank/README.html Fri Oct 6 07:23:32 2006
@@ -41,16 +41,12 @@
This sample uses multiple C++ components, calls out to an external Web Service via a reference,
exposes the service as a Web Service and also provides a PHP based client.
</P>
- <P>There are five sub projects in this workspace:</P>
+ <P>There are four sub projects in this workspace:</P>
<UL>
<LI>bigbank.account<BR/>
This contains the source code and SCDL artifacts for the SCA BigBank
composite implementing the account services.
</LI>
- <LI>bigbank.accountmanagement<BR/>
- This contains the SCDL file describing the configuration of the SCA
- BigBank composite deployed to the SCA runtime.
- </LI>
<LI>bigbank.client<BR/>
A sample client which does a local call to the BigBank service.
</LI>
@@ -61,8 +57,26 @@
A sample PHP client which calls the BigBank Web service and then deconstructs
and displays the result by using the
<A HREF="http://www.osoa.org/display/PHP/SOA+PHP+Homepage">SDO for PHP extension</A>.
+ <P>This is a pair of very simple PHP scripts to demonstrate how the Accounts service
+ that the C++ Big Bank sample exposes can be used from within the PHP scripting
+ language.
+ </P>
+ <P>bigwelcome.php<BR/>
+ A bootstrap script that shows a form and allows the user to press a button
+ in order to invoke the bigaccount.php script
+ </P>
+ <P>bigaccount.php<BR/>
+ Makes a call to a locally installed BigBank Accounts service. The script
+ shows how to use PHP SDO and SOAP extensions to construct the call
+ and interpret the result.
+ </P>
</LI>
</UL>
+ <P>Additionally, there is the bigbank.accountmanagement.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+
</DIV>
<DIV CLASS="section">
@@ -131,7 +145,8 @@
</OL>
<A NAME="linuxws"><H3>BigBank with Web Service client</H3></A>
<OL>
- <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here.
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../../doc/Axis2CWSService.html">here</A>.
</LI>
<LI>Start the Axis2C simple http server:
<OL>
@@ -161,7 +176,8 @@
</OL>
<A NAME="linuxphp"><H3>BigBank with PHP web client</H3></A>
<OL>
- <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here.
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../../doc/Axis2CWSService.html">here</A>.
</LI>
<LI>Start the Axis2C simple http server:
<OL>
@@ -177,13 +193,36 @@
<LI>./runwsserver.sh</LI>
</OL>
</LI>
- <LI>Install the PHP web client:
- <OL>
- <LI></LI>
- </OL>
+ <LI>To run the php scripts requires some configuration and setup of a php runtime with
+ the SDO and SimpleXML extensions enabled. The bits you will need are:
+ <UL>
+ <LI><A HREF="http://httpd.apache.org/">Apache web server</A> (tested with version 2.0.55)</LI>
+ <LI><A HREF="http://www.php.net/downloads.php">PHP 5</A> (tested with version 5.1.6)</LI>
+ <LI><A HREF="http://pecl.php.net/package/sdo">PHP SDO</A> (tested with version 1.0.3)</LI>
+ </UL>
+ <P>Follow
+ <A HREF="http://livedocs.phpdoc.info/index.php?l=en&q=ref.sdo">these instructions</A> to
+ install SDO and DAS.
+ </P>
+ </LI>
+ <LI>You need to configure Apache to run PHP of course. This is well documented but this
+ is what I put at the end of httpd.conf:
+ <PRE># PHP5 Support
+LoadModule php5_module "/home/php/php5.1.6/php5apache2.so"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "/home/php/php5.1.6"</PRE>
+ </LI>
+ <LI>Copy the <tuscany_sca_install_dir>/samples/BigBank/bigbank.phpwsclient
+ directory to your Apache document root directory (by default this is named 'htdocs').
+ </LI>
+ <LI>Finally, start your Apache web server.
</LI>
<LI>Run the PHP web client by pointing your browser at
- <A HREF="http://localhost/BigBank/welcome.php">http://localhost/BigBank/welcome.php</A>
+ <A HREF="http://localhost/bigbank.phpwsclient/welcome.php">http://localhost/bigbank.phpwsclient/welcome.php</A>.
+ You should now be able to press the "GetAccount" button and see the values
+ returned from the BigBank SCA application.
</LI>
</OL>
@@ -234,7 +273,8 @@
</OL>
<A NAME="winws"><H3>BigBank with Web Service client</H3></A>
<OL>
- <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here.
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../../doc/Axis2CWSService.html">here</A>.
</LI>
<LI>Start the Axis2C simple http server:
<OL>
@@ -264,7 +304,8 @@
</OL>
<A NAME="winphp"><H3>BigBank with PHP web client</H3></A>
<OL>
- <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here.
+ <LI>Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions
+ found <A HREF="../../../doc/Axis2CWSService.html">here</A>.
</LI>
<LI>Start the Axis2C simple http server:
<OL>
@@ -280,13 +321,83 @@
<LI>./runwsserver.bat</LI>
</OL>
</LI>
- <LI>Install the PHP web client:
- <OL>
- <LI></LI>
- </OL>
+ <LI>To run the php scripts requires some configuration and setup of a php runtime with
+ the SDO and SimpleXML extensions enabled. The bits you will need are:
+ <UL>
+ <LI><A HREF="http://httpd.apache.org/">Apache web server</A> (tested with version 2.0.55)</LI>
+ <LI><A HREF="http://www.php.net/downloads.php">PHP 5</A> (tested with version 5.1.6)</LI>
+ <LI><A HREF="http://pecl.php.net/package/sdo">PHP SDO</A> (tested with version 1.0.3)</LI>
+ </UL>
+ <P>You can get Windows binary builds from
+ <A HREF="http://www.php.net/downloads.php">http://www.php.net/downloads.php</A>.
+ For SDO you need two dlls as follows:
+ </P>
+ <UL>
+ <LI><A HREF="http://pecl4win.php.net/ext.php/php_sdo.dll">php_sdo.dll</A></LI>
+ <LI><A HREF="http://pecl4win.php.net/ext.php/php_sdo_das_xml.dll">php_sdo_das_xml.dll</A></LI>
+ </UL>
+ <P>I copied these to my php5.1.6/ext dir ( php_soap.dll is already there) and added the
+ following to my php.ini file (having already renamed php.ini-recommended to php.ini
+ of course)
+ <PRE>extension=php_soap.dll
+extension=php_sdo.dll
+extension=php_sdo_das_xml.dll</PRE>
+ I also changed the extension_dir directive to point to my extensions directory:
+ <PRE>extension_dir="C:/php5.1.6/ext"</PRE>
+ </P>
+ <P>When I ask PHP to list what modules are active in my version of PHP I get the
+ following:
+ <PRE>C:\php5.1.6>php -m
+[PHP Modules]
+bcmath
+calendar
+com_dotnet
+ctype
+date
+dom
+ftp
+hash
+iconv
+libxml
+odbc
+pcre
+Reflection
+sdo
+sdo_das_xml
+session
+SimpleXML
+soap
+SPL
+standard
+tokenizer
+wddx
+xml
+xmlreader
+xmlwriter
+zlib
+
+[Zend Modules]</PRE>
+ Of particular relevance to these scripts note that soap, sdo and sdo_das_xml are active.
+ </P>
+ </LI>
+ <LI>You need to configure Apache to run PHP of course. This is well documented but this
+ is what I put at the end of httpd.conf:
+ <PRE># PHP5 Support
+LoadModule php5_module "C:/php5.1.6/php5apache2.dll"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "C:/php5.1.6"</PRE>
+ </LI>
+ <LI>Copy the <tuscany_sca_install_dir>/samples/BigBank/bigbank.phpwsclient
+ directory to your Apache document root directory (by default this is named 'htdocs').
+ </LI>
+ <LI>Finally, start your Apache web server.
</LI>
<LI>Run the PHP web client by pointing your browser at
- <A HREF="http://localhost/BigBank/welcome.php">http://localhost/BigBank/welcome.php</A>
+ <A HREF="http://localhost/bigbank.phpwsclient/welcome.php">http://localhost/bigbank.phpwsclient/welcome.php</A>.
+ You should now be able to press the "GetAccount" button and see the values
+ returned from the BigBank SCA application.
</LI>
</OL>
</DIV>
Modified: incubator/tuscany/cpp/sca/samples/Calculator/README
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/Calculator/README?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/Calculator/README (original)
+++ incubator/tuscany/cpp/sca/samples/Calculator/README Fri Oct 6 07:23:32 2006
@@ -5,19 +5,19 @@
two components to implement a Calculator service and expose that service as
a Web Service.
-There are four sub projects in this workspace:
+There are three sub projects in this workspace:
- sample.calculator
This contains the source code and SCDL artifacts for the SCA Calculator.
composite implementing the sample Calculator.
- - sample.calculator.solution
- This contains the SCDL file describing the configuration of the SCA
- Calculator composite deployed to the SCA runtime.
-
- sample.calculator.client
A sample client which does a local call to the Calculator service.
- sample.calculator.wsclient
A sample Axis2 Web Service client which calls the Calculator Web service.
+
+Additionally, there is the sample.calculator.solution.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
See the README.html file for instructions to build and run this sample
Modified: incubator/tuscany/cpp/sca/samples/Calculator/README.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/Calculator/README.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/Calculator/README.html (original)
+++ incubator/tuscany/cpp/sca/samples/Calculator/README.html Fri Oct 6 07:23:32 2006
@@ -39,16 +39,12 @@
together two C++ components to implement a Calculator service and expose
that service as a Web Service.
</P>
- <P>There are four sub projects in this workspace:</P>
+ <P>There are three sub projects in this workspace:</P>
<UL>
<LI>sample.calculator<BR/>
This contains the source code and SCDL artifacts for the SCA Calculator
composite implementing the sample Calculator.
</LI>
- <LI>sample.calculator.solution<BR/>
- This contains the SCDL file describing the configuration of the SCA
- Calculator composite deployed to the SCA runtime.
- </LI>
<LI>sample.calculator.client<BR/>
A sample client which does a local call to the Calculator service.
</LI>
@@ -56,6 +52,10 @@
A sample Axis2 Web Service client which calls the Calculator Web service.
</LI>
</UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
</DIV>
<DIV CLASS="section">
Modified: incubator/tuscany/cpp/sca/samples/PythonCalculator/README.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/PythonCalculator/README.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/PythonCalculator/README.html (original)
+++ incubator/tuscany/cpp/sca/samples/PythonCalculator/README.html Fri Oct 6 07:23:32 2006
@@ -43,16 +43,12 @@
documentation for information about building the Tuscany Python extension
and using Python in SCA composites.
</P>
- <P>There are four sub projects in this workspace:</P>
+ <P>There are three sub projects in this workspace:</P>
<UL>
<LI>sample.calculator<BR/>
This contains the Python scripts and SCDL artifacts for the SCA Calculator
composite implementing the sample Calculator.
</LI>
- <LI>sample.calculator.solution<BR/>
- This contains the SCDL file describing the configuration of the SCA
- Calculator composite deployed to the SCA runtime.
- </LI>
<LI>sample.calculator.client<BR/>
A sample client which does a local call to the Calculator service.
</LI>
@@ -61,6 +57,11 @@
that calls the Calculator Web Service.
</LI>
</UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
+
</DIV>
<DIV CLASS="section">
Modified: incubator/tuscany/cpp/sca/samples/RubyBank/README
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyBank/README?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/RubyBank/README (original)
+++ incubator/tuscany/cpp/sca/samples/RubyBank/README Fri Oct 6 07:23:32 2006
@@ -7,16 +7,16 @@
external Web Service via a reference, exposes the service as a Web Service
and also provides a PHP based client.
-There are three sub projects in this workspace:
+There are two sub projects in this workspace:
- bigbank.account
This contains the source code and SCDL artifacts for the SCA BigBank
composite implementing the account services.
- - bigbank.accountmanagement
- This contains the SCDL file describing the configuration of the SCA
- BigBank composite deployed to the SCA runtime.
-
- bigbank.client
A sample client which does a local call to the BigBank service.
+
+Additionally, there is the bigbank.accountmanagement.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
See the README.html file for instructions to build and run this sample
Modified: incubator/tuscany/cpp/sca/samples/RubyBank/README.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyBank/README.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/RubyBank/README.html (original)
+++ incubator/tuscany/cpp/sca/samples/RubyBank/README.html Fri Oct 6 07:23:32 2006
@@ -41,20 +41,20 @@
This sample uses multiple Ruby components, calls out to an external Web Service via a reference
and exposes the service as a Web Service.
</P>
- <P>There are three sub projects in this workspace:</P>
+ <P>There are two sub projects in this workspace:</P>
<UL>
<LI>bigbank.account<BR/>
This contains the source code and SCDL artifacts for the SCA RubyBank
composite implementing the account services.
</LI>
- <LI>bigbank.accountmanagement<BR/>
- This contains the SCDL file describing the configuration of the SCA
- RubyBank composite deployed to the SCA runtime.
- </LI>
<LI>bigbank.client<BR/>
A sample client which does a local call to the RubyBank service.
</LI>
- </UL>
+ </UL>
+ <P>Additionally, there is the bigbank.accountmanagement.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
</DIV>
<DIV CLASS="section">
Modified: incubator/tuscany/cpp/sca/samples/RubyCalculator/README
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/README?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/RubyCalculator/README (original)
+++ incubator/tuscany/cpp/sca/samples/RubyCalculator/README Fri Oct 6 07:23:32 2006
@@ -5,19 +5,19 @@
two components to implement a Calculator service and expose that service as
a Web Service.
-There are four sub projects in this workspace:
+There are three sub projects in this workspace:
- sample.calculator
This contains the source code and SCDL artifacts for the SCA Calculator.
composite implementing the sample Calculator.
- - sample.calculator.solution
- This contains the SCDL file describing the configuration of the SCA
- Calculator composite deployed to the SCA runtime.
-
- sample.calculator.client
A sample client which does a local call to the Calculator service.
- sample.calculator.wsclient
A sample Axis2 Web Service client which calls the Calculator Web service.
+
+Additionally, there is the sample.calculator.solution.composite file. This
+describes the configuration of the SCA Calculator composite deployed to the
+SCA runtime.
See the README.html file for instructions to build and run this sample
Modified: incubator/tuscany/cpp/sca/samples/RubyCalculator/README.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sca/samples/RubyCalculator/README.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sca/samples/RubyCalculator/README.html (original)
+++ incubator/tuscany/cpp/sca/samples/RubyCalculator/README.html Fri Oct 6 07:23:32 2006
@@ -39,16 +39,12 @@
together two Ruby components to implement a Calculator service and expose
that service as a Web Service.
</P>
- <P>There are four sub projects in this workspace:</P>
+ <P>There are three sub projects in this workspace:</P>
<UL>
<LI>sample.calculator<BR/>
This contains the Ruby scripts and SCDL artifacts for the SCA Calculator
composite implementing the sample Calculator.
</LI>
- <LI>sample.calculator.solution<BR/>
- This contains the SCDL file describing the configuration of the SCA
- Calculator composite deployed to the SCA runtime.
- </LI>
<LI>sample.calculator.client<BR/>
A sample client which does a local call to the Calculator service.
</LI>
@@ -57,6 +53,10 @@
that calls the Calculator Web Service.
</LI>
</UL>
+ <P>Additionally, there is the sample.calculator.solution.composite file. This
+ describes the configuration of the SCA Calculator composite deployed to the SCA
+ runtime.
+ </P>
</DIV>
<DIV CLASS="section">
Modified: incubator/tuscany/cpp/sdo/doc/BuildingSTDCXX.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/doc/BuildingSTDCXX.html?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sdo/doc/BuildingSTDCXX.html (original)
+++ incubator/tuscany/cpp/sdo/doc/BuildingSTDCXX.html Fri Oct 6 07:23:32 2006
@@ -70,12 +70,12 @@
</LI>
<LI>Change directory to STDCXX_HOME. Then build a debug version of the stdcxx
library using the following command:
- <DIV CLASS="sourcecode">gmake BUILDDIR=$STDCXX_HOME/Debug BUILDTYPE=15d CONFIG=gcc.config</DIV>
+ <PRE>gmake BUILDDIR=$STDCXX_HOME/Debug BUILDTYPE=15d CONFIG=gcc.config</PRE>
This will create a sub-directory of STDCXX_HOME called Debug and place the
build products below that.
</LI>
<LI>For a release version the command is:
- <DIV CLASS="sourcecode">gmake BUILDDIR=$STDCXX_HOME/Release BUILDTYPE=12d CONFIG=gcc.config</DIV>
+ <PRE>gmake BUILDDIR=$STDCXX_HOME/Release BUILDTYPE=12d CONFIG=gcc.config</PRE>
</LI>
</OL>
<P>This provides Tuscany SDO with the versions of stdcxx that it needs for both
@@ -94,29 +94,29 @@
</LI>
<LI>Create two directories to contain the results of building stdcxx. The first is
for the debug enabled version and must be:
- <DIV CLASS="sourcecode"><STDCXX_HOME>\Debug</DIV>
+ <PRE><STDCXX_HOME>\Debug</PRE>
</LI>
<LI>The second is for the release (ie optimised) version and must be
- <DIV CLASS="sourcecode"><STDCXX_HOME>\Release</DIV>
+ <PRE><STDCXX_HOME>\Release</PRE>
</LI>
<LI>Launch an MSVC++ 7.1 command window. In the command window, set the default
directory to <STDCXX_HOME> where there is a file called generate.bat. Create
the project definitions that MSVC++ 7.1 will need in order to build stdcxx by
running generate.bat using the following command:
- <DIV CLASS="sourcecode">.\generate.bat /BUILDDIR:<STDCXX_HOME>\Debug /CONFIG:VC71</DIV>
+ <PRE>.\generate.bat /BUILDDIR:<STDCXX_HOME>\Debug /CONFIG:VC71</PRE>
It is necessary to provide the full, absolute path to the build directory - it
is not sufficient to provide a relative path. (This restriction will be fixed
in a future release.)
</LI>
<LI>Repeat this operation for the release build, via the command:
- <DIV CLASS="sourcecode">.\generate.bat /BUILDDIR:<STDCXX_HOME>\Release /CONFIG:VC71</DIV>
+ <PRE>.\generate.bat /BUILDDIR:<STDCXX_HOME>\Release /CONFIG:VC71</PRE>
</LI>
<LI>Still using the MSVC++ 7.1 command window, set the default directory to one of
the two build directories eg
- <DIV CLASS="sourcecode">cd <STDCXX_HOME>\Debug</DIV>
+ <PRE>cd <STDCXX_HOME>\Debug</PRE>
</LI>
<LI>Then launch the developer studio via
- <DIV CLASS="sourcecode">cd <STDCXX_HOME>\Debug</DIV>
+ <PRE>cd <STDCXX_HOME>\Debug</PRE>
</LI>
<LI>Select the configuration to build. For the Debug version of SDO this will be
"15d Debug Thread-safe Dll". Then select "Build Solution". The build will take
@@ -125,7 +125,7 @@
itself is fine.
</LI>
<LI>Repeat this process for the release version, setting the default directory to
- <DIV CLASS="sourcecode">cd <STDCXX_HOME>\Release</DIV>
+ <PRE>cd <STDCXX_HOME>\Release</PRE>
and choosing "12d Optimized Thread-safe Dll" as the build configuration.
</LI>
</OL>
Modified: incubator/tuscany/cpp/sdo/doc/css/maven-theme.css
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/doc/css/maven-theme.css?view=diff&rev=453609&r1=453608&r2=453609
==============================================================================
--- incubator/tuscany/cpp/sdo/doc/css/maven-theme.css (original)
+++ incubator/tuscany/cpp/sdo/doc/css/maven-theme.css Fri Oct 6 07:23:32 2006
@@ -4,6 +4,8 @@
body, td, select, input, li{
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 13px;
+ padding: 4px 4px 4px 4px;
+ line-height: 1.5em;
}
code{
font-family: Courier, monospace;
@@ -67,7 +69,7 @@
font-size: normal;
}
p {
- line-height: 1.3em;
+ line-height: 1.5em;
font-size: small;
}
#breadcrumbs {
@@ -129,6 +131,15 @@
font-size: 13px;
white-space: pre;
padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
+}
+pre {
+ border: 1px solid #999;
+ font-family: Courier, monospace;
+ font-size: 13px;
+ white-space: pre;
+ padding: 4px 4px 4px 6px;
+ margin: 4px 4px 4px 6px;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org