Tuscany Example Modified Calculator Cristian Fiorentino cristian fiorentinointel

  • Slides: 17
Download presentation
Tuscany Example: Modified Calculator Cristian Fiorentino cristian. fiorentino@intel. com March 9, 2007

Tuscany Example: Modified Calculator Cristian Fiorentino cristian. fiorentino@intel. com March 9, 2007

Intention n Show Tuscany q q q multi-language support on writing services different transport

Intention n Show Tuscany q q q multi-language support on writing services different transport bindings simplicity on changing among services implementations 1/18/2022 2

Scenario n A client needs to access to simple calculator operations: +, -, *,

Scenario n A client needs to access to simple calculator operations: +, -, *, / n We have different implementations of the calculator Java (local to client) Ruby (local to client) RMI invocation (remote) WS (running remotely on Tomcat) q q To distinguish among results, operations are performed in different ways for different languages: n q q 1/18/2022 Java: operation + 2 Ruby: operation + 1 RMI: operation + 4 WS: operation + 3 3

All Changes Just into a SCDL Definition SCDL 1 Java Component 1/18/2022 4

All Changes Just into a SCDL Definition SCDL 1 Java Component 1/18/2022 4

All Changes Just into a SCDL Definition SCDL 2 Rubi Component 1/18/2022 5

All Changes Just into a SCDL Definition SCDL 2 Rubi Component 1/18/2022 5

All Changes Just into a SCDL Definition Component SCDL 3 1/18/2022 RMI 6

All Changes Just into a SCDL Definition Component SCDL 3 1/18/2022 RMI 6

All Changes Just into a SCDL Definition Component SCDL 4 1/18/2022 WS 7

All Changes Just into a SCDL Definition Component SCDL 4 1/18/2022 WS 7

SCDL Definition (client) <component name="Calculator. Service. Component"> Comp <implementation. java class="calculator. Calculator. Service. Impl"/>

SCDL Definition (client) <component name="Calculator. Service. Component"> Comp <implementation. java class="calculator. Calculator. Service. Impl"/> <reference name="calculator. Service">? ? </reference> @Reference </component> Calculator. Service calculator. Service; <!-<component name="Calculator. Component"> <implementation. java class="calculator. Java. Calculator"/> <rb: implementation. rb script="Calculator. Impl. rb" class="Calculator. Impl"/> </component> <reference name="Calculator. Rmi. Service"> <interface. java interface="calculator. Calculator. Service"/> <rmi: binding. rmi host="localhost" port="9999" service. Name="rmi. Calculator"/> </reference> <reference name="Calculator. WSService"> <interface. wsdl xmlns: wsdli="http: //www. w 3. org/2006/01/wsdl-instance" interface="http: //calculator#wsdl. interface(Calculator)" wsdli: wsdl. Location="http: //calculator wsdl/calculator. wsdl" /> <binding. ws endpoint="http: //calculator#wsdl. endpoint (Calculator. Service/ Calculator. Service. SOAP 11 port)" location="wsdl/calculator. wsdl" /> </reference> --> 1/18/2022 8

1) Java Implementation Calculator Service (interface +, -, *, /) Calculator Component Client standalone

1) Java Implementation Calculator Service (interface +, -, *, /) Calculator Component Client standalone runtime 1/18/2022 java interface Java Implementation 9

SCDL Definition for Java Implementation <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service.

SCDL Definition for Java Implementation <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/> <reference name="calculator. Service"> Calculator. Component </reference> </component> <component name="Calculator. Component"> <implementation. java class="calculator. Java. Calculator"/> <!--rb: implementation. rb script="Calculator. Impl. rb" class="Calculator. Impl"/--> </component> <!-<reference name="Calculator. Rmi. Service"> <interface. java interface="calculator. Calculator. Service"/> <rmi: binding. rmi host="localhost" port="9999" service. Name="rmi. Calculator"/> </reference> <reference name="Calculator. WSService"> <interface. wsdl xmlns: wsdli="http: //www. w 3. org/2006/01/wsdl-instance" interface="http: //calculator#wsdl. interface(Calculator)" wsdli: wsdl. Location="http: //calculator wsdl/calculator. wsdl" /> <binding. ws endpoint="http: //calculator#wsdl. endpoint (Calculator. Service/ Calculator. Service. SOAP 11 port)" location="wsdl/calculator. wsdl" /> </reference> --> 1/18/2022 10

2) Ruby Implementation Calculator Service (interface +, -, *, /) Calculator Component Client standalone

2) Ruby Implementation Calculator Service (interface +, -, *, /) Calculator Component Client standalone runtime 1/18/2022 java interface Ruby Implementation 11

SCDL Definition for Ruby Implementation <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service.

SCDL Definition for Ruby Implementation <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/> <reference name="calculator. Service"> Calculator. Component </reference> </component> <component name="Calculator. Component"> <!--implementation. java class="calculator. Java. Calculator"/--> <rb: implementation. rb script="Calculator. Impl. rb" class="Calculator. Impl"/> </component> <!-<reference name="Calculator. Rmi. Service"> <interface. java interface="calculator. Calculator. Service"/> <rmi: binding. rmi host="localhost" port="9999" service. Name="rmi. Calculator"/> </reference> <reference name="Calculator. WSService"> <interface. wsdl xmlns: wsdli="http: //www. w 3. org/2006/01/wsdl-instance" interface="http: //calculator#wsdl. interface(Calculator)" wsdli: wsdl. Location="http: //calculator wsdl/calculator. wsdl" /> <binding. ws endpoint="http: //calculator#wsdl. endpoint (Calculator. Service/ Calculator. Service. SOAP 11 port)" location="wsdl/calculator. wsdl" /> </reference> --> 1/18/2022 12

3) RMI Implementation Calculator Service (interface +, -, *, /) Calculator client RMI binding

3) RMI Implementation Calculator Service (interface +, -, *, /) Calculator client RMI binding standalone runtime 1/18/2022 Reference java interface java implementation standalone runtime 13

SCDL Definition for RMI <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/>

SCDL Definition for RMI <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/> <reference name="calculator. Service"> Calculator. Rmi. Service </reference> </component> <!-<component name="Calculator. Component"> <implementation. java class="calculator. Java. Calculator"/> <rb: implementation. rb script="Calculator. Impl. rb" class="Calculator. Impl"/> </component> --> <reference name="Calculator. Rmi. Service"> <interface. java interface="calculator. Calculator. Service"/> <rmi: binding. rmi host="localhost" port="9999" service. Name="rmi. Calculator"/> </reference> <!-<reference name="Calculator. WSService"> <interface. wsdl xmlns: wsdli="http: //www. w 3. org/2006/01/wsdl-instance" interface="http: //calculator#wsdl. interface(Calculator)" wsdli: wsdl. Location="http: //calculator wsdl/calculator. wsdl" /> <binding. ws endpoint="http: //calculator#wsdl. endpoint (Calculator. Service/ Calculator. Service. SOAP 11 port)" location="wsdl/calculator. wsdl" /> </reference> --> 1/18/2022 14

4) WS Implementation Calculator Service (interface +, -, *, /) Calculator client Web Services

4) WS Implementation Calculator Service (interface +, -, *, /) Calculator client Web Services binding standalone runtime 1/18/2022 Reference WSDL java implementation Web. App runtime 15

SCDL Definition for WS <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/>

SCDL Definition for WS <component name="Calculator. Service. Component"> <implementation. java class="calculator. Calculator. Service. Impl"/> <reference name="calculator. Service">Calculator. WSService</reference> </component> <!-<component name="Calculator. Component"> <implementation. java class="calculator. Java. Calculator"/> <rb: implementation. rb script="Calculator. Impl. rb" class="Calculator. Impl"/> </component> <reference name="Calculator. Rmi. Service"> <interface. java interface="calculator. Calculator. Service"/> <rmi: binding. rmi host="localhost" port="9999" service. Name="rmi. Calculator"/> </reference> --> <reference name="Calculator. WSService"> <interface. wsdl xmlns: wsdli="http: //www. w 3. org/2006/01/wsdl-instance" interface="http: //calculator#wsdl. interface(Calculator)" wsdli: wsdl. Location="http: //calculator wsdl/calculator. wsdl" /> <binding. ws endpoint="http: //calculator#wsdl. endpoint (Calculator. Service/ Calculator. Service. SOAP 11 port)" location="wsdl/calculator. wsdl" /> </reference> 1/18/2022 16

WS/RMI Calculator Implementation Calculator Service Component Zo om In + Calculator * / Calculator

WS/RMI Calculator Implementation Calculator Service Component Zo om In + Calculator * / Calculator Service (interface +, -, *, /) 1/18/2022 17