Проблема синглетонов в контексте класс-лоадеров
От: Аноним  
Дата: 10.10.13 13:44
Оценка:
Все слышали про проблему синглетонов, когда кастомный лоадер может загрузить инстас того же класса.
К примеру, так


public static void main(String[] args) throws ClassNotFoundException,
            MalformedURLException, InstantiationException,
            IllegalAccessException {
            Main loader1 = new Main(new URL[] { new URL(
                "file:///C:/Users/Nastya/Desktop/") });
        Main loader2 = new Main(new URL[] { new URL(
                "file:///C:/Users/Nastya/Desktop/") });

        Class loadedClass1 = loader1.loadClass("LoadedClass", true);
        Class loadedClass2 = loader2.loadClass("LoadedClass", true);

    }


LoadedClass.class нету в класспасе системного лоадера, получается у нас есть два класса из удаленного источника.
Теперь, в коде я не могу использовать LoadedClass, т.к. будет ошибка компиляции: его нету в класспасе.

Если я сделаю loadedClass1.newInstance() и loadedClass2.newInstance() и те в свою очередь создадут синглетоны, то какая проблема тут с синглетонами вообще, если классы друг на друга не ссылаются, т.е. не видят и LoadedClass всегда будет ссылаться на текущий загрузчик? т.е. я понимаю что таким образом можно реализовать раздельную функциональность и поэтому не нужен совместный синглетон. Или в чем проблема?
Re: Проблема синглетонов в контексте класс-лоадеров
От: devcoach  
Дата: 10.10.13 14:14
Оценка:
Здравствуйте, Аноним, Вы писали:
Поясните свой вопрос, не совсем понятна его суть. Есть один класс, который загружен дважды разными класслоадерами, окей. Внутри класса есть какие-то синглтоны (статик поля?), окей. В чем вопрос?
Re: Проблема синглетонов в контексте класс-лоадеров
От: avpavlov  
Дата: 10.10.13 14:20
Оценка:
А>Все слышали про проблему синглетонов, когда кастомный лоадер может загрузить инстас того же класса.

С каких пор это стало проблемой? Этот эффект плотно используется в веб-серверах и серверах приложений.
Re: Проблема синглетонов в контексте класс-лоадеров
От: rfq  
Дата: 10.10.13 15:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Все слышали про проблему синглетонов, когда кастомный лоадер может загрузить инстас того же класса.


Я не слышал.

А>Если я сделаю loadedClass1.newInstance() и loadedClass2.newInstance() и те в свою очередь создадут синглетоны, то какая проблема тут с синглетонами вообще, если классы друг на друга не ссылаются, т.е. не видят и LoadedClass всегда будет ссылаться на текущий загрузчик? т.е. я понимаю что таким образом можно реализовать раздельную функциональность и поэтому не нужен совместный синглетон. Или в чем проблема?


Действительно, в чём проблема? Это вас надо спросить, как топикстартера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.