Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изучаю RMI, не получается создать Stub и Skel 
V
    Опции темы
chaos
Дата 2.4.2009, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



День добрый!
Прочитал у Эккеля главу посвященную RMI. решил опробовать, но столкнулся с проблемами :(


последовательность моих действий:

ICar.java
Код

import java.rmi.*;
import java.awt.Color;

public interface ICar extends Remote {
    String getName() throws RemoteException;
    Color getColor() throws RemoteException;
}


Код

javac ICar.java


CarSrv.java
Код

public class CarSrv extends UnicastRemoteObject implements ICar {
    public final String NAME = "Mercedes-Benz C200";
    public final Color COLOR = Color.BLACK;

    public CarSrv() throws RemoteException {
    }

    public String getName() throws RemoteException {
        return NAME;
    }

    public Color getColor() throws RemoteException {
        return COLOR;
    }

    public static void main(String[] args) throws Exceptions {
        System.setSecurityManager(new RMISecurityManager());
        CarSrv srv = new CarSrv();
        Naming.rebind("rmi://penguin/CarSrv", srv);
    }
}


Код

javac CarSrv.java


Код

rmic CarSrv


в результате получается только CarSrv_Stub.class, а Эккель пишет что еще должен скелет получится :(
при запуске
Код

java CarSrv

вываливается:
Код

Exception in thread "main" java.security.AccessControlException: access denied (java.net.SocketPermission penguin resolve)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
    at java.security.AccessController.checkPermission(AccessController.java:553)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1188)
    at java.net.InetAddress.getAllByName(InetAddress.java:1127)
    at java.net.InetAddress.getAllByName(InetAddress.java:1063)
    at java.net.InetAddress.getByName(InetAddress.java:1013)
    at java.net.InetSocketAddress.<init>(InetSocketAddress.java:142)
    at java.net.Socket.<init>(Socket.java:198)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    at java.rmi.Naming.rebind(Naming.java:177)
    at CarSrv.main(CarSrv.java:16)


В чем моя проблема?

Заранее благодарен!


PS rmiregistry запущен
Код

chaos@penguin:/home$ pgrep rmiregistry
2526


Это сообщение отредактировал(а) chaos - 2.4.2009, 08:02
PM WWW   Вверх
ivg
Дата 2.4.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 3
Всего: 81



Цитата(chaos @  2.4.2009,  09:59 Найти цитируемый пост)
в результате получается только CarSrv_Stub.class, а Эккель пишет что еще должен скелет получится :(

Это уже устарело всё. Лучше читать документацию из JDK. Скелетоны устарели вааще давно.smile Стабы для Java 5.0+ тоже не нужны.

Цитата(chaos @  2.4.2009,  09:59 Найти цитируемый пост)
вываливается:

надо убрать 17-ю строку:
Код

        System.setSecurityManager(new RMISecurityManager());
 это для клиента и, по моему, тоже устарело.
PM MAIL   Вверх
chaos
Дата 3.4.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



почитал сановские маны(в топку старые книги) и все получилось

Вот что имеем smile
ICar.java
Код

package ru.kononenko.test;

import java.awt.Color;
import java.rmi.*;

public interface ICar extends Remote {
    Color getColor() throws RemoteException;
    String getName() throws RemoteException;
}


CarServer.java
Код

package ru.kononenko.test;

import java.awt.Color;
import java.rmi.registry.*;
import java.rmi.server.*;

public class CarServer implements ICar {
    private final String NAME = "Mercedes-Benz C200";
    private final Color COLOR = Color.BLACK;

    public static void main(String[] args) {
        try {
            CarServer obj = new CarServer();
            ICar stub = (ICar)UnicastRemoteObject.exportObject(obj, 0);

            Registry registry = LocateRegistry.getRegistry();
            registry.rebind("Car", stub);

            System.out.println("Server ready");
        }
        catch (Exception e) {
            System.err.println("Server exception " + e.toString());
            e.printStackTrace();
        }
    }

    public Color getColor() {
        return COLOR;
    }

    public String getName() {
        return NAME;
    }
}

CarClient.java
Код

package ru.kononenko.test;

import java.rmi.registry.*;

public class CarClient {
    public static void main(String[] args) {
        try {
            Registry r = LocateRegistry.getRegistry("penguin");
            ICar car = (ICar)r.lookup("Car");
            System.out.println("Car name " + car.getName());
            System.out.println("Car color " + car.getColor());
        }
        catch (Exception e) {
            System.err.print("Client exception " + e.toString());
            e.printStackTrace();
        }
    }
}


Далее 
все скомпилировал
запустил 
Код

rmiregistry &

запустил сервер
Код

chaos@penguin:~/NetBeansProjects/TestRMI/build/classes$ java -classpath $(pwd) 
-Djava.rmi.server.codebase=file:$(pwd)/ ru.kononenko.test.CarServer
Server ready


запустил тестовую апликуху
Код

chaos@penguin:~/NetBeansProjects/TestRMI/build/classes$ java 
-classpath $(pwd) ru.kononenko.test.CarClient
Car name Mercedes-Benz C200
Car color java.awt.Color[r=0,g=0,b=0]



ЗЫ повторюсь - не читайте старые(c неактуальной информацией) книги smile


Это сообщение отредактировал(а) chaos - 3.4.2009, 09:44
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.