У меня возникли серьезные проблемы с попыткой отправить общие пользовательские объекты между портлетами в liferay. У меня есть плагин Hook с фильтром сервлета, который загружает объект Type MyCustomClass и вставляет его в объект запроса в качестве параметра.Отправка пользовательских объектов через портлеты в liferay
Когда я пытаюсь прочитать этот объект в рендере портлета(), я получаю исключение ClassCastException, хотя я бросаю объект в тот же класс.
Я понимаю, что Liferay плагины имеют различные контексты, и я уже пытался изменить загрузчик классов перед загрузкой объекта в компоненте и портлета, как это:
ClassLoader portalcl = PortalClassLoaderUtil.getClassLoader();
ClassLoader currentcl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(portalcl);
//do my stuff
Thread.currentThread().setContextClassLoader(currentcl);
однако, это не решило проблему, и единственный способ решить эту проблему - сериализовать объект в строку json и десериализовать его всякий раз, когда мне это нужно.
Разве это не лак? Кто-нибудь знает лучшее решение?
С уважением, DS
Ну, я думаю, вы правы, это, по-видимому, самый законный подход, но это немного усложняет процесс развертывания для наших системных администраторов, поскольку мы все еще находимся на ранней стадии разработки и меняем эти классы. много. Таким образом, мы закончили использование json для отправки объектов из одного портлета в другой, пока мы не достигнем более твердого состояния, или пока liferay не исправит его. Спасибо за ваш отзыв ! – madoke
Эта ветка немного устарела, но мы закончили тем, что переместили все бобы в банку и поместили эту банку в каталог lib tomcat, как вы предложили. – madoke