Передача двоичных данных с помощью приложения веб-службы, часть 2: создание модуля EJB
Задача этого руководства состоит в создании модуля EJB, представляющего два метода: один для предоставления одиночного изображения, а второй – для предоставления всех изображений. Как правило, изображения поступают из базы данных. Так как поиск в базе данных выходит за рамки этого руководства, изображения будут просто размещены в папке ресурсов внутри нашего модуля EJB.
Ниже приведена процедура создания компонента Enterprise Java Bean (EJB), содержащего изображения, передаваемые веб-службой в виде двоичных данных.
Создание модуля EJB:
Выберите "File > New Project" (Ctrl-Shift-N). Откроется мастер создания проекта. Выберите "EJB Module" в категории "Enterprise" и нажмите кнопку "Next". Откроется страница "Name and Location".
Введите FlowerAlbum в поле "Project Name". Выберите расположение, требуемое для этого проекта: это расположение следует использовать и для других проектов, создаваемых для данного сквозного приложения. Примите значения по умолчанию для остальных параметров и нажмите кнопку "Next". Откроется страница "Server and Settings".
Выберите сервер приложений и версию Java EE. Эти значения должны совпадать для всех проектов в сквозном приложении. В результате создается проект модуля EJB, аналогичный приведенному в окне "Projects" на рисунке ниже:
Щелкните правой кнопкой мыши узел проекта FlowerAlbum и выберите "New > Session Bean". В качестве альтернативы, щелкните правой кнопкой мыши узел проекта и выберите "New > Other". В мастере создания файла выберите "Session Bean" в области "Enterprise". Откроется мастер создания сеансного компонента "New Session Bean".
Назовите сеансный компонент Flower и присвойте имя пакета flower.album. Обязательно выберите "Stateless" и "Remote". Экран должен выглядеть следующим образом:
Нажмите кнопку "Finish".
В результате к узлу "Source Packages" добавляется сеансный компонент вместе с удаленным интерфейсом, как показано на этом рисунке. В узле "Enterprise Beans" добавляется новый узел для нового компонента FlowerBean:
Щелкните правой кнопкой мыши узел "FlowerBean" и выберите "Add > Business Method". Откроется диалоговое окно "Business Method".
Введите следующие значения в диалоговом окне "Business Method":
Name:getFlower
Return Type:byte[]
Нажмите кнопку "Add". В поле "Name" введите name. Остальные значения изменять не требуется. Экран должен выглядеть следующим образом:
Перейдите к вкладке "Exceptions". Нажмите кнопку "Add". Откроется диалоговое окно "Find Type". Введите "IO" и выберите IOException (java.io).
Нажмите кнопку "OK". Выполняется возврат в диалоговое окно "Business Method", в котором отображается "IOException".
Нажмите кнопку "OK". Теперь в классе компонента имеется основа для метода, а в классе удаленного интерфейса – объявление метода.
Снова вызовите диалоговое окно "Business Method". На сей раз введите следующие значения:
Name:allFlowers
Return Type:List<byte[]>
Добавьте IOException на вкладку "Exceptions", как прежде. После обработки открывающихся диалоговых окон в среде IDE будет создан соответствующий метод.
В классе удаленного интерфейса обратите внимание на то, что необходимые методы созданы при выполнении предыдущих действий:
Рассмотрите класс компонента и заглушки, созданные для объявленных методов:
@Stateless
public class FlowerBean implements FlowerRemote {
public byte[] getFlower(String name) throws IOException {
return null;
}
public List<byte[]> allFlowers() throws IOException {
return null;
}
}
В качестве альтернативы можно добавить код класса компонента и класса удаленного интерфейса вручную с помощью диалогового окна "Business Method". Однако в случае использования диалогового окна "Business Method" код одновременно добавляется как в класс компонента, так и в класс удаленного интерфейса.
Исправьте импортированный код в классах компонента удаленного интерфейса. Для каждого класса установите курсор в любое место кода, щелкните правой кнопкой мыши и выберите в контекстном меню "Fix Imports". Откроется диалоговое окно, в котором показан весь необходимый импортированный код. Для создания всех необходимых операторов импорта в NetBeans нажмите кнопку "OK". В качестве альтернативы можно нажать комбинацию клавиш Ctrl-Shift-I в каждом классе для открытия диалогового окна импорта.
Теперь в удаленном интерфейсе объявлены методы, а в классе компонента реализованы заглушки.
В окне "Projects" теперь должны отображаться два новых узла под узлом "Enterprise Beans", соответствующих новым методам, как показано на следующем рисунке:
Заполните класс компонента следующим кодом для представления одиночного изображения или всех изображений:
@Stateless
public class FlowerBean implements FlowerRemote {
private static final String[] FLOWERS = {"aster", "honeysuckle", "rose", "sunflower"};
public byte[] getFlower(String name) throws IOException {
URL resource = this.getClass().getResource("/flower/album/resources/"+name+".jpg");
return getBytes(resource);
}
public List<byte[]> allFlowers() throws IOException {
List<byte[]> flowers = new ArrayList<byte[]>();
for (String flower:FLOWERS) {
URL resource = this.getClass().getResource("/flower/album/resources/"+flower+".jpg");
flowers.add(getBytes(resource));
}
return flowers;
}
private byte[] getBytes(URL resource) throws IOException {
InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int read; (read = in.read(buf)) != -1;) {
bos.write(buf, 0, read);
}
return bos.toByteArray();
}
}
Создайте новый подпакет с именем resources. Скопируйте в этот пакет следующие изображения:
Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для Java EE с помощью среды IDE NetBeans можно в списке рассылки .