2015-01-02 3 views
1

Я использую текущую версию GlassFish 4.1 с включенной версией EclipseLink версии 2.5.2. На этом GlassFish у меня есть корпоративное приложение и развернутое веб-приложение. Если EJB, который возвращает загруженный объект, вызывается извне GlassFish (например, внешнее приложение JavaFX), объект возвращается должным образом.EclipseLink десериализует пустой объект объекта на удаленном вызове EJB

Но если тот же EJB вызывается из веб-приложения, объект не возвращается должным образом из-за этой ошибки GLASSFISH-17432.

Обходной я уже нашел здесь Calling Remote EJB in EJB 3.1 не реально решить эту проблему, потому что, если я отключу плетение в EclipseLink, следующий не работает более правильно:

@ManyToOne(fetch=FetchType.LAZY) 
public Foo getFoo() { 
    return foo; 
} 

@ManyToOne(fetch=FetchType.EAGER) 
public Bar getBar() { 
    return bar; 
} 

ответ

0

Вы можете попробовать static weaving в качестве другого обходного ,

Сопряжение байтового кода - это метод изменения байтового кода скомпилированных классов Java. Вы можете настроить кодирование байтового кода, чтобы включить число оптимизаций производительности EclipseLink JPA, включая поддержку для ленивой загрузки отношений один к одному и много-одному, отслеживания изменений на уровне атрибутов и групп выборки.

Ткачество может выполняться либо динамически, если классы объектов загружены, либо статически как часть процесса сборки.

(Source)

Как было предложено в GLASSFISH-16164 вы можете попробовать eclipselink-staticweave-maven-plugin. Подробное объяснение о статическом ткачестве и использовании плагина (альтернативно, вы можете использовать муравей) можно найти в EclipseLink Wiki.

Затем вы должны установить это свойство в вашем persistence.xml:

<property name="eclipselink.weaving" value="static"/> 

Смотрите также:

+0

Спасибо за ваш быстрый ответ. Я попробовал статическое плетение с помощью муравьиной задачи. Но возвращаемые объекты все еще пусты. Я думаю, не должно быть никакой разницы в использовании муравьев или maven для статического плетения, потому что bothe используют одни и те же eclipselink двоичные файлы. Может быть, проблема заключается в сочетании сериализации/де-сериализации стеклянной рыбы и расширенных объектов с расширением eclipselink? – bombadil

 Смежные вопросы

  • Нет связанных вопросов^_^