Что причинам люди для записи их собственного [закрытого] classloader

Преобразуйте свои даты в часовой пояс GMT, когда вы набиваете их в Mongo. Таким образом, никогда не возникает проблема с часовым поясом. Затем просто сделайте математику в поле twitter / timezone, когда вы вытащите данные для презентации.

24
задан Brett Hannah 25 February 2009 в 13:27
поделиться

10 ответов

Я в настоящее время работаю над чрезвычайно крупным приложением, которое высоко построено из модулей, т.е. оно состоит из буквально сотен файлов JAR. Это означало, что строка пути к классу стала огромной , вызвав все виды проблем во всех видах мест, из-за различной неспособности инструментов разработки иметь дело со строкой пути к классу 5 КБ. Это было решено путем записи пользовательского classloader, который читает его путь к классу из файла.

18
ответ дан Michael Borgwardt 28 November 2019 в 23:28
поделиться

Типичная причина состоит в том, что Ваше приложение размещает другие приложения, которые пользуются теми же библиотеками в различных версиях в том же времени выполнения (например, Tomcat). Таким образом, необходимо удостовериться, что classloader может обеспечить различные версии того же класса для каждого из этих приложений.

РЕДАКТИРОВАНИЕ :

Для разъяснения этого немного (см. беспорядок в комментариях): При высказывании "classloader" я ment "реализация java.lang.ClassLoader" не экземпляр такого класса. На самом деле это - Ваш classloader s в обоих значениях: люди Tomcat реализовали отличающийся ClassLoader - классы, и имейте еще больше экземпляров во времени выполнения... для получения дополнительной информации посмотрите соответствующие документы .

11
ответ дан Kai Huppmann 28 November 2019 в 23:28
поделиться

Скука и требование замучить моих коллег, когда они должны были поддержать мой код.:)

7
ответ дан dhable 28 November 2019 в 23:28
поделиться

Некоторые места на самом деле хранят классы в базе данных (хорошо раньше было местами, не уверенными, если больше существует), и используйте загрузчик класса для получения классов от базы данных во время выполнения.

3
ответ дан TofuBeer 28 November 2019 в 23:28
поделиться

Взгляните на этот вопрос .

1
ответ дан Community 28 November 2019 в 23:28
поделиться

Я должен был реализовать ClassLoder однажды, когда я хотел загрузить классы в .jar файлах из .jar файла (это было несколько лет назад, я уверен, что существуют инструменты теперь, которые могут сделать это для Вас). т.е. Вы поместили бы свою зависимость .jar файлы в один .jar файл.

, Но это - единственное время, по моему опыту, пишущий, что пользовательский ClassLoder является довольно редкой вещью.

2
ответ дан 28 November 2019 в 23:28
поделиться

Я столкнулся статья , которая говорит о том, почему (очень кратко) OSGI использует пользовательский Classloader.

1
ответ дан Parag 28 November 2019 в 23:28
поделиться

У нас была среда разработки приложения, которая имела приложения на основе его, которые были 'статически связаны'. Это означало, что у Вас должен был быть jvm экземпляр на приложение, которое Вы хотели запустить, который не был только плох для использования памяти, но и означал, что у Вас не могло быть супер приложения, из которого можно запустить различные приложения или любую легкую (немежпроцессную) коммуникацию между запущенными приложениями.

Начиная со всего этого был выполнен от webstart (т.е. с набором банок как путь к классу), решение предотвращения системы classloader от нахождения, что классы должны были сместить пакеты. Для expample, если бы у Вас было класс a.b.X в нечто приложения тогда, это было бы в файле банки как foo/a/b/X.class.

0
ответ дан mike g 28 November 2019 в 23:28
поделиться

В моем последнем задании мы реализовали сервер, который мог иметь "сменные логические определения запроса". (Клиент мог позвать запросы по имени, сервер искал зарегистрированный запрос для того имени и выполнил его).

определения запроса были кодом и/или метаданными, содержавшимися в банке.

банка была загружена на сервер хотя наше консольное приложение.

При загрузке (и позже когда перезапущенный сервер), наша платформа создаст загрузчик класса для банки для загрузки его в рабочий сервер.

0
ответ дан Scott Stanchfield 28 November 2019 в 23:28
поделиться

Я делал это один раз. Мы должны использовать API, предоставленный сторонним поставщиком, и этот API использует странную версию hibernate3.jar. Итак, нам пришлось загрузить этот конкретный jar-файл с пользовательским загрузчиком классов, чтобы избежать исключения «UID серийной версии».

0
ответ дан 28 November 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: