osgi-supplychain Sample ======================= The Tuscany OSGi supply chain sample shows using the Tuscany SCA runtime in a J2SE environment executing the SCA asynchronous API with OSGi and Java implementation types. If you just want to run it to see what happens open a command prompt, navigate to this sample directory and do: ant run OR if you don't have ant, on Windows do In the directory samples\osgi-supplychain use the JDK 1.5 java command to run the class supplychain.SupplyChainClient Linux: java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-osgi-supplychain.jar supplychain.SupplyChainClient Windows: java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-osgi-supplychain.jar supplychain.SupplyChainClient Results ---------- The sample when run should simply display on the standard output some startup messages followed by: Work thread Thread[Thread-1,5,main] - Order, submitted, fulfilled, shipped Sample Overview --------------- The sample provides a Customer service with a purchaseGoods operation and a notifyShipment operation annotated with the SCA @OneWay annotation. The SupplyChainClient exercises this interface by calling the purchaseGoods operation. This results in messages passing to the Retailer, Warehouse, and Shipper components and the result returned to the Customer service on a separate callback thread. The Customer and Shipper components are implemented as OSGi bundles which use implementation.osgi, while the Retailer and Warehouse components are implemented using implementation.java. src +---main +---java ¦ +---supplychain ¦ OSGiBundleImpl.java ¦ SupplyChainClient.java ¦ +---customer ¦ Customer.java ¦ JavaCustomerComponentImpl.java ¦ OSGiCustomerComponentImpl.java ¦ OSGiCustomerImpl.java ¦ +---retailer ¦ Retailer.java ¦ JavaRetailerComponentImpl.java ¦ OSGiRetailerComponentImpl.java ¦ OSGiRetailerImpl.java ¦ +---shipper ¦ Shipper.java ¦ JavaShipperComponentImpl.java ¦ OSGiShipperComponentImpl.java ¦ OSGiShipperImpl.java ¦ +---warehouse ¦ Warehouse.java ¦ JavaWarehouseComponentImpl.java ¦ OSGiWarehouseComponentImpl.java ¦ OSGiWarehouseImpl.java ¦ +---resources ¦ +---osgi ¦ Customer.mf ¦ Retailer.mf ¦ Shipper.mf ¦ Warehouse.mf ¦ +---ds ¦ Customer.mf ¦ Retailer.mf ¦ Shipper.mf ¦ Warehouse.mf ¦ Customer.xml ¦ Retailer.xml ¦ Shipper.xml ¦ Warehouse.xml ¦ Customer.componentType ¦ Retailer.componentType ¦ Shipper.componentType ¦ Warehouse.componentType ¦ supplychain.composite ¦-- supplychain.ds.composite build.xml - the Ant build file pom.xml - the Maven build file Understanding OSGI implementation files --------------------------------------- Some of the files introduced by OSGI implementation are explained below. OSG files related to customer. java are: OSGiCustomerComponentImpl.java: OSGi Declarative Services Implementation of the SCA Customer component. OSGiCustomerImpl.java: OSGi Procedural Services Implementation of the SCA Customer component. You notice the same pattern for shipper.java, retailer.java, SupplyChainClient.java. The rest of OSGI related files are: OSGiBundleImpl.java: Common code for OSGi Procedural Services Implementation of the SCA components resources/osgi/*.mf: Manifest files for OSGi bundles for OSGi procedural services implementation resources/osgi/ds/*.m:f Manifest files for OSGi bundles for OSGi declarative services implementation resources/osgi/ds/*.xml: OSGi Declarative services component xml files resources/*.componentType: Component types used by OSGi implementation provider for SCA resources/supplychain.composite: Composite file using OSGi and Java implementation types resources/supplychain.ds.composite: Composite file using OSGi (declarative services) and Java implementation types Building And Running The Sample Using Ant ----------------------------------------- cd osgi-supplychain ant compile ant run you should see: Buildfile: build.xml run: [java] Main thread Thread[main,5,main] [java] Started OSGi bundle with activator OSGiCustomerImpl [java] Started OSGi bundle with activator OSGiShipperImpl [java] Main thread sleeping ... [java] Work thread Thread[pool-1-thread-1,5,main] - Order, submitted, fulfi lled, shipped [java] Stop OSGi bundle with activator OSGiShipperImpl [java] Stop OSGi bundle with activator OSGiCustomerImpl Building And Running The Sample Using Maven ------------------------------------------- With either the binary or source distributions the sample can be built and run using Maven as follows. cd osgi-supplychain mvn You should see the following output from the test phase. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running supplychain.SupplyChainClientTestCase Started OSGi bundle with activator OSGiCustomerImpl Started OSGi bundle with activator OSGiShipperImpl Sleeping ... Work thread Thread[pool-1-thread-1,5,main] - Order, submitted, fulfilled, shippe d Test complete Stop OSGi bundle with activator OSGiShipperImpl Stop OSGi bundle with activator OSGiCustomerImpl Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.062 sec This shows that the Junit test cases have run successfully.