Показаны сообщения с ярлыком Java. Показать все сообщения
Показаны сообщения с ярлыком Java. Показать все сообщения

вторник, 1 декабря 2009 г.

Apache Maven2 – средство для сборки проектов

В данной статье, я постараюсь описать основные возможности Apache Maven2 – средства которое значительно облегчает разработку, как простых проектов, так и сложных, многомодульных проектов над которыми работают несколько команд разработчиков.

Читать далее...

Apache Ant сборка без проблем

О работоспособности муравья сложено не мало сказок и басен… но в данной статье речь пойдет о Apache Ant – не менее работоспособной и гибкой утилиты для сборки проектов.


Читать далее...

воскресенье, 23 августа 2009 г.

Установка и настройка java

Эта статья посвящена новичкам в java программировании, для тех кто собирается влиться в этот увлекательный мир программирования на java, мир полный разнообразных, постоянно развивающихся технологий и готовых средств с огромным, растущим числом приверженцев java.


Как и обещал статья по установки jdk.

Ну от слов к делу

Для изучения любого языка программирования нам необходимо иметь его компилятор (или интерпретатор) для выполнения примеров и тестов, потому как, по моему мнению, на голой теории далеко не уедешь. Прошли те времена когда студенты, изучающие программирования, писали свои коды на бумажке и по долгу смотрели на них, кто то любуясь, кто то старался выполнить их в «мозгу», для того чтобы потом при долгой компиляции не возникло ошибки! :). Ну теперь, слава Богу, все гораздо проще.

И так для начала скачиваем компилятор, который входит состав JDK (Java Development Kit), своего рода «Кит» для разработки на java. Версия JDK постоянно меняется, на момент написания статьи была 1.6.0-b105. Так как java это мульти-платформенный язык программирования для выполнения программ нам необходимо установить JVM (Java Virtual Machine), для определенной ОС (Windows, Linux, Mac и тд), которая в свою очередь входит в состав JDK и устанавливается автоматически вместе с установкой JDK.
Полный список ОС для которых есть версия JDK можно посмотреть на сайте SUN – основного «создателя языка» :).

После запуска инсталляции появится окно, показанное на рисунке 1 в котором необходимо ознакомится с лицензией и нажать кнопку «Accept»


Рисунок 1.

Далее появится окно (рисунок 2) в котором необходимо указать путь установки JDK, для этого необходимо на жать на кнопку «Change…» и в появившемся диалоговом окне выбрать путь: c:\opt\java


Рисунок 2.

После выбора директории нажмите кнопку «Next >». Далее последует процесс инсталляции JDK.

Переменные окружения

Теперь, для возможности вызова компилятора в командной строке, необходимо прописать пути в переменных окружения JAVA_HOME и PATH

Windows:

set JAVA_HOME=c:\opt\java
set PATH=%JAVA_HOME%\bin;%PATH%
Unix/Linux:

set JAVA_HOME=/opt/java
set PATH=$JAVA_HOME/bin:$PATH

Для проверки правильность установки переменных окружения выполните в консоли следующую комманду:

>java -version

Результат должен быть примерно такой

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)

Ссылки:
Дистрибутив JDK: http://java.sun.com/javase/downloads/index.jsp
Документация по Java: http://java.sun.com/javase/reference/tutorials.jsp

Читать далее...

суббота, 22 августа 2009 г.

Apache Axis2 – пример использования

Что такое «Ось» - палка от колес, а если в контексте механизма Web-сервисов, это Axis2 (Axis – ось eng.). Проект прославленной группы разработчиков Apache или «Java-образная» реализация Фреймворка технологии Web-сервисов. В данной статье, я хочу, на примере использования, показать способ разработки приложений с Web-сервисной архитектурой.



В предыдущей статье Что такое web-сервисы и с чем их едят, я попытался показать и описать механизм взаимодействия приложений по средствам клиент-серверной технологии - Web-сервисов. Теперь для более детального изучения этого «механизма», я хочу привести пример интеграции приложения, а точнее двух приложений: клиента и сервера, по средствам web-cервис движка или можно сказать сервера - Apache Axis2.

Судя по названию сервера это второе поколение продукта от Apache основанное на наработках при создании первого Axis 1.0, но с совершенно отличающейся архитектурой.


Необходимые инструменты

И так для работы нам понадобится:
jdk-1.5 (или выше)
Web-север Tomcat 6.0– http://tomcat.apache.org/download-60.cgi
Axis2 1.3 - http://ws.apache.org/axis2/download.cgi
Ant 1.6.5 - http://ant.apache.org/bindownload.cgi


Так как мы собираемся написать java приложение, соответственно нам необходимо иметь установленную и настроенную JDK. При написания статьи я использовал JDK версии 1.5.0_10. Процесс установки и настройки java в системе описан мною, в соответствующей статье Установка и настройка java.


Axis2 является серверным приложением, поэтому его можно запускать в отдельном процессе, но так как в большинстве случаев web-сервис архитектура связанна с нагрузками и требует кластеризации и маршрутизации(процесс разделения нагрузок на сервер), по этому его (Axis2) разворачивают как web-приложение на севере приложений EAS (Enterprise Application Server), в данном случае для простоты будем использовать Apache Tomcat 6.0.
Процесс установки и настройки Tomcat web-севера, описан мною, в соответствующей статье Установка и Tomcat web-сервера.

Установка Axis2 как web-приложение

Распаковав загруженный архив, мы получим следующую структуру каталога.

Рисунок 1.
В Папке «dist» находится файл «axis2.war» - это и есть web-приложение Axis2. Его необходимо развернуть на web-сервере, в нашем случае это Tomcat, для этого можно просто скопировать этот файл в папку "<TOMCAT_HOME>/webapps", Tomcat сам определит и развернет приложение.

В результате в списке web-приложение сервера Tomcat (http://[host]:[port]/manager/html)
появится новое приложение axis2


Рисунок 2.

Обзор web-интерфейса Axis2

На первой странице web-интерфейса сервера Axis2, размещены ссылки на три основные страницы основные


Рисунок 3.

Services – Список сервисов которые развернуты на сервере.


Рисунок 4.

По умолчанию в качестве примера сервиса используется сервис, который возвращает версию сервера - Version.


Validate – Страница с результатами проверки системы на наличие необходимых
библиотек и общей статистической информацией о системе.

Administration – Собственно, интерфейс администратора

Для входа в панель администратора необходимо авторизоваться


Рисунок 5.

По умолчанию имя пользователя – admin, пароль пользователя – axis2
Эти значения можно поменять, отредактировав секции

<parameter name="userName">admin</parameter>
<parameter name="password">axis2</parameter>

В файле "<TOMCAT_HOME>\webapps\axis2\WEB-INF\conf\axis2.xml"
Каркас сервиса

И так, настало время написать каркас нашего сервиса.

При разработке данного примера я использовал в качестве сборщика очень удобную утилиту – Ant, это утилита написанная на java для организации процесса сборки java приложений и не только. Очень удобная вещь, постараюсь рассказать о ней позже в следующей статье.

И так наш проект имеет следующую структуру:


Рисунок 6.

Это не эталон, структуру можно поменять, по своему усмотрению, с соответственными изменениями в скриптах сборки.

Как можно догадаться по названию папок:
build – откомпилированный код
dist – архив сборки
lib – необходимые библиотеки
src – исходные коды
build.xml – скрипт для сборки проекта

И так перейдем к исходным кодам.

Сначала создадим класс SimpleService, в пакете my.services
package my.services;

public class SimpleService {
public String sayHello() {

return "Hello World!!!";
}
}

Как видно из листинга это простой класс с одним методом sayHello, который возвращает строку со значением «Hello World!!!» :)

Теперь для того чтобы указать Axis2 серверу, что это у нас web-сервис, необходимо создать xml дескриптор описывающий наш сервис. Для этого создадим папку META-INF
в папке src и создадим в папке META-INF файл services.xml со следующим содержимым.
<service name="SimpleService">
<description>
This service is to say the Hello World
</description>
<parameter name="ServiceClass" locked="false">my.services.SimpleService</parameter>
</service>


Судя по названиям узлов в файле, можно сразу догадаться:

<service>…</service> – секция описания сервиса
name=”SimpleService” - имя нашего сервиса

<description>…</description> - это описание сервиса, полезно заполнять это поле для будущих пользователей сервиса

<parameter name="ServiceClass" locked="false">my.services.SimpleService</parameter> - собственно имя класса с указанием антиблокировки :)

Файл дескриптора может содержать и другие секции, но об этом позже.


Сборка сервиса
После создания xml дескриптора и написания функционала, нам необходимо собрать проект, для этого, как я уже сказал выше, будем использовать Ant.

Весь процесс сборки с помощью Ant основывается на определении целей (правил) сборки в xml файле – build.xml. ниже я приведу пример такого файла с подробными комментариями внутри.
<project name="SimpleAxis2" basedir="." default="aar.server">
<!-- Определяем необходимые параметры-->
<!—Директории -->
<property name="src.dir" value="${basedir}/src" />
<property name="build.dir" value="${basedir}/build" />
<property name="dist.dir" value="${basedir}/dist" />
<property name="lib.dir" value="${basedir}/lib" />
<property name="axis2.home" value="C:\apache.jakarta\axis2" />

<!-- Web Service Name -->
<property name="service.name" value="SimpleService" />
<!-- Web Service Namespace -->
<property name="service.namespace" value="http://services.my" />
<!-- Web Service Data Namespace -->
<property name="services.data.namespace" value="http://data.example.second.axis2.my" />
<!-- Java Package Name -->
<property name="service.java.packageName" value="my.services" />
<!-- Name of Java Implementation Class-->
<property name="service.java.name" value="SimpleService" />
<!-- Java Class Name with Package Information-->
<property name="service.class" value="${service.java.packageName}.${service.java.name}" />
<!-- WSDL file name -->
<property name="service.wsdl" value="${service.name}.wsdl" />


<!-- CLASSPATH -->
<path id="classpath">
<!-- Moved from Java 2 Wsdl -->
<pathelement location="${build.dir}" />
<fileset dir="${axis2.home}\lib">
<include name="*.jar" />
</fileset>
</path>
<property name="axis2.classpath" value="classpath" />

<!-- Очищаем директории  -->
<target name="clean">
<delete dir="${build.dir}" />
</target>

<!-- Компилируем исходные коды -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}" />

<!--First let's compile the classes-->
<javac debug="on" fork="true" destdir="${build.dir}" srcdir="${basedir}/src" classpathref="classpath">
</javac>
</target>

<!-- Создаем архив сервиса -->
<target name="aar.server" depends="compile">
<mkdir dir="${build.dir}/META-INF" />
<mkdir dir="${build.dir}/lib" />
<!--copy file="${build.lib}/${xbeans.packaged.jar.name}" toDir="${build.classes}/lib" /-->
<copy toDir="${build.dir}/META-INF">
<fileset dir="${src.dir}/META-INF" />
</copy>
<jar destfile="${dist.dir}/${service.name}.aar">
<fileset dir="${build.dir}"/>
</jar>
</target>
</project>

Файл build.xml должен находится в корне проекта (те на одном уровне с папками src и build)

Теперь для сборки проекта в командной строке, необходимо выполнить след команду.

> ant

Ant сборщик автоматически подхватит файл build.xml и основываясь на его целях (правилах) соберет проект.

Развертывание на сервере

Теперь после сборки проекта в папке dist должен появится файл-архив с со всеми необходимыми файлами для сервиса
Для развертывания его на Axis сервере, необходимо скопировать его в папку
"<TOMCAT_HOME>\webapps\axis2\WEB-INF\services\"
Axis сервер, автоматически определит его и развернет в своем контейнере.

Результат можно увидеть на странице
http://localhost:8080/axis2/services/listServices
(для локального сервера)


Рисунок 7.
Как видно на рисунке, в списке развернутых сервисов, появился наш сервис «SimpleService» с одним методом sayHello.


В следующей статье я планирую описать процесс создания клиента для нашего SimpleService.

Жду ваших отзывов и предложений.




Читать далее...