2012-07-25 2 views
6

У меня есть EJB-3 совместимы EJB, скажемEJB поколение 3 Заглушка

@Remote 
interface Hai{ 
    String sayHai(); 
} 
Stateless(name = "xxx", mappedname="yyy") 
public class HaiImpl implements Hai{ 
    public String sayHai(){ 
     return "Hai"; 
    } 
} 

И мне нужно, чтобы генерировать заглушки для этого EJB. но я не хочу использовать инструмент websphere или инструмент maven. Есть ли способ создания заглушки с помощью jdk?

При создании удаленного клиента

Hai hai = (Hai)ctx.lookup("yyy#com.zz.Hai"); 
System.out.println(hai.sayHai()); 

будет работать в WebLogic или JBoss, но в WebSphere, даже это EJB 3 вы должны написать, как этот

Object o = ctx.lookup("yyy"); 
Hai hai = (Hai)javax.rmi.PortableRemoteObject.narrow(o,Hai.class); 
System.out.println(hai.sayHai()); 

В этом случае, если заглушка не представляет на клиенте, он будет генерировать исключение, есть способ генерировать заглушку, используя инструмент websphere ejb stub generatorater. Но я не хочу использовать какие-либо специфические для платформы инструменты.

+0

Нужна ли генерация заглушек, мотивированных взаимодействием EJB 2.x или почему вы должны генерировать заглушки? –

+0

См. Вопрос о обновлении. –

ответ

4

Нет, вы должны использовать WAS_HOME/bin/createEJBStubs. Команда rmic, включенная в Java SDK, которая обычно используется для создания заглушек, не может использоваться на «чистых» EJB 3 удаленных интерфейсах, которые не распространяют java.rmi.Remote. Обратите внимание: если вы используете контейнер клиента приложения (WAS_HOME/bin/launchClient), или ваш «клиент» - это другой сервер, вам не нужно создавать заглушки: контейнер будет генерировать один для вас. Вам нужно использовать createEJBStubs, если вы используете неуправляемый thinclient.

0

Я создал файл maven-plugin wrapper для сценария createEJBStub.

Почему?

Это позволяет нам создавать тестовые проекты maven, которые выполняются как часть нашей установки CI против нашего приложения после развертывания.

Более конкретно вместе с Maven, это позволяет наш тестовый проект:

  1. Использование управления зависимостями Maven тянуть API банку, который мы публикуем на наше внутреннее хранилище связующей
  2. Создание классов Сто как часть «генерировать-источники» maven жизненный цикл
  3. Запустить тестовый пример junit против сервера приложений с EJB для проведения тестирования интеграции.