Содержание


Создание Android-приложения и веб-приложения для мониторинга значений в таблице локальной базы данных

Использование служб на платформе IBM Bluemix для получения push-уведомлений об изменениях

Comments

Те, кто привык вручную следить за значениями таблицы базы данных, знают, как трудна может быть эта задача. В этом руководстве показано, как настроить и использовать службы Bluemix (такие как Cloud Integration и Push), чтобы проверять значения столбца таблицы локальной базы данных и получать push-уведомления при изменении этих значений.

Наличие автоматизированного способа контроля значений и получение уведомлений при их изменении намного упрощает задачу мониторинга.

Для практических целей в примерах кода и в этом руководстве я использую таблицу базы данных DB2 из IBM Content Manager Enterprise Edition для проверки того, запущен ли компонент Resource Manager системы IBM Content Manager, или нет. При изменении состояния Resource Manager отправляется push-уведомление в Android-устройство. Я могу просматривать и контролировать значения любого столбца таблицы базы данных, которая поддерживается службой Bluemix Cloud Integration. И видеть значения из таблицы на своем Android-устройстве или в Интернете, используя пример приложения DBStat, который я создал в Bluemix.

Получить код Android-приложенияПолучить код веб-приложения

О примере приложения DBStat

Развернутое в Bluemix веб-приложение DBStat, которое работает на платформе Liberty for Java, периодически проверяет значение в таблице локальной базы данных. Оно использует динамически создаваемый REST API-интерфейс для подключения к локальной базе данных и получения текущего значения из таблицы.

Подключение к локальной базе данных стало возможным благодаря службе Cloud Integration Secure Connection. Затем исходное значение из таблицы сохраняется в службе Mobile Data с помощью REST API Data.

Текущее значение из таблицы базы данных проверяется каждую минуту и сравнивается с ранее сохраненным значением в Mobile Data. Если значения различаются, веб-приложение DBStat обновляет значение в Mobile Data текущим значением и отправляет push-уведомление с помощью REST API службы Push.

Что нужно для создания подобного приложения

  • Учетная запись Bluemix, что позволит использовать в своем приложении следующие службы:
    • Liberty for Java runtime— проверяет значение из таблицы локальной базы данных;
    • Mobile Data service— в этой службе хранится значение из таблицы локальной базы данных;
    • Mobile Application Security service— эта служба обеспечивает доступ к приложениям и безопасность;
    • Push service— эта служба отправляет уведомление при изменении значения в таблице базы данных;
    • Cloud Integration service— эта служба обеспечивает безопасное соединение с локальной базой данных.
  • Должны быть установлены следующие программы:
  • Учетная запись DevOps Services для получения образца кода мобильного или веб-приложения (см. кнопки выше).

Замечания к инструкциям

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

Шаг 1. Настройка служб Bluemix

Выполните следующие действия для создания необходимых служб Bluemix.

Liberty for Java

  1. Войдите в Bluemix.
  2. Выберите CATALOG из меню и найдите раздел Runtimes.
  3. Выберите Liberty for Java.
  4. В разделе Start with a runtime введите уникальное имя, отличное от DBStat, которое уже используется.
  5. Поле домена будет заполнено автоматически (mybluemix.net).
  6. Leave Selected Plan: Default.
  7. Нажмите кнопку CREATE.

    Дождитесь сообщения Your app is running в разделе APP HEALTH.

Примечание. Если появится сообщение о том, что нужно перезапустить приложение, нажмите кнопку ОК.

Mobile Data

  1. Выберите CATALOG из меню и найдите раздел Mobile.
  2. Выберите Mobile Data.
  3. Выберите свое приложение из раскрывающегося меню App.
  4. Leave Selected Plan: Shared.
  5. Нажмите кнопку CREATE.

Дождитесь сообщения Your app is running в разделе APP HEALTH.

Mobile Application Security

  1. Выберите CATALOG из меню и найдите раздел Mobile.
  2. Выберите Mobile Application Security.
  3. Выберите свое приложение из раскрывающегося меню App.
  4. Leave Selected Plan: Standard.
  5. Нажмите кнопку CREATE.

Дождитесь сообщения Your app is running в разделе APP HEALTH.

Push

  1. Выберите CATALOG из меню и найдите раздел Mobile.
  2. Выберите Push.
  3. Выберите свое приложение из раскрывающегося меню App.
  4. Leave Selected Plan: Standard.
  5. Нажмите кнопку CREATE.

Дождитесь сообщения Your app is running в разделе APP HEALTH.

Cloud Integration

  1. Выберите CATALOG из меню и найдите раздел Integration.
  2. Выберите Cloud Integration.
  3. Выберите свое приложение из раскрывающегося меню App.
  4. Leave Selected Plan: Cloud Integration Plan.
  5. Нажмите кнопку CREATE.

Дождитесь сообщения Your app is running в разделе APP HEALTH.

Шаг 2. Запись информации о приложении

После создания служб Bluemix выполните следующие действия для записи ключевых сведений о своем приложении. Эта информация понадобится позднее для примера кода DBStat.

Примечание. В этом руководстве в качестве примера приведена информация о моем приложении. Не забудьте использовать вместо этих примеров свою информацию.

Войдя в Bluemix:

  1. Выберите из меню DASHBOARD и выберите свое приложение в разделе Applications.
  2. Выберите MOBILE OPTIONS и найдите вариант 3.
  3. Запишите идентификатор приложения.

    Пример: 6e18da73-08e9-4d35-9190-a422541ffe07

  4. Запишите секретный ключ своего приложения.

    Пример: 322212ee2e2ad64636791bb2fb03b0f4760ebfa8

  5. Запишите маршрут приложения.

    Пример: DBStat.mybluemix.net

Шаг 3. Установка Cloud Integration Secure Connection

Установите на машину, имеющую доступ к вашей локальной базе данных, программное обеспечение Cloud Integration Secure Connection. Для этого руководства я использовал Windows-компьютер с установленной базой данных IBM Content Manager Library Server.

Войдя в Bluemix:

  1. Нажмите кнопку DASHBOARD, выберите свое приложение, выберите Cloud Integration и нажмите кнопку SECURE CONNECTIONS. Вы увидите страницу Manage Secure Connections.
  2. В поле Name your connection введите W520.
  3. В разделе Standard нажмите кнопку Add.
  4. А в разделе Driver нажмите кнопку INSTALL. Вы увидите всплывающее окно: Bluemix Manage Secure Connections
    Bluemix Manage Secure Connections
  5. В ответ на первый запрос нажмите кнопку Config.
  6. Загрузите файл конфигурации, созданный специально для вас. В моем примере файл конфигурации называется: f5bg64b8-e8ee-458f-9b1d-eb1dda8fea15_W520-config_file.
  7. В ответ на второй запрос нажмите кнопку Windows 64 bit.
  8. Скачайте файл windows-secure-connector-installer_64.exe.

На Windows-компьютере запустите файл windows-secure-connector-installer_64.exe для установки Cast Iron Secure Connector:

  1. Install > Next.
  2. Accept license > Next.
  3. Installation path: C:\Program Files (x86)\IBM\Secure_Connector_1.7.0.0.1 > Next.
  4. Target directory > OK.
  5. Shortcuts > Next.
  6. Finished > Next.
  7. Secure Connector Configuration File: <browse to the location for f5bg64b8-e8ee-458f-9b1d-eb1dda8fea15_W520-config_file> > Next.
  8. Secure Connector Configuration > Next.
  9. Proxy Configuration > Next.
  10. Check "Install and run Secure Connector as a Windows service" > Next.
  11. Processing > Next.
  12. Create Third Party Jar > Next.
  13. Update changes > NO.
  14. Installation completed > Done.

Запустите службу Cast Iron Secure Connector на панели служб Windows.

На панели Bluemix Manage Secure Connections:

  1. Нажмите на знак X, чтобы закрыть всплывающее окно.
  2. В разделе Action щелкните на значке обновления. Состояние изменится с Not Connected на Connected.
  3. Нажмите кнопку Done. Панель Bluemix Manage Secure Connections
    Панель Bluemix Manage Secure Connections

Шаг 4. Создание API-интерфейса Cloud Integration Enterprise

Войдя в Bluemix:

  1. Нажмите кнопку DASHBOARD, выберите свое приложение, выберите Cloud Integration и нажмите кнопку APIS. Нажмите кнопку Create API.
  2. Вы увидите сообщение: "How can others in this organization find your API?"
  3. Дайте API имя: W520.
  4. Опишите свой API: W520 API.
  5. Нажмите кнопку Generate from an Enterprise Endpoint.
  6. В разделе Resource выберите пункт Connect to your first Enterprise Endpoint.
  7. Выберите DB2 для подключения к конечной точке Enterprise Endpoint.
  8. Вы увидите сообщение: "Where is the database or SAP? W520 (Connected)". Если вы используете собственную базу данных, то на последующих шагах введите сведения об этой базе данных.
    Name of Database: icmnlsdb.
  9. Hostname or IP Address: localhost.
  10. Port: 50000.
  11. Username: icmadmin.
  12. Password: <password>.
  13. Click Connect.

После успешного подключения выполните следующие действия, чтобы создать свой API-интерфейс.

  1. В разделе Resources вы увидите сообщение: "Next, build your API by connecting to the Enterprise Endpoint you want to use." Если вы используете собственную базу данных, то на последующих шагах введите сведения об этой базе данных.
    Выберите свою конечную точку Enterprise Endpoint: icmnlsdb-localhost W520.
  2. Выберите схему: ICMADMIN.
  3. Выберите таблицу, для которой создается API: ICMSTRESOURCEMGR. Вы увидите сообщение: "Now you can choose which resources you want to make available".
  4. Убедитесь, что в поле Include справа указаны все методы (GET, POST, PUT, DELETE).
  5. Нажмите кнопку Create API.

Шаг 5. Запись информации об API-интерфейсе Enterprise

Создав API-интерфейс Cloud Integration Enterprise, запишите сведения о секретном ключе и URL-адресе своего API. Эта информация будет использоваться в примере кода веб-приложения DBStat.

Войдя в Bluemix:

  1. Откройте DASHBOARD, выберите свое приложение, затем выберите Cloud Integration и W520 API.
  2. Запишите значение секретного ключа API.

    Пример: 'API_SECRET' : 33d3f0b16e765e8d0c4d3b428abcdb4f18cfaa4cd38f6d1065093e512b32e9afe1aced892e42c59aea3082441e3c63f5

  3. Запишите URL GET (до имени схемы).
Секретный ключ API и URL GET
Секретный ключ API и URL GET

Шаг 6. Создание проекта Google и запись информации

Информация, полученная из проекта Google, понадобится для настройки службы Bluemix Push.

  1. Откройте страницу https://cloud.google.com/console/project.
  2. Нажмите кнопку Create Project.
  3. Имя проекта: DBStat.
  4. Отметьте пункт: "I have read and agree to the Google Cloud Platform Terms of Service."
  5. Нажмите кнопку Create.
  6. Запишите номер проекта, указанный в верхней части страницы.

    Пример: 62537192145

  7. Выберите APIs & auth в левой части страницы.
  8. Когда с левой стороны появятся подразделы API и auth, нажмите кнопку APIs.
  9. Включите функцию Google Cloud Messaging for Android (прокрутив список вниз). Функция Google Cloud Messaging for Android включена
    Функция Google Cloud Messaging for Android включена
  10. Нажмите кнопку Credentials слева.
  11. Нажмите кнопку Create new key.
  12. Выберите Server key.
  13. Нажмите кнопку Create.
  14. Запишите ключ своего API.

    Пример: BJabSyDQagRuBHscjVMz0VdO-Uxyrtm86dsMY3Y

Шаг 7. Настройка службы Bluemix Push

Используйте информацию, полученную из проекта Google, для настройки службы Bluemix Push.

Войдя в Bluemix:

  1. Выберите DASHBOARD из меню и в разделе Services нажмите кнопку Push.
  2. Вы увидите разделы "Configuration" и "Google Cloud Messaging". В разделе Google Cloud Messaging нажмите кнопку EDIT.
  3. Введите параметры GCM API Key и Google API Project Number для обеих конфигураций Sandbox Configuration и Production Configuration.
  4. Нажмите кнопку SAVE.
Sandbox Configuration и Production Configuration
Sandbox Configuration и Production Configuration

Шаг 8. Загрузка и настройка кода примера веб-приложения

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

  1. Перейдите на страницу проекта DevOps Services и выберите пункт меню EDIT CODE. Затем загрузите код:
    git clone https://hub.jazz.net/git/bluebrain/DBStatWebApp
  2. Отредактируйте файл dbstat.properties, как показано ниже, указав свою информацию.
  3. Этот код связан с файлом org.json-20120521.jar, который лицензируется по GPL версии 2 и доступен на странице https://code.google.com/p/org-json-java/downloads/list. Добавьте этот jar-файл в папку WEB-INF/lib кода DBStat. Этот jar-файл используется для анализа JSON-объектов.

Примечание. Нужно изменить следующие значения в файле WEB-INF/classes/dbstat.properties в соответствии с вашей информацией.

#Схема БД и имя таблицы 
DB_SCHEMA_NAME=ICMADMIN 
DB_TABLE_NAME=ICMSTRESOURCEMGR 
 
#выберите только строку, содержащую значение «rmdb» в столбце «RMNAME» 
DB_ROW_COLUMN_NAME=RMNAME 
DB_ROW_COLUMN_VALUE=rmdb 
 
#выбрав указанную выше строку, проверьте значение состояния БД в столбце «RMFLAGS»  
DB_STATUS_COLUMN_NAME=RMFLAGS 
 
#Идентификатор приложения, секретный ключ приложения и секретный ключ api 
APP_ID=6e18da73-08e9-4d35-9190-a422541ffe07 
APP_SECRET=322212ee2e2ad64636791bb2fb03b0f4760ebfa8 
API_SECRET=33d3f0b16e765e8d0c4d3b428abcdb4f18cfaa4cd38f6d1065093e512b32e9afe1aced892e42c59aea3082441e3c63f5 
 
#URL-адрес для подключения к БД 
REST_API_URL=https://provide.castiron.com/env/DatabaseEP/database/8e48ebd5-cc0c-4a96-a904-3e29609d737e

В приведенном выше примере ICMSTRESOURCEMGR — это таблица Library Server в IBM Content Manager, в которой содержатся сведения о состоянии диспетчера ресурсов. Диспетчер ресурсов называется rmdb, и это значение находится в столбце таблицы с именем RMNAME. Состояние — это значение, указанное в столбце RMFLAGS таблицы.

Код веб-приложения DBStat

Веб-приложение DBStat использует REST_API_URL для обращения к таблице DB_TABLE_NAME за строкой со значением DB_ROW_COLUMN_VALUE в столбце DB_ROW_COLUMN_NAME.

REST_API_URL = props.getProperty(REST_API_URL)+"/"+ 
					DB_SCHEMA_NAME+ 
					"/Tables/"+ 
					DB_TABLE_NAME+"?"+ 
					DB_ROW_COLUMN_NAME+"="+ 
					DB_ROW_COLUMN_VALUE; 
 
//url rest api для чтения строки таблицы БД 
String Url_value  = REST_API_URL; 
String serverURL = new URL(Url_value); 
//секретный ключ bluemix-приложения 
String API_SECRET_key = "API_SECRET"; 
String API_SECRET_value = API_SECRET; 
httpConnection = (HttpURLConnection) serverURL.openConnection(); 
httpConnection.setRequestProperty(API_SECRET_key, API_SECRET_value);

Ответ на запрос возвращается в формате JSON, как показано в следующем примере:

 {"rows":{"row":{"RMCODE":1,"RMPLATFORM":"0","USERID":"ICMADMIN                        ", 
 "CHANGED":"2014-06-10 03:35:16.311","RMFLAGS":2,"TOKENDURATION":172800,"DOMAINID":2, 
 "RMUSERID":"RMADMIN                         ","RMNAME":"rmdb", 
 "INETADDR":"W520.svl.ibm.com","CURRENTVERSION":8.4.03.300,"CACHEOBJSIZELIMIT":"0.0", 
 "RMPASSWORD2":"[B@abcd2a9b"}}}

В приведенном выше примере возвращается одна строка со значением для «RMNAME»:«rmdb» и состоянием БД «RMFLAGS»:2. Нам необходимо проанализировать этот JSON-объект, чтобы получить значение 2 в качестве состояния нашей БД из «RMFLAGS»:2.

//синтаксический анализ json-объекта для получения значения состояния БД из «DB_STATUS_COLUMN_NAME:dbStatus» 
int dbStatus = -1; 
JSONObject jsonObject = new JSONObject(builder.toString()); 
System.out.println("json object : "+jsonObject.toString()); 
System.out.println("rows : "+jsonObject.get("rows")); 
if (jsonObject.get("rows").toString().length()>0) { 
	jsonObject = (JSONObject) jsonObject.get("rows"); 
    	jsonObject = (JSONObject) jsonObject.get("row"); 
    	System.out.println("row : "+jsonObject.toString()); 
       	dbStatus = jsonObject.getInt(DB_STATUS_COLUMN_NAME); 
       	System.out.println(DB_STATUS_COLUMN_NAME+" : "+dbStatus); 
}

Затем начальное значение состояния БД помещаются в другой JSON-объект.

//использование атрибута «name» в формате json-объекта для создания объекта mobile data, содержащего данные «DB_ROW_COLUMN_VALUE:dbStatus» 
String json = "[{\"className\": \"Item\",\"attributes\":{\"name\": \""+DB_ROW_COLUMN_VALUE+":"+dbStatus+"\"}, \"objectId\": \""+DB_ROW_COLUMN_VALUE+"\"}]";

И этот объект храняется в Mobile Data с помощью REST API-интерфейса Data.

//url rest api для записи нового объекта mobile data 
String Url_value  = "https://mobile.ng.bluemix.net:443/data/rest/v1/apps/"+APP_ID+"/uploads";

Текущее состояние БД сравнивается с тем, которое было сохранено в Mobile Data, с интервалом в одну минуту. REST API-интерфейс Data используется для запроса в Mobile Data данных о ранее сохраненном состоянии.

//url rest api для чтения объекта mobile data с идентификатором объекта DB_ROW_COLUMN_VALUE 
String Url_value  =  
"https://mobile.ng.bluemix.net:443/data/rest/v1/apps/"+APP_ID+"/objects/"+DB_ROW_COLUMN_VALUE;

Ответ от Mobile Data также возвращается в формате JSON и анализируется для получения состояния, ранее сохраненного в БД.

//разбор атрибута «name» json-объекта для получения значения состояния БД из «DB_ROW_COLUMN_VALUE:dbStatus» 
int dbStatus = -3; 
if (jsonArray.length()==0) { 
      	System.out.println("dbStatus="+dbStatus); 
} else { 
        String name = null; 
        jsonObject = (JSONObject) jsonArray.get(0); 
        System.out.println("object : "+jsonObject.toString()); 
        System.out.println("attributes : "+jsonObject.get("attributes")); 
        jsonObject = (JSONObject) jsonObject.get("attributes"); 
        System.out.println("object : "+jsonObject.get("name")); 
        name = (String) jsonObject.get("name"); 
        System.out.println("name="+name); 
        dbStatus = Integer.parseInt(name.substring(name.indexOf(':')+1)); 
	System.out.println("dbStatus="+dbStatus); 
}

Если состояние БД изменилось, то данные мобильного приложения обновляются, и отправляется push-уведомление путем формирования JSON-объекта с нашими push-сообщением и его отправки с помощью REST API-интерфейса Push.

//использование формата json-объекта для push-сообщения, содержащего сообщение «DB_ROW_COLUMN_VALUE:dbStatus» 
String message = "{ \"message\": { \"alert\": \""+DB_ROW_COLUMN_VALUE+":"+dbStatus+"\" },  
\"target\": { \"platforms\":  
[\"G\"] } }";		 
//url rest api для отправки push-уведомлений 
String Url_value  = "https://mobile.ng.bluemix.net:443/push/v1/apps/"+APP_ID+"/messages";

Одноминутный интервал можно изменить, отредактировав код в файле DBStatListener.java.

publicvoid contextInitialized(ServletContextEvent event) { 
    scheduler = Executors.newSingleThreadScheduledExecutor(); 
    scheduler.scheduleAtFixedRate(new DBStatRunner(),// Запуск DBStatRunner() 
    		0, // запустить через 0 минут 
    		1, // повторять каждую 1 минуту 
    		TimeUnit.MINUTES); // использовать в качестве единиц измерения минуты 
}

Шаг 9. Загрузка и установка мобильного push-приложения

Для регистрации своего Android-устройства в службе push DBStat я использовал приложение quickstart-push-android из quickstart-push. Чтобы использовать приложение quickstart-push-android в проекте Eclipse, нужно установить библиотеки Google Play Services и создать Eclipse-проект.

Google Play Services

  1. Запустите Android SDK Manager (из Eclipse или командной строки).
  2. Установите службы Google Play из раздела Extras packages.
  3. Найдите папку google-play-services_lib среди установленных на вашей машине файлов служб Google Play. В моей машине путь к этой папке: sdk\extras\google\google_play_services\libproject\google-play-services_lib.
  4. В Eclipse выполните команду Import > Android > Existing Android Code Into Workspace > Next.
  5. Корневой каталог: <найдите и выберите папку google-play-services_lib>.
  6. Отметьте пункт "Copy projects into workspace".
  7. Нажмите кнопку Finish.

Если созданный проект Eclipse не компилируется, проверьте содержимое файлов .classpath и project.properties.

Файл .classpath должен выглядеть следующим образом:

<classpath> 
	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> 
	<classpathentry kind="src" path="src"/> 
	<classpathentry kind="src" path="gen"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> 
	<classpathentry kind="output" path="bin/classes"/> 
</classpath>

Файл project.properties должен выглядеть следующим образом:

target=Google Inc.:Google APIs (x86 System Image):19 
android.library=true

Обновите проект в Eclipse. Теперь вы должны увидеть файл google-play-services_lib.jar, созданный в каталоге google-play-services_lib\bin проекта Eclipse.

После этого можно перейти к зарузке Push-приложения и созданию Eclipse-проекта для него.

Мобильное Push-приложение

  1. Загрузите quickstart-push.
  2. Найдите папку quickstart-push-android в каталоге quickstart-push.
  3. В Eclipse выполните команду Import > Android > Existing Android Code Into Workspace > Next.
  4. Корневой каталог: <найдите и выберите папку google-play-services_lib>.
  5. Отметьте пункт "Copy projects into workspace".
  6. Нажмите кнопку Finish.

Если в файле .classpath присутствуют следующие две строки extra project, удалите их:

<classpathentry combineaccessrules="false" kind="src" path="/IBMBluemix_AndroidSDK"/> 
<classpathentry combineaccessrules="false" kind="src" path="/PushWorks_AndroidSDK"/>

Получите следующие два jar-файла из файла SDK Bluemix ibm-bluemix-sdk-android.zip и добавьте в папку libs созданного проекта Eclipse:

ibmbluemix.jar 
ibmpush.jar

Отредактируйте файл assets\bluelist.properties и введите свою информацию:

applicationID=6e18da73-08e9-4d35-9190-a422541ffe07 
applicationSecret=322212ee2e2ad64636791bb2fb03b0f4760ebfa8 
applicationRoute=DBStat.mybluemix.net

Если созданный проект Eclipse не компилируется, проверьте содержимое файлов .classpath и project.properties.

Файл .classpath должен выглядеть следующим образом:

<classpath> 
	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> 
	<classpathentry kind="src" path="src"/> 
	<classpathentry kind="src" path="gen"/> 
	<classpathentry kind="output" path="bin/classes"/> 
</classpath>

Файл project.properties должен выглядеть следующим образом:

target=Google Inc.:Google APIs:19 
android.library.reference.1=..\\google-play-services_lib

Обновите проект в Eclipse. Теперь можно установить Push-приложение на Android-устройство.

Щелкните правой кнопкой мыши на <project name> > Run As > Android Application, чтобы установить QuickStartPushDemo_Android.apk.

Обратите внимание, что на Android-устройстве установленное приложение называется PushServiceQuickStart. После первого запуска приложения вы должны увидеть на экране, что ваше устройство зарегистрировано.

Пример:

Device is registered with Push Service

Device Id: 6515ed621fde007c807c4130

Шаг 10. Загрузка и установка примера кода мобильного Android-приложения

В качестве основы для примера мобильного приложения DBStat я использовал исходный код приложения bluelist-mobiledata. Я изменил этот код, упростив элементы экрана и добавив кнопку обновления, которая используется в этом руководстве. Загрузите код и создайте проект Eclipse для него.

Мобильное приложение DBStat

  1. Получите мобильное приложение DBStat: git clone https://hub.jazz.net/git/bluebrain/DBStatMobileApp.
  2. В Eclipse выполните команду Import > Android > Existing Android Code Into Workspace > Next.
  3. Корневой каталог: <найдите и выберите папку DBStatMobileApp>.
  4. Отметьте пункт "Copy projects into workspace".
  5. Нажмите кнопку Finish.

Получите следующие четыре jar-файла из файла SDK Bluemix ibm-bluemix-sdk-android.zip и добавьте их в папку libs созданного проекта Eclipse:

ibmbluemix.jar 
ibmcloudcode.jar 
ibmdata.jar 
ibmfilesync.jar

Отредактируйте файл assets\bluelist.properties и введите свою информацию:

applicationID=6e18da73-08e9-4d35-9190-a422541ffe07 
applicationSecret=322212ee2e2ad64636791bb2fb03b0f4760ebfa8 
applicationRoute=DBStat.mybluemix.net

Обновите проект в Eclipse. Если созданный проект Eclipse не компилируется, проверьте содержимое файлов .classpath и project.properties.

Файл .classpath должен выглядеть следующим образом:

<classpath> 
	<classpathentry kind="src" path="src"/> 
	<classpathentry kind="src" path="gen"/> 
	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> 
	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> 
	<classpathentry kind="output" path="bin/classes"/> 
</classpath>

Файл project.properties должен выглядеть следующим образом:

target=android-19 
android.library=false

Обновите проект в Eclipse. Теперь можно установить приложение DBStat на Android-устройство.

Щелкните правой кнопкой мыши на <DBStat project name> > Run As > Android Application, чтобы установить DBStat.apk.

Шаг 11. Загрузка и установка инструмента командной строки CF

Получите инструмент командной строки CF из https://github.com/cloudfoundry/cli/releases и установите его. Командная строка CF используется в следующем разделе для передачи веб-приложения DBStat в Bluemix.

Шаг 12. Развертывание примера веб-приложения в Bluemix.

Для передачи веб-приложения DBStat в Bluemix используйте командную строку cf. Выполните следующие действия:

  1. cd <каталог, в котором находятся файлы DBStatWebApp>
  2. cf login
  3. Введите свой IBM id, который вы использовали для входа в Bluemix:
    <Email>
  4. <Password>

    Вы увидите экран, аналогичный показанному ниже.

    cf login 
    API endpoint: https://api.ng.bluemix.net 
     
    Email> <your_IBM_id> 
     
    Password> 
    Authenticating... 
    OK 
     
    Targeted org <your_IBM_id> 
     
    Targeted space dev 
     
     
    API endpoint: https://api.ng.bluemix.net (API version: 2.4.0) 
    User:         <your_IBM_id> 
    Org:          <your_IBM_id> 
    Space:        dev
  5. cf push DBStat

    Вы увидите экран, аналогичный показанному ниже.

    cf push DBStat 
    Updating app DBStat in org <your_IBM_id> / space dev as <your_IBM_id>... 
    OK 
     
    Uploading DBStat... 
    Uploading app files from: C:\DBStatWebApp 
    Uploading 119.7K, 14 files 
    OK 
     
    Starting app DBStat in org <your_IBM_id> / space dev as <your_IBM_id>... 
    -----> Downloaded app package (252K) 
    OK 
    -----> Downloaded app buildpack cache (4.0K) 
        -----> Liberty Buildpack Version: v1.5-20140923-1143 
    -----> Retrieving IBM 1.7.1 JRE (ibm-java-jre-7.1-1.0-pxa6470_27sr1fp2-20140828_01-sfj.tgz) ... (0.0s) 
             Expanding JRE to .java ... (0.8s) 
    -----> Retrieving com.ibm.ws.liberty-2014.9.0.0-201409231143.tar.gz ... (0.0s) 
    -----> Uploading droplet (105M) 
     
    0 of 1 instances running, 1 starting 
    0 of 1 instances running, 1 starting 
    0 of 1 instances running, 1 starting 
    1 of 1 instances running 
     
    App started 
     
    Showing health and status for app DBStat in org <your_IBM_id> / space dev as <your_IBM_id>... 
    OK 
     
    requested state: started 
    instances: 1/1 
    usage: 512M x 1 instances 
    urls: DBStat.mybluemix.net 
     
         state     since                    cpu    memory          disk 
    #0   running   2014-09-27 12:14:05 PM   0.0%   98.1M of 512M   141.5M of 1G 
     
    access https://DBStat.mybluemix.net at least once for initialization to take place

Проверка результатов

После успешной установки и запуска веб-приложения DBStat в Bluemix нужно получить доступ к веб-приложению, открыв в браузере страницу http://DBStat.mybluemix.net, чтобы начать инициализацию приложения Liberty. Первая инициализация займет около 30 с. После этого можно запустить мобильное приложение DBStat на Android-устройстве и проверить текущее состояние таблицы своей локальной базы данных.

Если вы использовали примеры таблицы и базы данных из этого руководства для записи состояния диспетчера ресурсов в IBM Content Manager, то должны увидеть в мобильном приложении DBStat состояние <RM_DB_name>:<single_digit>. В своей установке IBM Content Manager при работающем диспетчере ресурсов я вижу состояние rmdb:2. Если диспетчер ресурсов выключить, то через минуту я получаю push-уведомление и вижу состояние rmdb:6.

Мобильное приложение DBStat показывает, что контролируемый ресурс работает
Мобильное приложение DBStat показывает, что контролируемый ресурс работает

Заключение

Теперь вы знаете, как использовать среду выполнения Liberty for Java для создания веб-приложения, которое проверяет значение столбца таблицы в локальной базе данных и посылает push-уведомления при изменении значения в таблице. Последнее значение из таблицы отображается в мобильном Android-приложении. Я надеюсь, что вы успешно построили аналогичное приложение для мониторинга своей локальной базы данных.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения, Облачные вычисления
ArticleID=1019254
ArticleTitle=Создание Android-приложения и веб-приложения для мониторинга значений в таблице локальной базы данных
publish-date=10302015