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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PortableRemoteObject, почему не cast 
:(
    Опции темы
ZAVS
Дата 24.3.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

ConverterHome home =(ConverterHome) PortableRemoteObject.narrow(objref,ConverterHome.class);


подскажите что делает метод narrow
и почему не используем ппосто cast smile
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 24.3.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



этo фишка RMI-IIOP. Он прдоставляет возможости CORBA, значит может "говорить" не только с Java приложениями. IIOP протокол нe был разработан для Java, это часть стандарта CORBA. Потому переданный объект нельзя просто кастить в Java объект, а нужно сначалa проверить, является ли он нужным нam объектом. PortableRemoteObject.narrow это и делает.


--------------------

PM   Вверх
ZAVS
Дата 25.3.2005, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо!!!!

а если заранее знаем что передаются обьекты java без PortableRemoteObject программа будет правильно работать???
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 25.3.2005, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Нет, если пользуешь RMI-IIOP. Это в обычном RMI можно.


--------------------

PM   Вверх
ZAVS
Дата 25.3.2005, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



a какой механизм используется когда при помощи JNDI y ejb сервера получаем обьекты (home или remote )??
без PortableRemoteObject можем обойтись???
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 25.3.2005, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(ZAVS @ 24.3.2005, 17:57)
a какой механизм используется когда при помощи JNDI y ejb сервера получаем обьекты (home или remote )??
без PortableRemoteObject можем обойтись???


Нельзя если бин не локальный. Если локальный - можно просто lookupом.


--------------------

PM   Вверх
ZAVS
Дата 25.3.2005, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



насколько я понял обьекты передаются "не java smile" виде и прежде чем их использовать нужно их
перевести в "java" вид, а потом кастить

а что будет если получим не "java" обьект ????
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 25.3.2005, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(ZAVS @ 24.3.2005, 18:29)
насколько я понял обьекты передаются "не java smile" виде и прежде чем их использовать нужно их
перевести в "java" вид, а потом кастить


Объекты -то java, просто му проверяем что можно сделать такой кастинг.


Цитата(ZAVS @ 24.3.2005, 18:29)
а что будет если получим не "java" обьект ????

ClassCastException smile


--------------------

PM   Вверх
ZAVS
Дата 25.3.2005, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Domestic @ 25.3.2005, 03:38)
Объекты -то java, просто му проверяем что можно сделать такой кастинг.


может я что-то не понялsmile

почему сразу не кастить а потом, если будет не тот обьект поймать ClassCastException smile
и почему прежде чем кастить не можем использовать instance of
smile smile smile

Это сообщение отредактировал(а) ZAVS - 25.3.2005, 04:08
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 25.3.2005, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



В общем, легче посмотреть на сорс этого метода
Код

public java.lang.Object narrow ( java.lang.Object narrowFrom, 
    java.lang.Class narrowTo) throws ClassCastException 
    {
        java.lang.Object result = null;

        if (narrowFrom == null)
            return null;

        if (narrowTo == null) 
            throw new NullPointerException("invalid argument");

        try { 
            if (narrowTo.isAssignableFrom(narrowFrom.getClass())) 
                return narrowFrom;

        // Is narrowTo an interface that might be
        // implemented by a servant running on iiop?
        if (narrowTo.isInterface() && 
        narrowTo != java.io.Serializable.class &&
        narrowTo != java.io.Externalizable.class) {
    
        org.omg.CORBA.Object narrowObj 
            = (org.omg.CORBA.Object) narrowFrom;                
        
        // Create an id from the narrowTo type...
        String id = RepositoryId.createForAnyType(narrowTo);
        
        if (narrowObj._is_a(id)) {
            return Utility.loadStub(narrowObj,narrowTo);
        } else {
            throw new ClassCastException( "Object is not of remote type " +
            narrowTo.getName() ) ;
        }
        } else {
        throw new ClassCastException( "Class " + narrowTo.getName() + 
            " is not a valid remote interface" ) ;
        }
        } catch(Exception error) {
        ClassCastException cce = new ClassCastException() ;
        cce.initCause( error ) ;
        throw cce ;
        }
    }


Он проверяет, является ли первый аргумент инстансом класса или сабкласса второго аргумента:
Код
            
if (narrowTo.isAssignableFrom(narrowFrom.getClass())) 
                return narrowFrom;

Если нет, то смотрит, если это CORBA объект, то пытается вернуть стаб к нему, если нет, то бросает иксепшн.


--------------------

PM   Вверх
ZAVS
Дата 26.3.2005, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



большое спасибо!!!

еще один вопрос:

насколько я понял в ejb нам нужна только первая часть этого метода??


--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 26.3.2005, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(ZAVS @ 25.3.2005, 15:13)
еще один вопрос:

насколько я понял в ejb нам нужна только первая часть этого метода??


В каком смысле первая часть? ejb использует RMI-IIOP, а потому нужен весь метод.


--------------------

PM   Вверх
ZAVS
Дата 26.3.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я думал что ejb не использует corba обьекты smile
--------------------
Учись студент доцентом станешь :)
PM MAIL ICQ   Вверх
Domestic Cat
Дата 26.3.2005, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172





--------------------

PM   Вверх
ZAVS
Дата 26.3.2005, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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