Возвращение суперкласса возвращаемого типа из удаленного метода EJB - PullRequest
1 голос
/ 07 апреля 2010

Допустим, у меня есть удаленный интерфейс A:

@Remote
public interface A {
  public Response doSomething();
}

И реализация:

@Stateless
public class B implements A {
  public BeeResponse doSomething() {...}
}

Где:

  • BeeResponse расширяет ответ.
  • Ответ находится в банке EJB-API, а BeeResponse - в банке реализации.
  • Response и BeeResponse имеют разные serialVersionUID .

Мое предположение состоит в том, что неуместность ответа от B потерпит неудачу, я прав?

Ответы [ 2 ]

1 голос
/ 07 апреля 2010

Ну, я протестировал этот запуск в OpenEJB, и он, кажется, ведет себя так, как я и предсказывал, клиент не понимает ответ от Бина, поскольку класс BeeResponse отсутствует в клиентской системе.

Работает до тех пор, пока клиент не начнет десериализовать ответ. Однако серийный UID версии не оказывает здесь никакого влияния, потому что клиент не может даже создать класс.

Все это теперь имеет смысл, но я как бы "надеялся", что найдется какая-то магия, которая заставит его работать: -)

0 голосов
/ 07 апреля 2010

Начиная с Java 5, это разрешено, поэтому должно работать. Я предлагаю попробовать и вернуться, если вы получите ошибку.

...