Продолжаем исследовать гламурные технологии. На этот раз затронем тему веб сервисов и использования аннотаций. Посмотрим как работает dependency injection на сервере приложений JBoss 4.2.
Итак, для простоты понимания, я разбил свой пример на три проекта. Первый будет содержать сам веб сервис, второй консольного клиента веб сервиса, третий простой сервлет для наглядной работы сервиса при передаче байтовых данных. Другими словами сервлет в третьем примере будет обращаться с сервису и выводить картинку.
Все очень просто..
Создадим новый Java проект в среде разработки Eclipse или любой другой как Вам удобнее. Подключим к проекту библиотеки. Скажу сразу я буду использовать только те библиотеки что идут в поставке сервера приложений JBoss 4.2 ну и конечно же JRE. У меня версия jre1.5.0_10. Вот список библиотек, которые я использовал:
Напишем интерфейс нашего сервиса:
package service.ejb;
import javax.ejb.Remote;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@Remote
@WebService(name = "TestService")
@SOAPBinding(style=Style.DOCUMENT, use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public interface IJBossService {
@WebMethod
public String testString( @WebParam(name = "parameter") String parameter);
@WebMethod
public byte[] blobTest();
@WebMethod
public Boolean booleanTest( @WebParam(name = "parameter") boolean parameter);
@WebMethod
public int intTest(
@WebParam(name = "parameter1") int parameter1,
@WebParam(name = "parameter2") int parameter2);
}
А вот имплементация сервиса:
package service.ejb;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.ejb.Stateless;
import javax.jws.WebService;
import org.jboss.system.server.ServerConfigLocator;
@Stateless
@WebService(endpointInterface="service.ejb.IJBossService", serviceName="JBossService")
public class JBossService implements IJBossService {
public String testString(String parameter) {}
public byte[] blobTest() {
byte[] fileArray = null;
try {
File file = new File("c:/image.jpg");
InputStream is = new FileInputStream(file);
long length = file.length();
fileArray = new byte[(int)length];
int offset = 0;
int numRead = 0;
while ((offset < fileArray.length) && ((numRead=is.read(fileArray, offset,fileArray.length-offset)) >= 0)){
offset += numRead;
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return fileArray;
}
public Boolean booleanTest(boolean parameter) {
return !parameter;
}
public int intTest(int parameter1, int parameter2) {
return parameter1+parameter2;
}
}
Это все.
Как видим, использование аннотаций, значительно упрощает работу программиста. Но не стоит расслабляться подводные камни появяться когда Вы начнете делать реальное приложение.
Microgames.ru v.2 - Новости, примеры, статьи о программировании.
Сделано в 2006 году. Перевыпущен в 2008 году.
Сайт содержит оригинальные материалы и переводы.
Сообщения об ошибках просьба присылать по адресу: contact@microgames.ru
Новое сообщение