Calculator RMI Service Sample ============================= This sample illustrates the use of Tuscany RMI Binding to expose component services as Java RMI Services. It also demonstrates how a simple Java RMI Client application invokes the SCA Application's services exposed as RMI Services. The README in the samples directory (the directory above this) provides general instructions about building and running samples. Take a look there first. 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 java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-rmi-service.jar calculator.CalculatorServer and on *nix do java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-calculator-rmi-service.jar calculator.CalculatorServer Now you have the server running you need to open another command prompt, navigate to the calculator-rmi-reference sample directory and do: ant run OR if you don't have ant, on Windows do java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-rmi-reference.jar calculator.CalculatorClient and on *nix do java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-calculator-rmi-reference.jar calculator.CalculatorClient Sample Overview --------------- This sample extends the calculator sample by replacing the local service binding with an RMI binding. SO a java client can call the service exposed by the SCA application using an RMI client. This sample adds a number of classes to the basic calculator sample: calculator-rmi-service/ src/ main/ java/ calculator/ CalculatorService.java - as calculator sample CalculatorServiceImpl.java AddService.java - as calculator sample AddServiceImpl.java SubtractService.java - as calculator sample SubtractServiceImpl.java MultiplyService.java - as calculator sample MultiplyServiceImpl.java DivideService.java - as calculator sample DivideServiceImpl.java CalculatorClient.java - (Not currently used) Uses the java naming service to look up the Calculator RMI service. It then calls add, subtract, multiple and divide methods on the service CalculatorServer.java - starts the SCA Runtime and deploys the CalculatorRMIServer.composite. In doing this the SCA RMI binding acts to expose the CalculatorService over RMI. resources/ CalculatorRMIServer.composite - the SCA assembly for this sample test/ java/ calculator/ CalculatorRMIServerTestCase.java - JUnit test case calculator-rmi-service.png - a pictorial representation of the .composite file build.xml - the Ant build file for the server pom.xml - the Maven build file Note. As this test creates and uses local network connections you may need to configure your firewall, if you are running one, to allow the test to run successfully. Building And Running The Sample Using Ant ----------------------------------------- With the binary distribution the sample can be built and run using Ant. Two build files are used to support client and server functions. The server starts the SCA runtime and loads the SCA calculator application which exposes an RMI service. Start a new console and use the following commands. cd calculator-rmi-service ant compile ant run This will run up the server and display the following. run: [java] Starting of the SCA Calculator Application exposed as RMI Services... [java] ...Press Enter to Exit... The client is very similar to the calculator sample It locates the RMI service that the SCA runtime is exposing and calls each of the calculator operations. Start a new console and use the following commands. cd calculator-rmi-reference ant compile ant run You should see the following output from the run target. run: [java] 3 + 2=5.0 [java] 3 - 2=1.0 [java] 3 * 2=6.0 [java] 3 / 2=1.5 If you now return to the console window running the server and press enter the server should stop. 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 calculator-rmi-service mvn You should see the following output from the test phase. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running calculator.CalculatorRMIServerTestCase Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.819 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 This shows that the Junit test cases have run successfully.