Доступ к базам данных из Javaпрограмм и проблемы русификации
d8671b56

Разработка серверного кода



Разработка серверного кода

После того как вы определили интерфейс к удаленному объекту, нужно выполнить следующий шаг - разработать код сервера. Сервер осуществляет объектный интерфейс и создает образцы объекта, который будет дистанционно-разделяем.

Для нашего примера это будет выглядеть следующим образом:

// LookupServer.java

import java.io.*; import java.util.*; import java.rmi.*; import java.rmi.server.*;

public class LookupServer extends UnicastRemoteObject implements Lookup { private Vector save = new Vector();

public LookupServer(String db) throws RemoteException { try { FileReader fr = new FileReader(db); BufferedReader br = new BufferedReader(fr); String s = null; while ((s = br.readLine()) != null) save.addElement(s); fr.close(); } catch (Throwable e) { System.err.println(ыexception«); System.exit(1); } }

public String findInfo(String info) { if (info == null) return null;

info = info.toLowerCase(); int n = save.size(); for (int i = 0; i < n; i++) { String dbs = (String)save.elementAt(i); if (dbs.toLowerCase().indexOf(info) != -1) return dbs; }

return null; }

public static void main(String args[]) { try { RMISecurityManager security = new RMISecurityManager(); System.setSecurityManager(security); String db = args[0]; LookupServer server = new LookupServer(db); Naming.rebind(ыLookupServer«, server); System.err.println(ыLookupServer ready...«); } catch (Throwable e) { System.err.println(ыexception: ы + e); System.exit(1); } } }

Сервер читает в текстовой базе номера телефонов и имена и сохраняет их внутренне. Метод findInfo ищет затем нужное имя и телефон.

Пример базы данных:

Ivanov, Ivan 295-0083
Petrov, Peter 775-9958
Romanov, Alexander 555-7779

Заметим, что LookupServer является расширением стандартного класса java.rmi.server.UnicastRemoteObject и выполняет Lookup. Один из этих классов обеспечивает некоторые базисные реквизиты, необходимые для удаленных объектов, а другой определяет методы, которые будут вызваны дистанционно.



Содержание раздела