ภาษาจาวา- ตัวอย่างการสร้าง RMI(ต่อ)

ก็มาต่อกันเลยครับขั้นตอนต่อไปในการสร้าง rmi คือ

การสร้าง server ที่ process การทำงาน โดย server สร้าง object ที่ทำการ class implement ไว้และทำการลงทะเบียนไว้โดยใช้ชื่อบริการว่า registry โดยมันทำการใช้ method แบบ static ที่ชื่อว่า rebind ใน class Naming ใน package java.rmi สำหรับ method นี้ต้องการค่า arguments 2 ค่า อันแรกเป็น String ในการกำหนด URL ส่วนอีกอันเป็น ?remote object ที่จะอ้างอิง ส่วนค่า port default ของ rmi จะเป็น 1099 ซึ่งเราก็มาดูตัวอย่างภาษาจาวากันเลยดีกว่า

[sourcecode language=”java”]

import java.rmi.*;

public class HelloServer

{

private static final String HOST = “localhost”;

public static void main(String[] args)throws Exception

{

//Create a reference to an

// implementation object

HelloImpl temp = new HelloImpl();

//Create the String URL holding the

//object’s name ..

String rmiObjectName = “rmi://”+HOST+”/Hello”;

//Could omit host name here, since ‘localhost’

//would be assumed by default.

//Bind the object reference to the name…

Naming.rebind(rmiObjectName,temp);

//Display a message so that we know the process

//has been completed…

System.out.println(“Binding complete..\n”);

}

}

[/sourcecode]

จะเห็นว่ามีการใช้ method rebind ในการตรวจการให้บริการขั้นตอนต่อไปก็เป็นขั้นสุดท้ายสำหรับการเขียนโปรแกรมเพื่อใช้งานแบบ rmi อย่างง่ายแล้ว คือการสร้าง โปรแกรมทาง client เพื่อทำงาน client จะอ้างอิง remote object พา registry ที่ได้ทำไว้ และจะมีการใช้ method lookup ของ class Naming โดยมีการผ่านค่า URL และ object ที่ได้ทำการ registry ไว้ และ method lookup ได้คืนค่ามาเป็น Remote reference ดังนั้นต่อมีการ แปลงค่าโดยการ ใช้ (Hello) ซึ่งต่อไปก็ไปดูตัวอย่างโปรแกรมภาษาจาวากันดีกว่านะครับ

[sourcecode language=”java”]

import java.rmi.*;

public class HelloClient

{

private static final String HOST = “localhost”;

public static void main(String[] args)

{

try

{

//Obtain a reference to the object from the

//registry and typecast it into the appropriate

//type…

Hello greeting = (Hello)Naming.lookup(“rmi://”+HOST+”/Hello”);

//Use the above reference to invoke the remote

//object’s method//

System.out.println(“Message received:”+greeting.getGreeting());

}

catch (ConnectException conEx)

{

System.out.println(“Unable to connect to server!”);

System.exit(1);

}

catch(Exception ex)

{

ex.printStackTrace();

System.exit(1);

}

}

}

[/sourcecode]

ต่อไปก็จะเป็นการ complie ให้ใช้ command line ไปยัง directory ที่เก็บ source code แล้วทำการคอมไพล์ไฟล์ต่อไปนี้

javac Hello.java

javac HelloImpl.java

javac HelloServer.java

javac HelloClient.java

รูปตัวอย่างในการ complie

java example, java, java network programming, java socket programming, network programming, socket programming,การ เขียนโปรแกรมภาษาจาวา,ตัวอย่างจาวา, ภาษาจาวา,สอน network programming,  สอนจาวา

ต่อไปก็ทำการ complier rmi โดยใช้คำสั่ง rmic ?v1.2 HelloImpl หลังจากนั้นทำการ regis HelloImpl โดยใช้คำสั่ง rmiregistry จากนั้นก็เปิดหน้าต่างใหม่เพื่อทำการรัน server ?ดังรูป

rmi, โค้ดจาวา, สอนจาวา, ภาษาจาวา, java example, client server programming, socket programming, ตัวอย่างจาวา, ภาษาจาวา, สอนจาวา,

เมื่อรัน server แล้วก็ลองทำการรันโปรแกรม client ดังรูป

rmi, สอนจาวา, ตัวอย่างจาวา, socket programming, java socket programming , java example

จะเห็นว่าจะต้องมีการคอมไพล์แบบ rmi หลังจากทำการ regis ว่า object ไหนที่จะให้บริการบ้าง แล้วเครื่อง client ก็ต้องทำการอ้าง address และชื่อ object ที่ให้บริการ

Download Source code

Leave a Reply

Your email address will not be published. Required fields are marked *