OSGi + в спящем режиме

Идентификатор - это «заголовок» на странице и «заголовок» в ответе от первой функции. Однако, если вы сделаете их одинаковыми, вторая отменит первую (то есть то, что вы вернули из первой функции, будет перезаписано).

8
задан James McMahon 24 June 2009 в 15:15
поделиться

4 ответа

(Если Вы используете, в спящем режиме Аннотации),

Сохраните все загрузчики класса Объектов, когда Быть в спящем режиме пакету сообщат об аннотируемом классе.

Затем сделайте что-то вроде этого прежде, чем создать Ваш SessionFactory.

ClassLoad cl = Thread.currentThread().getContextClassLoader();
try {
 Thread.currentThread().setContextClassLoader(yourClassLoader);
 factory = cfg.buildSessionFactory(); 
}finally {
 Thread.currentThread().setContextClassLoader(cl);  // restore the original class loader
}
4
ответ дан 5 December 2019 в 15:26
поделиться

Существует два способа, которыми я могу думать для решения classloading-проблемы.

  • Вы связываетесь с определенной OSGi-платформой, или Вы хотите остаться максимально совместимыми? Или можно ли использовать равноденствие для реализации? В Равноденствии у Вас есть механизм по имени Buddy Classloading. Это дополнение позволяет Вам увеличивать видимость определенных классов между различными OSGi-пакетами. Если бы Вы интересуетесь этой темой, я хотел бы направить Вас к этим двум статьям: Понимая, как плагины Eclipse работают с OSGi, Eclipse - рассказ о двух VMs (и многих classloaders).
  • Если Вы предварительный друг для пребывания независимой OSGi-реализации, то Вы могли бы рассмотреть извлечение Ваших классов, которые Вы хотите сохранить в отдельный пакет, от которого зависят и Быть-в-спящем-режиме-пакет и Ваши другие пакеты. Тем путем у них всех есть доступ к определению класса сохраненных классов.
5
ответ дан 5 December 2019 в 15:26
поделиться

Просто найденный интересным методом в классе/API Пакета.

public java.lang.Class loadClass(java.lang.String name) throws java.lang.ClassNotFoundException

Это должно решить некоторые проблемы загрузчика класса?

1
ответ дан 5 December 2019 в 15:26
поделиться

Я собираюсь порекомендовать держаться подальше от загрузки классов друзей, поскольку это зависит от реализации Equinox в Eclipse и, в моем мнение, люди заставляют это работать, но они не понимают, почему, и все заканчивают как приятель всех остальных. Это мешает вам правильно понять, как работает загрузка классов OSGi и шаблоны, которые вам нужно использовать (загрузчики составных классов, загрузка классов контекста, службы OSGi, ...) для работы с ним.

Если ваш пакет персистентности знает заранее, по времени, какие типы ему необходимо сохранить, тогда пакет может импортировать все необходимые пакеты (Require-Bundle это зло), которые содержат классы вашего домена.

Управление загрузчиком классов контекста (как в ответе Роджера) может помочь с Hibernate, хотя я'

1
ответ дан 5 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

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