summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README')
-rw-r--r--sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README348
1 files changed, 348 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README b/sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README
new file mode 100644
index 0000000000..3683e84f02
--- /dev/null
+++ b/sca-java-1.x/tags/1.6.2-RC1/tutorials/store/README
@@ -0,0 +1,348 @@
+Store Tutorial
+==============
+
+This tutorial that shows how to use SCA and Tuscany to build multiple
+variations of an online Store application. The variations demonstrate the
+evolution of the Store as it goes through the following stages:
+
+1 - Initial online fruit store
+2 - Fruit store merges with vegetable store to form the fruit and vegetable store
+3 - The fruit and vegetable store moves to using a database for storing the cart
+4 - The fruit and vegetable store acts as a supplier to other online stores
+5 - The fruit and vegetable store ships their software solution to another geography
+6 - The fruit and vegetable store running in the enterprise
+
+For diagrams of the scenarios covered here, please refer to Tutorial.pdf
+
+Running The Tutorial Application
+--------------------------------
+
+If you're running the Store tutorial application for the first time since
+downloading the Tuscany SCA Java binary distribution, you need to start by
+running a setup step from the top-level store directory:
+
+ cd store
+ ant setup
+
+You only need to do this once. It creates some database files that are used
+by the tutorial application. If you forget to do it, you'll get errors when
+running some of the scenarios.
+
+Next, start the SCA Domain Manager:
+
+ cd domain
+ ant run
+
+Alternatively, on linux:
+
+ cd domain
+ java -jar ../../../modules/tuscany-node-launcher-1.6.2.jar domain
+
+and on windows:
+
+ cd domain
+ java -jar ..\..\..\modules\tuscany-node-launcher-1.6.2.jar domain
+
+Access the SCA Domain Manager application by pointing your Web browser at:
+
+ http://localhost:9990/ui/cloud/
+
+This shows you all of the Tuscany nodes that are configured to run
+in the store tutorial domain. If you are interested, the configuration
+is stored on disc in the store/domain directory but for now let's just
+start some nodes and see what happens.
+
+Starting nodes using the Domain Manager
+---------------------------------------
+
+The different nodes you see on the Cloud page are used to start different scenarios
+in the tutorial. Select the node you want to start (e.g StoreNode), then click the
+Start button. You may need to give the nodes a little time to start up. Check the
+console where you lauched the domain manager application and you will see the
+following message when nodes have started.
+
+INFO: INFO: Press 'q' to quit, 'r' to restart.
+
+Remember to shut down the nodes before you exit the domain manager application.
+
+Starting nodes from the command line
+------------------------------------
+
+When you start nodes using the Domain Manager, the nodes run in the same process
+as the Domain Manager. In some cases (e.g., debugging a node) it may be better
+to start each node in its own separate process using the command line. This can
+also be useful if you encounter problems with the Domain Manager becoming
+unresponsive or hanging.
+
+To start a node using the command line, open a separate command prompt for each
+node that you want to start. At the command prompt, enter
+
+ cd domain
+ ant run<nodename>
+
+You need to replace <nodename> by the name of the node that you are starting,
+excluding the "Node" suffix. For example, to start StoreNode you would enter
+
+ ant runStore
+
+When you start a node from the command line, the status column on the Cloud
+page of the Domain Manager doesn't update and the status column still shows
+the node as stopped even though it's running. This doesn't affect the correct
+operation of the node. To shut down the node, enter 'q' at the command prompt.
+
+Running the scenarios
+---------------------
+
+The following sections describe the nodes you need to start for each scenario
+and give some useful links to explore once the node has started.
+
+1 - Initial online fruit store
+------------------------------
+
+Start
+
+ StoreNode
+
+The store itself can be found at
+
+ http://localhost:8100/ui/
+
+If you want to look at how Tuscany provides remote bindings you can take
+a look at the service description that Tuscany created automatically
+for the store catalog service which is exposed over a JSONRPC binding
+Point your browser at:
+
+ http://localhost:8100/StoreCatalog?smd
+
+The service is configured in the SCA composite file in the following way:
+
+ <component name="StoreCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="currencyConverter" target="StoreCurrencyConverter"/>
+ </component>
+
+Note the inclusion of <t:binding.jsonrpc/>. This is all that is required to
+make this service available over JSONRPC. If you want to expose the service
+over web services simply add <binding.ws/> instead of (or as well as) <t:binding.jsonrpc/>.
+
+2 - Fruit store merges with vegetable store to form the fruit and vegetable store
+---------------------------------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ StoreMergerNode
+
+The store itself can be found at
+
+ http://localhost:8101/ui/
+
+Now you see that there are more items in the catalog as the fruit and
+vegetable catalogs are both providing content. The vegetable catalog
+that was introduced during the merger is contacted using web services.
+If you want to see the WSDL for the vegetable catalog point your browser
+at
+
+http://localhost:8200/VegetablesCatalogWebService?wsdl
+
+The vegetable catalog service is configured in an SCA composite file
+in the following way:
+
+ <component name="VegetablesCatalogWebService">
+ <implementation.java class="services.VegetablesCatalogImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ </component>
+
+3 - The fruit and vegetable store moves to using a database for storing the cart
+--------------------------------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ StoreDBNode
+
+The store itself can be found at
+
+ http://localhost:8102/ui/
+
+If you see an error at this stage, this probably means you haven't done the
+database setup mentioned in the section "Running The Tutorial Application".
+
+This looks the same as the scenario 2 store but this time a database is used
+for storing items put into the shopping cart. When you add items you
+will see messages on the console indicating that items are added to the
+database. For example.
+
+INFO: insert into Cart values ('cart-8c8bcc43-5036-4e9a-b282-0dd3d00d350c', 'Apple', '$2.99')
+
+This scenario shows how you change the implementation of a service without
+changing any of the configuration of the rest of the application
+
+4 - The fruit and vegetable store acts as a supplier to other online stores
+---------------------------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ StoreSupplierNode
+
+The store itself can be found at
+
+ http://localhost:8103/ui/
+
+Again this is the same basic store as in scenario 3. However this time the
+shopping cart and catalog services have been given additional remote bindings so that
+the services can be accessed by others. For example, take a look at the WSDL
+description of the shopping cart service that is now available at:
+
+ http://localhost:8333/ShoppinCartTotalWebService?wsdl
+
+This WSDL is available as the shopping cart total service is now configured with a web services
+binding in the following way:
+
+ <component name="StoreSupplierShoppingCart">
+ <implementation.java class="services.db.ShoppingCartTableImpl"/>
+ <property name="database">../store-supplier/target/cart-db</property>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ <binding.ws uri="/ShoppinCartTotalWebService"/>
+ </service>
+ </component>
+
+If you want to actually exercise these services from a standalone application
+you can run up the StoreClientNode by doing the following from a command prompt:
+
+ cd store-client
+ ant run
+
+5 - The fruit and vegetable store ships their software solution to another geography
+------------------------------------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ CurrencyNode
+ StoreEUNode
+
+The store itself can be found at
+
+ http://localhost:8104/ui/
+
+Notice now that the prices are quoted in Euros and the language is French. This was
+achieved by editing the store.html file to change the language and presentation to
+be appropriate for Europe. The currency was changed by reconfiguring the catalog
+component to use EUR instead of USD.
+
+ <component name="StoreEUCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">EUR</property>
+ ...
+ </component>
+
+6 - The fruit and vegetable store running in the enterprise
+-----------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ StoreEnterpriseNode
+
+Separately run from a command prompt:
+
+ cd domain
+ ant runWarehouseSpring
+
+This runs a launcher program which starts the node for the warehouse based on local
+configuration. It doesn't use the domain manager like the other nodes we started.
+It also starts an ActiveMQ broker via which JMS messages will pass.
+
+The store itself can be found at
+
+ http://localhost:8108/ui/
+
+The items in the catalog are much the same as the previous examples.
+This time though when you place the order a message is sent over JMS to
+the warehouse component running outside the domain and listening on JMS.
+In this case we have implemented the warehouse application using SCA and it
+has its own UI. The UI can be found at
+
+ http://localhost:8088/ui/
+
+If you press the Refresh button, you should see the orders accumulating.
+You can't do anything with the orders but it is just a demo.
+
+The warehouse component is configured in the composite file in the following way:
+
+ <component name="Warehouse">
+ <implementation.java class="services.WarehouseImpl"/>
+ <service name="Warehouse">
+ <t:binding.jsonrpc uri="http://localhost:8088/Warehouse"/>
+ <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+ jndiURL="tcp://localhost:61619">
+ <destination name="RequestQueue" create="ifnotexist"/>
+ <response>
+ <destination name="ResponseQueue" create="ifnotexist"/>
+ </response>
+ </binding.jms>
+ </service>
+ </component>
+
+And the shopping cart component that talks to it is configured as follows
+
+ <component name="StoreEnterpriseShoppingCart">
+ <implementation.java class="services.ShoppingCartImpl"/>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="warehouse" multiplicity="0..1" >
+ <binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
+ jndiURL="tcp://localhost:61619">
+ <destination name="RequestQueue" create="always"/>
+ <response>
+ <destination name="ResponseQueue" create="always"/>
+ </response>
+ </binding.jms>
+ </reference>
+ </component>
+
+
+For more detailed information about how to get started with Apache Tuscany
+see our online guides at:
+
+http://tuscany.apache.org/sca-java-getting-started-guides-1x.html
+
+
+Building the Store Tutorial Using Ant
+-------------------------------------
+With the binary distribution the complete store tutorial can be built using Ant
+as follows:
+
+ cd store
+ ant compile
+
+This also creates the database files that were mentioned in the section
+"Running The Tutorial Application".
+
+
+Building the Store Tutorial Using Maven
+---------------------------------------
+With either the binary or source distribution the complete store tutorial can
+be built using Maven as follows:
+
+ cd store
+ mvn
+
+This also creates the database files that were mentioned in the section
+"Running The Tutorial Application".