Создание собственной задачи

Создаётся 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>, чтобы указать, откуда брать код задачи.

<?xml version="1.0"?> <project name="OwnTaskExample2" default="main" basedir="."> <target name="build" > <mkdir dir="build"/> <javac srcdir="source" destdir="build"/> </target> <target name="declare" depends="build"> <taskdef name="mytask" classname="com.mydomain.MyVeryOwnTask" classpath="build"/> </target> <target name="main" depends="declare"> <mytask message="Hello World! MyVeryOwnTask works!"/> </target></project>

В этой книге были рассмотрены основные возможности языка 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

 
Приложение 9

ПОРТЛЕТЫ

Порталы – это следующее поколение приложений, предоставляющих доступ к бизнес-приложениям через 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-протоколы для получения и отображения информации;

· одноразовая установка и настройка портлета для пользователей.