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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RMI загрузчик классов отключен 
:(
    Опции темы
Fire44
Дата 1.10.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я делал программу по этому мануалу http://www.scs.ryerson.ca/mes/courses/cps5...TwoNumbers.html
Я компилировал и запустил клиент и сервер на одной машине в NetBeans 6.91
При запуске клиента вываливается ошибка
Код

Exception: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
        java.lang.ClassNotFoundException: addserver.AddServerIntf (no security manager: RMI class loader disabled) 


На стороне клиента в консоле: 127.0.0.1 5 6
Да, я запускал: start rmiregistry
Нет, я не срегенерировал заглушки, так как новая версия явы.
Да, я прописал PATH: C:\Sun\SDK\jdk\bin
Я так понял, если я компилирую в NetBeans, то мене не нужно прописывать CLASSPATH
Сам проект в NetBeans я закрепил, и вы можете скачать.




Это сообщение отредактировал(а) Fire44 - 1.10.2010, 23:50

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  NetBeansProjects.zip 42,81 Kb
PM MAIL   Вверх
jk1
Дата 2.10.2010, 16:33 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 75



Задайте в явном виде SecurityManager:
Код

System.setSecurityManager(new RMISecurityManager());

Правда после этого вы сразу получите исключение о том, что заданный менеджер запрещает работу по сети. Тут либо policy-файл с разрешениями (что более правильно), либо небольшая модификация задаваемого менеджера
Код

        System.setSecurityManager(new RMISecurityManager(){
            @Override
            public void checkConnect(String host, int port, Object context) {
            }

            @Override
            public void checkConnect(String host, int port) {
            }

            @Override
            public void checkListen(int port) {
            }

            @Override
            public void checkAccept(String host, int port) {
            }
        });



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Fire44
Дата 2.10.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



jk1 Куда, это все прописывать?
PM MAIL   Вверх
Fire44
Дата 2.10.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

 if (System.getSecurityManager() == null) 
        {
            System.setSecurityManager(new RMISecurityManager());
        }


У меня ошибка 

Код

Exception: java.rmi.NotBoundException: rmi://127.0.0.1/AddServer

PM MAIL   Вверх
jk1
Дата 4.10.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 2
Всего: 75



Раз пример совсем учебный, то можно registry стартовать из самого серверного кода и всех этих проблем избежать. Немного поправил Ваш пример до рабочего состояния. Запускать rmiregistry при этом больше не нужно.
Код

package addclient;

import addserver.AddServerIntf;

import java.rmi.Naming;

public class Main {


    public static void main(String[] args) {
        try {
            String addServerURL = "rmi://" + args[0] + "/AddServer";
            AddServerIntf addServerIntf = (AddServerIntf)Naming.lookup(addServerURL);
            System.out.println("The first number is: " + args[1]);
            System.out.println("The second number is: " + args[2]);
            System.out.println("The sum is: " + addServerIntf.add(Double.valueOf(args[1]), Double.valueOf(args[2])));
        }

        catch (Exception e) {
            System.out.println("Exception: " + e);
        }
    }
}

Код

package addserver;

import java.rmi.*;

public interface AddServerIntf extends Remote
{
   double add (double dl,  double d2) throws RemoteException;
}

Код

package addserver;

import java.rmi.*;
import java.rmi.server.*;

class AddServerImpl extends UnicastRemoteObject implements AddServerIntf
{

    public AddServerImpl()   throws RemoteException
    {

    }
    public double add(double dl, double d2) throws RemoteException
    {
        return dl + d2;
    }

}

Код

package addserver;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

public class Main {
    public static void main(String[] args) throws RemoteException {
        AddServerIntf addServerImpl = new AddServerImpl();
        LocateRegistry.createRegistry(1099).rebind("AddServer", addServerImpl);
    }
}



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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