Использование основных функций телекоммуникационной сети для разработки Web-приложений: Часть 1. Метод Web-сервисов

Источник: IBM
Рагхунатх Наир, Чандрашекар Наик

Традиционно создание телекоммуникационных приложений подразумевало знание деталей телекоммуникационных сетей и телекоммуникационных протоколов, таких как SMPP, MLP и Parlay. В этой статье описывается, как разработчик приложений может создавать Web-приложения, пользуясь лишь знанием основных функций системы связи, доступных в сетях сервис-провайдеров. В ней рассматриваются также другие подходы, в том числе способ использования REST и возможностей Web-сервисов, включенных в состав IBM WebSphere Telecom Server Web Services (TWSS), для построения телекоммуникационных приложений.

Введение в IBM WebSphere Telecom Web Services Server

IBM WebSphere Telecom Web Services Server версии 7.1 предоставляет поставщикам телекоммуникационных услуг возможность в дополнение к доступу к Web-сервисам на основе SOAP предлагать клиентам функциональность сети с помощью привязки RESTful (основанной на новой спецификации OneAPI). Вместе Web-сервисы и RESTful-интерфейсы обеспечивают простой доступ к функциональности служб не зависящим от технологии способом с применением языков программирования.

Кроме предложений RESTful в составе Telecom Web Services Server, в WebSphere Telecom Toolkit имеются виджеты Dojo для служб Terminal Location, SMS и Payment. Эти виджеты можно легко встраивать в Web-страницу для создания Web-приложений в стиле 2.0.

Как сервер вписывается в индустрию связи

Поставщики услуг связи сталкиваются с жесткой конкуренцией и вынуждены заботиться о повышении среднего дохода с абонента (ARPU) и снижении оттока абонентов. Существует острая потребность в привлечении возможностей существующих сетей провайдеров (включая устаревшую инфраструктуру, такую как системы сигнализации) и предлагать их для использования сторонними приложениями в простой и управляемой форме.

Рисунок 1. TWSS в телекоммуникационной инфраструктуре

TWSS в телекоммуникационной инфраструктуре

Увеличенный вариант рисунка 1.

Как показано на рисунке 1, главная задача WebSphere Telecom Web Services Server (TWSS) ― открыть телекоммуникационные услуги в качестве потребляемых Web-сервисов, а также URI в стиле REST. Поставщики приложений могут использовать эти API для создания платных услуг для клиентов, не зная программирования на уровне протоколов. Это снижает входные барьеры для компаний среднего размера, которые не имеют сотрудников с обширным набором навыков, но хотят создавать для своих клиентов инновационные комбинированные телекоммуникационные услуги. Например, предоставление услуг на основе стратегий гарантирует, что сервис можно будет настраивать на разные условия соглашения об уровне обслуживания (SLA) для разных категорий клиентов.

Архитектура Telecom Web Services Server

В этом разделе кратко описывается архитектура IBM WebSphere Telecom Web Services Server (TWSS), состоящая из трех компонентов:

  • Access Gateway (AG);
  • Service Policy Manager (SPM);
  • Service Implementations.

Access Gateway

Access Gateway обеспечивает мониторинг трафика, ввод сообщений, авторизацию и управление на основе стратегий. Эти услуги предоставляются на уровне приложения и реализуются для каждого обращения к Web-сервису с использованием информации об источнике запроса, целевой службе и вызываемой операции. Access Gateway обеспечивает гибкие возможности построения специальной логики обработки сообщений в соответствии с правилами сети. Эту логику можно настроить в соответствии с требованиями конкретной сети. Службы, реализуемые на уровне Service Implementation TWSS, не предоставляются сторонним приложениям напрямую. Они доступны через шлюз Telecom Web Services Server Access Gateway, который работает поверх IBM WebSphere Enterprise Service Bus.

Реализация AG следует компонентной модели Service Component Architecture (SCA). Реализация Access Gateway состоит из посреднических примитивов, компактных специализированных фрагментов логики обработки сообщений, которые можно комбинировать и компоновать в любом порядке для создания алгоритмов промежуточных преобразований.

Детали приведены в Информационном центре IBM Telecom Web Services Access Gateway v7.1.

Service Policy Manager

Как объяснялось в предыдущем разделе, управление компонентами Access Gateway осуществляется на основе стратегий, а это значит, что поведение посреднических примитивов в промежуточных алгоритмах Access Gateway регулируется настраиваемыми стратегиями. Service Policy Manager обеспечивает управление, хранение и извлечение функций для этих данных конфигурации стратегий и данных системы исполнения, используемых для настройки способа доставки услуг клиенту.

Детали приведены в разделе Service Policy Manager Информационного центра IBM WebSphere Телеком Server Web Services 7.1.

Service Implementations

Service Implementations (SI) осуществляет фактическую реализацию многочисленных услуг, которые должны быть доступны сторонним приложениям. Эти способы реализации услуг можно разделить на следующие широкие категории:

  • Web-сервисы, работающие по протоколу SIP/IMS;
  • Web-сервисы на основе программного обеспечения IBM® WebSphere®;
  • Web-сервисы на основе протоколов Direct Connect;
  • Web-сервисы на основе Parlay.

Детали доступных услуг каждой категории приведены в разделе Web Service Implementations Информационного центра IBM WebSphere Телеком Web Services Server версии 7.1.

Поддержка REST в TWSS 7.1

Начиная с версии v7.1, некоторые реализации служб, кроме стандартных Web-сервисов, доступны через упрощенные интерфейсы REST (Representational State Transfer). Они основаны на спецификации GSMA OneAPI (Open Network Enabler API) v0.9, которая представляет собой набор спецификаций для операторов, предоставляющих возможности своих сетей сторонним разработчикам приложений. По состоянию на TWSS 7.1 посредством REST поддерживаются следующие операции:

Terminal Location

  • getLocation

Payment

  • chargeAmount
  • refundAmount

SMS

  • sendSms
  • getSmsDeliveryStatus
  • getReceivedSms

Детали каждой из перечисленных операций приведены в разделе о доступе в стиле REST с использованием HTTP Информационного центра IBM WebSphere Телеком Server Web Services, версии 7.1.

В остальной части этой статьи основное внимание уделяется различным способам использования сетевых возможностей IBM TWSS для разработки телекоммуникационных приложений.

Сценарий 1. Создание телекоммуникационного приложения с Web-сервисами

Этот сценарий показывает, как разработать телекоммуникационное приложение с помощью службы коротких сообщений (SMS) и Web-сервисов Terminal Location, предоставляемых TWSS.

Пример

  1. Дебби регистрируется в качестве абонента приложения GeoAlert, чтобы получать напоминание всякий раз, когда она оказывается в определенным месте.
  2. Получив запрос, GeoAlert организует уведомление о местонахождении с помощью Web-сервиса Parlay X Terminal Location. Когда Дебби оказывается в указанном месте, GeoAlert обращается к Web-сервису Terminal Location для отправки уведомления на определенной URL.
  3. Как только Дебби попадает в это место, отправляется уведомление о местоположении. GeoAlert получает уведомление на заданный адрес, запуская уведомление о местоположении. Этот адрес обычно называют Catcher URL, или просто Catcher.
  4. Получив уведомление о местоположении, GeoAlert посылает Дебби SMS (напоминание).

Разработка Web-приложения

Чтобы начать разработку приложения, выполним следующие шаги.

  1. Создание клиента Web-сервиса TerminalLocationNotificationManager
    Этот клиент служит для вызова Web-сервиса Parlay X Terminal Location. Клиент вызывает операцию startGeographicalNotification интерфейса TerminalLocationNotificationManager.
  2. Разработка реализации Web-сервиса TerminalLocationNotification
    Это Web-сервис Catcher (прием запущенных уведомлений). Эта конечная точка Web-сервиса устанавливается при запуске startGeographicalNotification, например, служит в качестве приложения Catcher для получения уведомлений. Для нашего случая из этой реализации Web-сервиса по получении уведомления будет отправляться SMS (напоминание).
  3. Тестирование приложения
    Эти шаги демонстрируют, как протестировать приложение, разработанное с использованием IBM WebSphere Telecom Toolkit.

Инструментарий

  • IBM Rational Application Developer версии 7.5.1. Используется для всех шагов, так как упрощает создание клиента и реализации Web-сервиса.
  • IBM WebSphere Телеком Toolkit версии 7. Инструментарий устанавливается в Rational Application Developer. Это позволяет сторонним разработчикам приложений быстро создавать и тестировать приложения с использованием SMS, MMS, Location, Presence и Call. Он предоставляет также платформу для разработки версий Proof of Technology (демоверсий), оценки решений и изучения различных предлагаемых возможностей. Кроме того, он служит в качестве имитатора IBM WebSphere Telecom Web Services Server.

Создание клиента Web-сервиса TerminalLocationNotificationManager

  1. Запустите Rational Application Developer и создайте новый проект Java с именем StartNotificationClient.
  2. Создайте папку с именем WSDL в рамках проекта Java.
  3. Загрузите и скопируйте файлы Parlay X 2.1 Terminal Location WSDL в созданную папку WSDL. Инструкции по загрузке приведены в описании Parlay X 2.1.
  4. Найдите parlayx_terminal_location_notification_manager_service_2_3.wsdl в папке WSDL, щелкните правой кнопкой мыши и выберите Web Services > Generate Client из выпадающего меню.

Рисунок 2. Создание клиента Terminal Location Notification Manager
Создание клиента Terminal Location Notification Manager

Увеличенный вариант рисунка 2.

  1. Выберите следующие параметры:
    • Web service runtime: IBM WebSphere JAX-RPC;
    • Client project: StartNotificationClient.


Рисунок 3. Выбор варианта среды исполнения Web-сервиса
Параметры настройки клиента Web-сервиса

Увеличенный вариант рисунка 3.

  1. Нажмите кнопку Finish.
  2. Теперь создайте в пакете com.ibm.client Java-класс с именем StartNotificationClient.java.

Примечание. Весь код Java содержится под именем Project Interchange в разделе Загрузки. Убедитесь, что путь сборки проекта StartNotificationClient содержит ссылку на файл com.ibm.ws.webservices.thinclient_7.0.0.jar из каталога <RAD75Home>\runtimes\base_v7\runtimes.

В листинге 1 приведен пример кода пакета StartNotificationClient.java, который осуществляет фактический вызов операции startGeographicalNotification сервиса Terminal Location. По сути, этот фрагмент кода запускает мониторинг местонахождения Дебби. Код из листинга 1 создает различные объекты для выполнения операции startGeographicalNotification.


Листинг 1. StartNotificationClient.java - настройка параметров

// Абонент отправляет информацию о местоположении в виде широты и долготы
String address = args[0];
float fLat = (float) Float.parseFloat(args[1]);
float fLong = (float) Float.parseFloat(args[2]);

/*Настройка эталонного объекта. Ссылка указывает конечную точку, куда терминал 
службы определения местоположения должен направлять уведомление о местоположении  */
	
SimpleReference reference = new SimpleReference();
URI endpoint = 
new URI("http://localhost:9081/TestWeb/services/TerminalLocationNotification");
reference.setEndpoint(endpoint);
reference.setInterfaceName("TerminalLocation");
reference.setCorrelator("DemoCorr"+Calendar.getInstance().getTimeInMillis());

//Преобразование адреса в URI. 
URI[] addresses = new URI[1];
addresses[0]=new URI(address);

//Установка радиуса и точности
float fRad = (float) 5.0;
float tAcc= (float) 100.0;
	
/*Установка критериев.
ВХОД - Запускает уведомление, когда абонент оказывается в районе, 
указанном широтой, долготой и радиусом
ВЫХОД - Запускает уведомление, когда абонент покидает район, 
указанный широтой, долготой и радиусом */

EnteringLeavingCriteria crt = new EnteringLeavingCriteria("Entering");

//CheckImmediate указывает, нужно ли сразу проверять  местоположение абонента
boolean chkImm = false;
	
//Частота уведомлений
TimeMetric freq = new TimeMetric();
freq.setMetric(new TimeMetrics("Millisecond"));
freq.setUnits(10000);

Код, приведенный в листинге 2, показывает, как вызывается операция Web-сервиса startGeographicalNotification.


Листинг 2. StartNotificationClient.java - вызов операции

//Получение TL Manager Proxy
TerminalLocationNotificationManagerProxy tlProxy = 
new TerminalLocationNotificationManagerProxy();

//Установка конечной точки Web-сервиса Terminal Location Notification Manager
tlProxy.setEndpoint(url);

//Получение TL Manager
TerminalLocationNotificationManager  tlMgr = 
tlProxy.getTerminalLocationNotificationManager();

//Вызов startGeographicalNotification
System.out.println("Calling the web service");
tlMgr.startGeographicalNotification(reference, addresses, 
fLat, fLong, fRad, tAcc, crt, chkImm, freq);

Примечание.
Если есть неразрешенные классы, например, EnteringLeavingCriteria, измените видимость класса на public.

Разработка реализации Web-сервиса TerminalLocationNotification

Чтобы получать уведомления, GeoAlert должен реализовать Web-сервис Terminal Location Notification, и эта реализация будет использоваться как Catcher для получения уведомлений.

  1. Создайте динамический Web-проект и назовите его TLCatcherWeb.
  2. Убедитесь, что флажок Add project to an EAR установлен, и в качестве имени проекта EAR выбрано TLCatcherWebEAR.
  3. Загрузите и скопируйте файлы Parlay X 2.1 Terminal Location WSDL в папку TLCatcherWeb > WebContent > WEB-INF > wsdl. Инструкции по загрузке приведены в описании Parlay X 2.1. См.cсылку в разделе Ресурсы.
  4. Найдите файл parlayx_terminal_location_notification_service_2_2.wsdl в папке WSDL, щелкните на нем правой кнопкой мыши и из выпадающего меню выберите Web Services > Generate JavaBean skeleton.


Рисунок 4. Создание структуры JavaBean
Создание структуры JavaBean

Увеличенный вариант рисунка 4.

  1. Выберите следующие параметры полей (см. рисунок 5):
    • Web service runtime: IBM WebSphere JAX-RPC;
    • Service project: TLCatcherWeb;
    • Service EAR project: TLCatcherWebEAR.


Рисунок 5. Параметры конфигурации
Диалоговое окно конфигурации  Web-сервиса

Увеличенный вариант рисунка 5.

  1. Нажмите кнопку Finish. Если после нажатия кнопки Finish будет предложено запустить сервер, нажмите кнопку Cancel.
  2. Компонент структуры, созданный на предыдущем шаге, содержит набор методов, которые соответствуют операциям, описанным в Terminal Location Notification WSDL. После создания компонента для каждого метода будет существовать структура, как показано в листинге 3.


Листинг 3. Код структуры Terminal Location Notification

package org.csapi.www;
public class TerminalLocationNotificationBindingImpl 
implements org.csapi.www.TerminalLocationNotification{
	
//Эта операция вызывается при успешном уведомлении о местонахождении
public void locationNotification(java.lang.String correlator, 
org.csapi.www.LocationData[] data, 
org.csapi.www.EnteringLeavingCriteria criteria) throws java.rmi.RemoteException {
}

//Эта операция вызывается при ошибочном уведомлении о местонахождении
public void locationError(java.lang.String correlator, java.net.URI address, 
org.csapi.www.ServiceError reason) throws java.rmi.RemoteException {
}

//Эта операция вызывается по завершении уведомления о местонахождении
public void locationEnd(java.lang.String correlator) throws java.rmi.RemoteException {
}
}

Когда уведомление получено, приложение GeoAlert отправляет сообщение SMS с напоминанием на мобильный телефон Дебби. Для этого сервис должен выполнить клиент sendSMS внутри операции locationNotification и вызывать операцию sendSMS.

  1. Для создания клиента SMS загрузите и скопируйте файл parlayx_sms_send_service_2_2.wsdl в папку WSDL, щелкните правой кнопкой мыши и выберите > Web Services > Generate Client. Инструкции по загрузке приведены в описании Parlay X 2.1. См.cсылку в разделе Ресурсы.
  2. Убедитесь, что выбраны следующие параметры:
    • Web service runtime: IBM WebSphere JAX-RPC;
    • Client project: TLCatcherWeb;
    • Client EAR project: TLCatcherWebEAR.


Рисунок 6. Настройка клиента Web-сервиса
Настройка клиента Web-сервиса

Увеличенный вариант рисунка 6.

Это позволит создать структуру пакета с заглушками для операции sendSMS.

Метод LocationNotification в классе TerminalLocationNotificationBindingImpl ― это метод, который вызывается или уведомляется, когда выполнены критерии Дебби. В соответствии приведенным примером, GeoAlert отправляет напоминание Дебби посредством SMS. В листинге 3 приведен пример кода для вызова операции sendSMS службы коротких сообщений.


Листинг 4. Код примера Terminal Location Notification

//Эта операция вызывается при успешном уведомлении о местонахождении
public void locationNotification(java.lang.String correlator, 
org.csapi.www.LocationData[] data, 
org.csapi.www.EnteringLeavingCriteria criteria)
throws java.rmi.RemoteException {

String smsResp = "";

/*Извлечение адреса из элемента LocationData. 
Он будет использоваться для операции sendSms  */
URI[] addresses = new URI[1];
addresses[0] = data[0].getAddress();

/*Извлечение информации о местонахождении  в виде широты и долготы.
Отправка этой информацию в сообщение SMS для абонента*/
float lat = data[0].getCurrentLocation().getLatitude();
float lon = data[0].getCurrentLocation().getLongitude();
	
//Установление URL для работы Web-сервиса Send SMS 
String url = "http://localhost:9081/ParlayX21Web/services/SendSms";

try{
//Получение прокси SendSMS 
SendSmsProxy smsProxy = new SendSmsProxy();

//Установка конечной точки для работы Web-сервиса
smsProxy.setEndpoint(url);
System.out.println("---Endpoint set---");

//Получение обработчика Web-сервиса
SendSms smsSvc = smsProxy.getSendSms();
System.out.println("---Handle to Service obtained. Invoking Web Service---");

//Составление сообщения SMS
String msg = "Hello Customer, Greetings from Location Based Reminder App. " +
"You have reached the Location where you had set a reminder. " +
"Your current location is Latitude = " + lat +
"Longitude = " + lon;

//Вызов операции sendSms службы коротких сообщений
smsResp= smsSvc.sendSms(addresses, "LocationBasedReminderAPP", null, msg, null);
System.out.println("---Sent Web Service request---");
}
catch(Exception e)
{	
}
}

Когда метод locationNotification вызван, он посылает сообщение SMS на мобильное устройство Дебби.

Тестирование приложения с помощью WebSphere Telecom Toolkit

Чтобы протестировать разработанное приложение, загрузите IBM WebSphere Telecom. Этот бесплатный инструментарий позволяет разработчикам быстро создавать и тестировать приложения с элементами SMS, MMS, Location, Presence и Call. Он предоставляет также платформу для разработки демоверсий, оценки решений и изучения различных предлагаемых возможностей.

Подробная информация приведена в документе IBM Education Assistant - WebSphere Telecom Toolkit. См.cсылку в разделе Ресурсы.

Примечания

  • Профиль WebSphere Application Server v7 создается в среде исполнения Rational Application Developer.
  • IBM WebSphere Телеком Toolkit v7.1 устанавливается поверх Rational Application Developer v7.5.1.

Развертывание и запуск Telecom Web Services Simulator

  1. Создайте профиль WebSphere Application Server v7 в Rational Application Developer.
  2. Запустите сервер WebSphere.
  3. Щелкните на сервере правой кнопкой мыши и выберите Deploy Telecom Web Services Simulator (см. рисунок 7). Это приводит к открытию приложения WSSimulatorEAR.


Рисунок 7. Запуск Telecom Web Services Simulator
Запуск Telecom Web Services Simulator на сервере WebSphere Application Server с применением Rational Application Developer

Увеличенный вариант рисунка 7.

  1. Затем щелкните правой кнопкой мыши на сервере (см. рисунок 8) и выберите Run Telecom Web Services Simulator Client.


Рисунок 8. Запуск клиента Telecom Web Services Simulator
Вкладки Project Explorer и Java

Увеличенный вариант рисунка 8.

Существует шесть представлений времени выполнения, которые отображают все конфигурации имитатора и данные среды исполнения: Activity, Call, Device, Group, Presence и Map. Подробная информация по каждому из этих представлений приведена на странице IBM Education Assistant - WebSphere Telecom Toolkit.

Развертывание приложения

StartNotificationClient - это автономное Java-приложение.

EAR-проект TLCatcherWebEAR должен быть развернут в среде исполнения на сервере. Для этой цели используем WebSphere Application Server 7 в качестве механизма исполнения этого приложения.

  1. Щелкните правой кнопкой мыши на WebSphere Application Server 7 (WAS 7) и выберите Add and Remove Projects.
  2. В окне Добавление и удаление проектов, добавьте TLCatcherWebEAR.
  3. Нажмите кнопку Finish.

Теперь Web-сервис Terminal Location Notification (Catcher) развернут и работает.

Тестирование приложения

Перед началом тестирования функциональности приложения GeoAlert проверьте следующие моменты:

  • что TerminalLocationNotificationManager Endpoint функционирует. Этот Web-сервис входит в состав инструментария Telecom Web Services Simulator - http://localhost:9081/ParlayX21Web/services/TerminalLocationNotificationManager (фактический номер порта может быть другим);
  • что TerminalLocationNotification Endpoint функционирует. Этот Web-сервис был разработан в предыдущем примере (TLCatcherWebEAR). http://localhost:9081/TLCatcherWeb/services/TerminalLocationNotification (фактический номер порта может быть другим);
  • что вы правильно указали конечные точки в Java-классе StartNotificationClient.java.
  1. Выполните Java-класс StartNotificationClient со следующими аргументами:
    • arg1: subscriber_phone_number. Этот номер должен присутствовать в Telecom Web Services Simulator. Например, tel:+1-2225552003;
    • arg2: широта. Например, 0,03;
    • arg3: долгота. Например, 0,002.

    Пример: java StartNotificationClient tel:+1-2225552003 0.03 0.002
  2. Убедитесь, что широта и долгота, передаваемые в качестве параметров, находятся в зоне отображения карты в имитаторе.
    Примечание. Чтобы получить координаты широты и долготы конкретного места на карте, перетащите любой значок в нужное место, и координаты этого места отобразятся, как показано на рисунке 9.
  3. Перейдите в окно Map имитатора. Выберите абонента Дебби (тел:+1-2225552003), выбрав ее значок в виде мобильного телефона.


Рисунок 9. Окно карты Telecom Web Services Simulator
Текстовое поле рядом со значком Дебби

Увеличенный вариант рисунка 9.

Получив запрос от Дебби, GeoAlert запускает Geographical Notification для учетной записи Дебби. Разработанное нами автономное Java-приложение отправляет географическое уведомление.

Запущенное уведомление можно проверить в окне карты инструментария имитатора, как показано на рисунке 10.

Примечание.
Если круговая область уведомлений не отображается, щелкните на значке мобильного телефона Дебби.


Рисунок 10. Уведомление для Дебби установлено
В окне карты показана область уведомлений Дебби

Увеличенный вариант рисунка 10.

  1. Перейдите в окно Activity имитатора и убедитесь, что операция уведомления создана в папке Brown Motors > Debbie


Рисунок 11. Окно Activity с уведомлением для Дебби
Список абонентов Браун Motors

Увеличенный вариант рисунка 11.

  1. Вернитесь в окно Map.

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


Рисунок 12. Дебби входит в указанную область
Дебби в зоне уведомлений

Увеличенный вариант рисунка 12.

Когда Дебби входит в зону уведомлений, Web-сервис Terminal Location запускает locationNotification. Разработанное нами приложение GeoAlert Catcher (TLCatcherWebEAR) перехватывает запущенное уведомление и отправляет Дебби сообщение SMS в качестве напоминания. Обратите внимание, что операция sendSMS вызывается в методе Catcher locationNotification.

  1. Вернитесь в окно Activity и убедитесь, что Дебби получила напоминание SMS.


Рисунок 13. Дебби отправлено напоминание
SMS в окне Activity

Увеличенный вариант рисунка 13.

Project Interchange с примером кода

Убедитесь, что путь сборки проекта StartNotificationClient содержит ссылку на файл com.ibm.ws.webservices.thinclient_7.0.0.jar, содержащийся в каталоге RAD75Home\runtimes\base_v7\runtimes.

Загрузка

Описание

Имя

Размер

Метод загрузки

Исходный код для сценария 1 TWSS_Usage_Sample_PI.zip 115 КБ HTTP 


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=26248