Return-Path: Delivered-To: apmail-ws-tuscany-commits-archive@locus.apache.org Received: (qmail 43718 invoked from network); 6 Oct 2006 14:23:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 6 Oct 2006 14:23:45 -0000 Received: (qmail 86374 invoked by uid 500); 6 Oct 2006 14:23:45 -0000 Delivered-To: apmail-ws-tuscany-commits-archive@ws.apache.org Received: (qmail 86350 invoked by uid 500); 6 Oct 2006 14:23:45 -0000 Mailing-List: contact tuscany-commits-help@ws.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: tuscany-dev@ws.apache.org Delivered-To: mailing list tuscany-commits@ws.apache.org Received: (qmail 86341 invoked by uid 99); 6 Oct 2006 14:23:45 -0000 Received: from idunn.apache.osuosl.org (HELO idunn.apache.osuosl.org) (140.211.166.84) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Oct 2006 07:23:45 -0700 X-ASF-Spam-Status: No, hits=-8.6 required=5.0 tests=ALL_TRUSTED,INFO_TLD,NO_REAL_NAME Received: from [140.211.166.113] ([140.211.166.113:53766] helo=eris.apache.org) by idunn.apache.osuosl.org (ecelerity 2.1.1.8 r(12930)) with ESMTP id 84/F1-24193-8E666254 for ; Fri, 06 Oct 2006 07:23:37 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 453BC1A981A; Fri, 6 Oct 2006 07:23:34 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Fri, 06 Oct 2006 14:23:33 -0000 To: tuscany-commits@ws.apache.org From: ajborley@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061006142334.453BC1A981A@eris.apache.org> X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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 @@ C++ 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 SCA + C++ Client and Implementation specification for more details about the SCA C++ + Programming Model and the Creating C++ SCA Components + document for a step-by-step example. @@ -202,7 +206,11 @@ 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 + SCA + Web Service bindings specification for more details about SCA Web Service support + and the Enabling Web Service + access to SCA Components document for a step-by-step example. @@ -263,15 +271,15 @@ - - - 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 @@ + + + + + + + + + + + Tuscany SCA for C++ - Creating C++ SCA Components + + + +
+
+
+

Tuscany SCA for C++ - Creating C++ SCA Components

+ +

This document describes the deployment and use of the Axis2C Web Service + (binding.ws) service support in the Apache Tuscany SCA C++ runtime. +

+

The WS service code is based on Apache + Axis2C version 0.94 and allows SCA components to be invoked via Web + Service calls. +

+

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. +

+

See the SCA + Web Service binding specification for more details about SCA Web + Service support. +

+

Also, see the samples for various + demonstrations of the use of the binding.ws service support. +

+
+ + + + +
+

Deploying the Tuscany Web Service support to Axis2C

+

Deploying via scripts

+

Tuscany provides simple shell scripts to deploy the Web Service support to Axis2C. + However, the script will overwrite your Axis2C axis.xml file, so if you + have altered your axis2.xml from the default provided by the Axis2C distribution, it is + recommended that you follow the manual deployment steps + outlined below. +

+

To automatically deploy Tuscany Web Service support to Axis2C on Linux: +

    +
  1. The AXIS2C_HOME environment variable is required: +
      +
    • set AXIS2C_HOME=<path to axis2c version 0.94>
    • +
  2. +
  3. Use the following command sequence to run the deploy script: +
      +
    • cd <tuscany_sca_install_dir>/extensions/ws/service
    • +
    • ./deploy.sh
    • +
    +
  4. +
+

+

To automatically deploy Tuscany Web Service support to Axis2C on Windows: +

    +
  1. The AXIS2C_HOME environment variable is required: +
      +
    • export AXIS2C_HOME=<path to axis2c version 0.94>
    • +
  2. +
  3. Use the following command sequence to run the deploy script: +
      +
    • cd <tuscany_sca_install_dir>/extensions/ws/service
    • +
    • ./deploy.cmd
    • +
    +
  4. +
+

+ + +

Deploying manually

+

To deploy Tuscany Web Service support to Axis2C manually, use the following steps: +

+
    +
  1. Create a <axis2c version 0.94>/services/tuscany directory +
  2. +
  3. Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/services/tuscany/ + to the directory created above +
  4. +
  5. Create a <axis2c version 0.94>/modules/tuscany directory +
  6. +
  7. Copy all the files in <tuscany_sca_install_dir>/extensions/ws/service/modules/tuscany/ + to the directory created above +
  8. +
  9. Edit the <axis2c version 0.94>/axis2.xml file to add a <ref module="tuscany"> + element. This will register the above module. E.g.: +
    ...
    +    <!-- ================================================= -->
    +    <!-- Global Modules  -->
    +    <!-- ================================================= -->
    +    <!-- Comment this to disable Addressing -->
    +    <module ref="addressing"/>
    +
    +    <module ref="tuscany"/>
    +
    +...              
    +
  10. +
+
+ +
+

Defining an SCA Composite with a WS service

+ +

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. +

+

Pre-requisites: +

    +
  • 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 +
  • +
+

+
    +
  1. Create the WSDL that defines the interface of your SCA component. See the + table XML Schema Type to C++ Type Mapping and + Notes on creating WSDL 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. +
    + See the <tuscany_sca_install_dir>/samples/Calculator/sample.calculator/Calculator.wsdl + file as an example. +
  2. +
  3. 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. +
    + E.g. for the Calculator component, based on the Calculator.wsdl file: +
    <service name="CalculatorService">
    +    <interface.wsdl interface="http://sample/calculator#wsdl.interface(Calculator)"/>
    +    <binding.ws/>
    +    <reference>CalculatorComponent/CalculatorService</reference>
    +</service>
    +
  4. +
  5. 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: +
      +
    • set TUSCANY_SCACPP=C:/tuscany_sca
    • +
    • set TUSCANY_SDOCPP=C:/tuscany_sdo
    • +
    • set AXIS2C_HOME=C:/axis2c-bin-0.94-win32
    • +
    • set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib
    • +
    • set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy
    • +
    • set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
    • +
    • cd %AXIS2C_HOME%/bin/
    • +
    • ./axis2_http_server.exe
    • +
    +
  6. +
  7. 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: +
      +
    • set TUSCANY_SCACPP_LOGGING=5
    • +
    • set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt
    • +
    +
  8. +
+

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. Axis2 for Java), or you can invoke your + component from another Tuscany runtime by using Tuscany's WS reference + support. +

+ +
+ +
+

XML Schema Type to C++ Type Mapping

+

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. +

+

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 + SDO + specifications for the C++ types that SDO supports. +

+
Creating and building a Tuscany SCA C++ component + Creating and building a Tuscany SCA C++ component A document that describes how to create, build and run a Tuscany SCA C++ component.
Enabling Web Service access to your Tuscany SCA C++ component + Enabling Web Service access to your Tuscany SCA component A document that describes how to expose a Tuscany SCA C++ component as a Web Service via an SCA Web Service Entrypoint. + A document that describes how to expose a Tuscany SCA C++ component as a Web Service via the Tuscany Axis2C Web Service support.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
XML Schema TypeC++ Type
stringstd::string
intlong
integerlong
shortshort
floatfloat
doublelong double
booleanbool
hexBinarychar*
base64Binarychar*
bytechar
complexTypecommonj::sdo::DataObjectPtr
anycommonj::sdo::DataObjectPtr with OpenDataObjectType
+ + +
+

Notes on creating WSDL

+

Currently only Document/literal Wrapped style Web Services are supported by + WS EntryPoint, support for RPC style Web Services is planned for future + releases. +

+

See this article + for an explanation of Document/literal Wrapped style WSDL and Web Services +

+

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. +

+

For example, a component operation defined in C++ as: +

long myOperation(std::string arg1, short arg2, DataObjectPtr arg3);
+ will need to be described in WSDL with messages like: +
<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>
+ and will need an XML schema to define the types like: +
<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>
+
+ +
+

Getting Help

+ +

First place to look is at the Tuscany FAQ at + http://incubator.apache.org/tuscany/faq.html

+ +

Any problem with this release can be reported to the Tuscany + mailing lists or create a JIRA issue at http://issues.apache.org/jira/browse/Tuscany.

+
+ + + + + + 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 @@ + + + + + + + + + + + Tuscany SCA for C++ - Creating C++ SCA Components + + + +
+
+
+

Tuscany SCA for C++ - Creating C++ SCA Components

+ +

This document describes how to create and run SCA components in Tuscany SCA C++ + milestone release 2. +

+

See the SCA + C++ Client and Implementation specification for more details about the SCA C++ + programming model. +

+

See Calculator or + BigBank for samples that + demonstrate the use of C++ components +

+
+
+

Creating and deploying an SCA C++ Component

+ +

Each SCA C++ component needs: +

+
    +
  • A service header file that defines the operations that can be invoked on the + component +
  • +
  • An implementation header file that defines the implementation and extends + the service header file +
  • +
  • A C++ implementation of the service that implements the operations defined + in the service header file +
  • +
  • Proxy and wrapper header and implementation files generated by the Tuscany + C++ SCAGEN tool +
  • +
  • A component definition in a composite file +
  • +
  • A service definition in a .componentType file +
  • +
  • A composite describing the configuration of the composite definition above +
  • +
+

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. +

+
    +
  1. Create the service header file that defines the operations your component + will implement. E.g. Calculator.h contains the following:
    +
    #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
    +
  2. +
  3. Create the implementation header file that extends the service header file. + E.g. CalculatorImpl.h contains the following:
    +
    #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
    +
  4. +
  5. Create the implementation for the component based on the implementation + header file. E.g. CalculatorImpl.cpp contains the following code:
    +
    #include "CalculatorImpl.h"
    +#include 
    +
    +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;
    +}
    +
  6. +
  7. 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:
    +
    <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
    +
    +	<service name="CalculatorService">
    +		<interface.cpp header="Calculator.h"/>
    +	</service>
    +
    +</componentType>
    +
  8. +
  9. 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:
    +
    <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>
    +
  10. +
  11. 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:
    +
    ./bin/scagen.cmd -dir ./samples/Calculator/sample.calculator -output ./samples/Calculator/sample.calculator
    + which produces the following files: +
      +
    • CalculatorImpl_CalculatorService_Proxy.h
    • +
    • CalculatorImpl_CalculatorService_Proxy.cpp
    • +
    • CalculatorImpl_CalculatorService_Wrapper.h
    • +
    • CalculatorImpl_CalculatorService_Wrapper.cpp
    • +
    +
  12. +
  13. 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. +
  14. +
  15. 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:
    +
    <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>
    +
  16. +
  17. Deploy the various files into the SCA directory structure, as follows: +
      +
    • <deploy_root>/CompositeName/ServiceHeader.h
    • +
    • <deploy_root>/CompositeName/ImplementationHeader.h
    • +
    • <deploy_root>/CompositeName/CompositeName.composite
    • +
    • <deploy_root>/CompositeName/Implementation.componentType
    • +
    • <deploy_root>/CompositeName/Implementation.dll (or .so on Linux)
    • +
    • <deploy_root>/SolutionName.composite
    • +
    + E.g. for the Calculator sample the structure is: +
      +
    • samples/Calculator/deploy/sample.calculator/Calculator.h
    • +
    • samples/Calculator/deploy/sample.calculator/CalculatorImpl.h
    • +
    • samples/Calculator/deploy/sample.calculator/sample.calculator.composite
    • +
    • samples/Calculator/deploy/sample.calculator/CalculatorImpl.componentType
    • +
    • samples/Calculator/deploy/sample.calculator/Calculator.dll
    • +
    • samples/Calculator/deploy/sample.calculator.solution.composite
    • +
    +
  18. +
  19. 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:
    +
    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; 
    +}
    +
    +
  20. +
  21. 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: +
      +
    • set TUSCANY_SCACPP=C:/tuscany_sca
    • +
    • set TUSCANY_SDOCPP=C:/tuscany_sdo
    • +
    • set AXIS2C_HOME=C:/axis2c-bin-0.94-win32
    • +
    • set PATH=%PATH%;C:/tuscany_sca/bin;C:/tuscany_sdo/bin;C:/axis2c-bin-0.94-win32/lib
    • +
    • set TUSCANY_SCACPP_SYSTEM_ROOT=C:/tuscany_sca/samples/Calculator/deploy
    • +
    • set TUSCANY_SCACPP_DEFAULT_COMPONENT=sample.calculator.CalculatorComponent
    • +
    • ./calculator_client.exe
    • +
    +
  22. +
  23. 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: +
      +
    • set TUSCANY_SCACPP_LOGGING=5
    • +
    • set TUSCANY_SCACPP_LOG=C:/tuscany/mylogfile.txt
    • +
    +
  24. +
+

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. +

+
+
+

Getting Help

+ +

First place to look is at the Tuscany FAQ at + http://incubator.apache.org/tuscany/faq.html

+ +

Any problem with this release can be reported to the Tuscany + mailing lists or create a JIRA issue at http://issues.apache.org/jira/browse/Tuscany.

+
+
+
+ + + + 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 @@

Clients

Using the sca module, a Python client can search for an SCA service with:

-
import sca +
import sca
 
 calculator = sca.locateservice("CalculatorComponent/CalculatorService")
-
+

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:

-
result = calculator.add(12.3, 45.6)
+
result = calculator.add(12.3, 45.6)

Components

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:

-
<implementation.python module="PythonModuleName" path="path/to/module"/> -
+
<implementation.python module="PythonModuleName" path="path/to/module"/>
+

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:

-
<implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/> -
+
<implementation.python module="PythonModuleName" path="relative/path/to/module" class="PythonClassName"/>
+

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:

-
<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0"> +
<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
     <service name="CalculatorService">
         <interface.python/>
     </service>
@@ -216,44 +216,44 @@
         <interface.python/>
     </reference>
 </componentType>
-
+

References

References are automatically added to your Python component implementation when the runtime loads the implementation script, so they can be used like so:

-
# The module-level div function +
# The module-level div function
 def div(val1, val2):
     # Use the divideService reference
     result = divideService.divide(val1, val2)
     return result
-
+

and in your composite file:

-
<component name="CalculatorComponent"> +
<component name="CalculatorComponent">
     <implementation.python module="CalculatorImpl"/>
     <reference name="divideService">DivideComponent/DivideService</reference>
 </component>
-
+

Properties

A composite with a property defined for a component like so:

-
<component name="DivideComponent"> +
<component name="DivideComponent">
     <implementation.python module="DivideImpl"/>
     <property name="doRounding">true</property>
 </component>
-
+

and in the associated .componentType file like so:

-
<componentType ... +
<componentType ...
 ...
     <property name="doRounding" type="xsd:boolean"/>
 </componentType>
-
+

means the property is automatically instantiated and assigned the property value in the Python component implementation, so it can be used like so:

-
def divide(val1, val2): +
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
-
+

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 @@

Clients

Using the Ruby SCA extension library, a Ruby client can search for an SCA service with:

-
require("libtuscany_sca_ruby") +
require("libtuscany_sca_ruby")
 
 calculator = SCA::locateService("CalculatorComponent/CalculatorService")
-
+

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:

-
result = calculator.add(12.3, 45.6)
+
result = calculator.add(12.3, 45.6)

Components

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:

-
<implementation.ruby script="CalculatorImpl.rb"/> -
+
<implementation.ruby script="CalculatorImpl.rb"/>
+

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:

-
<implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/> -
+
<implementation.ruby script="CalculatorImpl.rb" class="CalculatorImpl"/>
+

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 @@

References can be invoked from Ruby component implementations by the use of public attributes in the component implementation classes, like this:

-
class CalculatorImpl +
class CalculatorImpl
 
   # Define the public attribute that corresponds to the divideService reference
   attr_writer :divideService
@@ -215,26 +215,26 @@
 
 ...
 end
-
+

and in your composite file:

-
<component name="CalculatorComponent"> +
<component name="CalculatorComponent">
     <implementation.ruby script="CalculatorImpl.rb"/>
     <reference name="divideService">DivideComponent/DivideService</reference>
 </component>
-
+

Properties

A composite with a property defined for a component like so:

-
<component name="DivideComponent"> +
<component name="DivideComponent">
     <implementation.ruby script="DivideImpl.rb" class="DivideImpl"/>
     <property name="round">true</property>
 </component>
-
+

allows a public attribute of a Ruby component implementation class to be assigned the property value, so it can be used like so:

-
class DivideImpl +
class DivideImpl
 
   # Define the public attribute that corresponds to the round property
   attr_writer :round           
@@ -253,7 +253,7 @@
     res
   end
 end
-
+

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.

-

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.
  • @@ -61,8 +57,26 @@ A sample PHP client which calls the BigBank Web service and then deconstructs and displays the result by using the SDO for PHP extension. +

    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. +

    +

    bigwelcome.php
    + A bootstrap script that shows a form and allows the user to press a button + in order to invoke the bigaccount.php script +

    +

    bigaccount.php
    + 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. +

+

Additionally, there is the bigbank.accountmanagement.composite file. This + describes the configuration of the SCA Calculator composite deployed to the SCA + runtime. +

+
@@ -131,7 +145,8 @@

BigBank with Web Service client

    -
  1. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here. +
  2. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions + found here.
  3. Start the Axis2C simple http server:
      @@ -161,7 +176,8 @@

    BigBank with PHP web client

      -
    1. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here. +
    2. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions + found here.
    3. Start the Axis2C simple http server:
        @@ -177,13 +193,36 @@
      1. ./runwsserver.sh
    4. -
    5. Install the PHP web client: -
        -
      1. -
      +
    6. 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: + +

      Follow + these instructions to + install SDO and DAS. +

      +
    7. +
    8. 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: +
      # 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"
      +
    9. +
    10. Copy the <tuscany_sca_install_dir>/samples/BigBank/bigbank.phpwsclient + directory to your Apache document root directory (by default this is named 'htdocs'). +
    11. +
    12. Finally, start your Apache web server.
    13. Run the PHP web client by pointing your browser at - http://localhost/BigBank/welcome.php + http://localhost/bigbank.phpwsclient/welcome.php. + You should now be able to press the "GetAccount" button and see the values + returned from the BigBank SCA application.
    @@ -234,7 +273,8 @@

BigBank with Web Service client

    -
  1. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here. +
  2. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions + found here.
  3. Start the Axis2C simple http server:
      @@ -264,7 +304,8 @@

    BigBank with PHP web client

      -
    1. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions found here. +
    2. Ensure you have enabled Axis2C to run Tuscany SCA services. Follow the instructions + found here.
    3. Start the Axis2C simple http server:
        @@ -280,13 +321,83 @@
      1. ./runwsserver.bat
    4. -
    5. Install the PHP web client: -
        -
      1. -
      +
    6. 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: + +

      You can get Windows binary builds from + http://www.php.net/downloads.php. + For SDO you need two dlls as follows: +

      + +

      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) +

      extension=php_soap.dll
      +extension=php_sdo.dll
      +extension=php_sdo_das_xml.dll
      + I also changed the extension_dir directive to point to my extensions directory: +
      extension_dir="C:/php5.1.6/ext"
      +

      +

      When I ask PHP to list what modules are active in my version of PHP I get the + following: +

      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]
      + Of particular relevance to these scripts note that soap, sdo and sdo_das_xml are active. +

      +
    7. +
    8. 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: +
      # 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"
      +
    9. +
    10. Copy the <tuscany_sca_install_dir>/samples/BigBank/bigbank.phpwsclient + directory to your Apache document root directory (by default this is named 'htdocs'). +
    11. +
    12. Finally, start your Apache web server.
    13. Run the PHP web client by pointing your browser at - http://localhost/BigBank/welcome.php + http://localhost/bigbank.phpwsclient/welcome.php. + You should now be able to press the "GetAccount" button and see the values + returned from the BigBank SCA application.
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.

-

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.
  • @@ -56,6 +52,10 @@ 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. +

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.

-

There are four sub projects in this workspace:

+

There are three sub projects in this workspace:

  • sample.calculator
    This contains the Python scripts 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.
  • @@ -61,6 +57,11 @@ that 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. +

+
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.

-

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 RubyBank composite implementing the account services.
  • -
  • bigbank.accountmanagement
    - This contains the SCDL file describing the configuration of the SCA - RubyBank composite deployed to the SCA runtime. -
  • bigbank.client
    A sample client which does a local call to the RubyBank service.
  • -
+ +

Additionally, there is the bigbank.accountmanagement.composite file. This + describes the configuration of the SCA Calculator composite deployed to the SCA + runtime. +

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.

-

There are four sub projects in this workspace:

+

There are three sub projects in this workspace:

  • sample.calculator
    This contains the Ruby scripts 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.
  • @@ -57,6 +53,10 @@ that 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. +

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 @@
  • Change directory to STDCXX_HOME. Then build a debug version of the stdcxx library using the following command: -
    gmake BUILDDIR=$STDCXX_HOME/Debug BUILDTYPE=15d CONFIG=gcc.config
    +
    gmake BUILDDIR=$STDCXX_HOME/Debug BUILDTYPE=15d CONFIG=gcc.config
    This will create a sub-directory of STDCXX_HOME called Debug and place the build products below that.
  • For a release version the command is: -
    gmake BUILDDIR=$STDCXX_HOME/Release BUILDTYPE=12d CONFIG=gcc.config
    +
    gmake BUILDDIR=$STDCXX_HOME/Release BUILDTYPE=12d CONFIG=gcc.config
  • This provides Tuscany SDO with the versions of stdcxx that it needs for both @@ -94,29 +94,29 @@

  • Create two directories to contain the results of building stdcxx. The first is for the debug enabled version and must be: -
    <STDCXX_HOME>\Debug
    +
    <STDCXX_HOME>\Debug
  • The second is for the release (ie optimised) version and must be -
    <STDCXX_HOME>\Release
    +
    <STDCXX_HOME>\Release
  • 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: -
    .\generate.bat /BUILDDIR:<STDCXX_HOME>\Debug /CONFIG:VC71
    +
    .\generate.bat /BUILDDIR:<STDCXX_HOME>\Debug /CONFIG:VC71
    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.)
  • Repeat this operation for the release build, via the command: -
    .\generate.bat /BUILDDIR:<STDCXX_HOME>\Release /CONFIG:VC71
    +
    .\generate.bat /BUILDDIR:<STDCXX_HOME>\Release /CONFIG:VC71
  • Still using the MSVC++ 7.1 command window, set the default directory to one of the two build directories eg -
    cd <STDCXX_HOME>\Debug
    +
    cd <STDCXX_HOME>\Debug
  • Then launch the developer studio via -
    cd <STDCXX_HOME>\Debug
    +
    cd <STDCXX_HOME>\Debug
  • 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.
  • Repeat this process for the release version, setting the default directory to -
    cd <STDCXX_HOME>\Release
    +
    cd <STDCXX_HOME>\Release
    and choosing "12d Optimized Thread-safe Dll" as the build configuration.
  • 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