TUSCANY SCA JAVA (三) 綁定為RMI服務

來源:互聯網
上載者:User

在TUSCANY SCA JAVA (二)中所實現的電腦中所有的訪問都是本地,產生的所有構件,調用構件都是在本地tuscany容器中進行的,下面我來進行遠程調用,這才是tuscany的真正長處所在。我們還是利用TUSCANY
SCA JAVA (二)中的代碼,只需要修改和.composite檔案和增加一個服務端和用戶端的類就可以進行測試了。

在這裡我們計算機構件綁定為RMI服務,只續修改之前的.composite檔案而已,如下:

Culcalator.composite

<?xml version="1.0" encoding="UTF-8"?><composite xmlns="http://www.osoa.org/xmlns/sca/1.0"xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"targetNamespace="http://calc"xmlns:c="http://calc"name="Calculator" ><component name="CalculatorServiceComponent"><implementation.java class="com.ajun.tuscany.server.Calculator" /><service name="Calculator"><interface.java interface="com.ajun.tuscany.server.ICalculator"/><tuscany:binding.rmi port="8099" host="localhost" serviceName="CalculatorRMIService" /></service><reference name="add" target="AddComponent"/><reference name="subtract" target="SubtractComponent"/><reference name="multiply" target="MultiplyComponent"/><reference name="divide" target="DivideComponent"/></component><component name="AddComponent"><implementation.java class="com.ajun.tuscany.server.Add" /></component><component name="SubtractComponent"><implementation.java class="com.ajun.tuscany.server.Subtract" /></component><component name="MultiplyComponent"><implementation.java class="com.ajun.tuscany.server.Multiply" /></component><component name="DivideComponent"><implementation.java class="com.ajun.tuscany.server.Divide" /></component></composite>

綁定為RMI服務只需添加

<service name="Calculator">
<interface.java interface="com.ajun.tuscany.server.ICalculator"/>
<tuscany:binding.rmi port="8099" host="localhost" serviceName="CalculatorRMIService" />
</service>

服務的名稱為:Calculator 這裡必須和你的實作類別一個名字,需要注意一下

<interface.java interface="com.ajun.tuscany.server.ICalculator"/> 透漏給外部存取的介面

<tuscany:binding.rmi port="8099" host="localhost" serviceName="CalculatorRMIService" /> RMI服務端ip和連接埠號碼、RMI服務的服務名稱,以後供外界訪問的名字

這樣就將電腦構件綁定為RMI服務了。

編寫一個服務類來啟動RMI服務。

CalculatorRMIServer.java

package com.ajun.tuscany.server;import java.io.IOException;import org.apache.tuscany.sca.host.embedded.SCADomain;/** * RMI服務端啟動 * @author ajun * @e-mail zhaojun2066@gmail.com * @blog http://blog.csdn.net/ajun_studio * @version 建立時間:2012-7-23  下午9:44:32 */public class CalculatorRMIServer {/** * @param args * @throws IOException  */public static void main(String[] args) throws IOException {System.out.println("將SCA組件作為RMI介面供外界訪問.......");SCADomain domain = SCADomain.newInstance("com/ajun/tuscany/server/Calculator.composite");System.out.println("斷行符號鍵推車.......");System.in.read();domain.close();System.out.println("退出.......");System.exit(0);}}

運行上面的類出現一下資訊:

將SCA組件作為RMI介面供外界訪問.......2012-7-23 22:32:10 org.apache.tuscany.sca.node.impl.NodeImpl <init>資訊: Creating node: com/ajun/tuscany/server/Calculator.composite2012-7-23 22:32:12 org.apache.tuscany.sca.node.impl.NodeImpl configureNode資訊: Loading contribution: file:/E:/springdm/Calculator_rmi/bin/2012-7-23 22:32:14 org.apache.tuscany.sca.node.impl.NodeImpl start資訊: Starting node: com/ajun/tuscany/server/Calculator.composite斷行符號鍵推出.......

用戶端代碼:CalculatorRMIClient.java

package com.ajun.tuscany.client;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.NotBoundException;import java.rmi.RemoteException;import com.ajun.tuscany.server.ICalculator;/** * RMI用戶端 * @author ajun * @e-mail zhaojun2066@gmail.com * @blog http://blog.csdn.net/ajun_studio * @version 建立時間:2012-7-23  下午9:44:44 */public class CalculatorRMIClient {/** * @param args * @throws NotBoundException  * @throws RemoteException  * @throws MalformedURLException  */public static void main(String[] args) throws MalformedURLException, RemoteException, NotBoundException {ICalculator c= (ICalculator) Naming.lookup("//localhost:8099/CalculatorRMIService");System.out.println("3 + 2 = "+c.add(3, 2));System.out.println("3 - 2 = "+c.subtract(3, 2));System.out.println("3 * 2 = "+c.multiply(3, 2));System.out.println("3 / 2 = "+c.divide(3, 2));}}

運行以上代碼:

3 + 2 = 5.03 - 2 = 1.03 * 2 = 6.03 / 2 = 1.5

代碼結構如下:其餘代碼參考TUSCANY SCA JAVA (二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.