Создание собственной задачи
Создаётся Java-класс, наследуемый от org.apache.tools.ant.Task или другого сходного с ним класса.
Для каждого атрибута пишется установочный метод. Он должен быть public void и принимать один-единственный параметр. Имя метода должно начинаться с set, предшествующего имени атрибута, с первым символом имени, написанным в верхнем регистре, a остальное в нижнем. Так, чтобы подключить атрибут с именем file, следует создать метод setFile().
Если задача будет содержать другие задачи в качестве внутренних, класс должен наследоваться от org.apache.tools.ant.TaskContainer.
Для каждого внутреннего элемента указывается create(), add() или addConfigured() метод. Метод сreate() должен быть public методом, который не принимает аргументов и возвращает Object тип. Метод аdd() (или addConfigured()) метод должен быть public void методом, который принимает единственный аргумент Object типа с конструктором без аргументов.
public void execute()– метод без аргументов, является главным методом в задаче, который генерирует BuildException.
В качестве примера можно создать собственную задачу, в результате выполнения которой будет выводиться сообщение в потокSystem.out. У задачи будет один атрибут с именем message.
package com.mydomain;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
public class MyVeryOwnTask extends Task {
private String msg;
// метод, выполняющий задачу
public void execute() throws BuildException {
System.out.println(msg);
}
// метод установки атрибута
public void setMessage(String msg) {
this.msg = msg;
}
}
Чтобы добавить задачу в проект, следует удостовериться, что класс, который подключается, находится в classpath.
После добавления <taskdef>-элемента в проект элемент добавится в систему, используя предыдущую задачу в оставшемся build-файле.
<?xml version="1.0"?> <project name="OwnTaskExample" default="main" basedir="."> <taskdef name="mytask" classname="com.mydomain.MyVeryOwnTask"/> <target name="main"> <mytask message="Hello World! MyVeryOwnTask works!"/> </target></project>Чтобы использовать задачу повсеместно в проекте, нужно поместить <taskdef> внутри проекта, а не задачи. Следует использовать classpath атрибут <taskdef>, чтобы указать, откуда брать код задачи.
В этой книге были рассмотрены основные возможности языка Java применительно к созданию приложений и распределенных систем. Ряд дополнительных возможностей остался вне поля зрения, поэтому читайте спецификации, которые можно загрузить по адресу:
java.sun.com/products/servlet/index.jsp
java.sun.com/products/jsp/index.jsp
java.sun.com/products/jdbc/index.jsp
java.sun.com/j2ee/1.4/index.jsp
ПОРТЛЕТЫ
Порталы – это следующее поколение приложений, предоставляющих доступ к бизнес-приложениям через Web-интерфейс всем видам клиентов. Порталы предоставляют пользователям сайта единую точку доступа к различным приложениям и ресурсам. Независимо от того, где информация находится и какой тип имеет, портал представляет ее в виде, дружественном для конечного пользователя. Полноценное портал-решение должно обеспечивать пользователей удобным доступом ко всему, что необходимо для успешного выполнения их работы. Портал – web-сервер, который объединяет, настраивает и персонализирует содержимое, чтобы дать представление о корпоративной информационной системе.
Возможности порталов
Портал предоставляет всесторонний подход и доступ к инструментам и сервисам, доступным через Web-интерфейс.
Портлеты – основные блоки, из которых строится портал, в то же время это полноценные приложения, соответствующие шаблону проектирования Model-View-Controller. Каждый портлет разрабатывается, развертывается, управляется
и отображается независимо от других портлетов.
У портлетов может быть несколько состояний и видов в соответствии с событийными возможностями. Базируясь на модели контейнера, портлеты выполняются внутри контейнера портлетов. Они могут перенаправить запрос или ошибки браузеру.
Портальный сервер
Портальный сервер обрабатывает запросы клиентов. Как сервер Web-приложений имеет Web-контейнер для управления выполняющимися компонентами, так и портальный сервер имеет контейнер для управления выполнением портлетов. Portlet API – это расширение над спецификацией для сервлетов, т.е. контейнер портлетов по определению является и Web-контейнером.
Портлет
Портлет – это подключаемый Web-компонент (вполне самостоятельное приложение, средой выполнения которого служит портальный сервер), обеспечивающий динамическое содержимое как часть визуального пользовательского интерфейса. Portlet API наследует возможности Servlet API (где-то расширяя эти возможности, а где-то ограничивая, например, сессия портала не повторяет до конца концепцию сервлетной сессии), и вследствие этого портлеты обладают возможностями сервлетов, а также дополнительными свойствами.
В отличие от сервлетов, портлеты обрабатывают запросы doView(),
doConfigure() и doEdit(), приходящие не от браузера, а от портального сервера.
Возможности портлетов:
· встроенная поддержка автоматического использования различных JSP-страниц для различных пользовательских устройств, таких как настольные компьютеры, Palm-компьютеры с ограниченными Web-браузерами, PDA и мобильные телефоны;
· назначать права пользователям групп на использование портлетов. В случае отсутствия оных они даже не будут видеть портлеты;
· создание сохраняемых между сессиями пользовательских настроек;
· публикация в виде Web-сервиса;
· разделение сложных приложений на задачи, когда группа тесно связанных задач равняется одному портлету;
· добавление новых функций к приложению;
· хорошая совместимость с брандмауэрами (firewalls), так как они (портлеты) используют стандартные Web-протоколы для получения и отображения информации;
· одноразовая установка и настройка портлета для пользователей.