Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть III
Запись от PainKiller размещена 03.03.2014 в 12:14
Для начала надо скачать BlazeDS. При желании можно загрузить BlazeDS Trunk – эта версия сразу интегрирована с какой то версией Tomcat, но нам это не нужно, у нас свой сервер, в любом случае не важно что вы скачали, самое главное в скачанном найти файл blazeds.war – это файл шаблона проекта для BlazeDS. Распаковываем его и видим 2 папки, нас интересует папка WEB-INF, копируем из нее папку flex в нашу папку (путь от корня проекта должен быть такой ../web/WEB-INF/flex), копируем содержимое папки lib в нашу папку lib где уже лежит jdbc-connector (путь от корня проекта web/WEB-INF/lib). В папке flex лежат конфиги, в lib – jar-файлы с классами BlazeDS. В принципе на этом «подключение» BlazeDS к проекту заканчивается, осталось написать тестовую веб-службу и отредактировать конфиги в папке flex. Начнем со службы, это обычный явовский класс, привожу свой вариант:
Код:
import java.util.*; /** * * @author PainKiller */ public class NameService { public ArrayList<String> getNames() { DBManager dbm = new DBManager(); ArrayList<String> res = dbm.getResults(); return res; } public String sayHello(String name) { return "Hello " + name; } }
Теперь зарегистрируем нашу службу в файле remoting-config.xml (это один из конфигов, который лежит в папке flex), для этого туда надо вписать следующее:
Код:
<destination id="NameService"> <properties> <source>NameService</source> </properties> </destination>
Код:
<?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> <destination id="NameService"> <properties> <source>NameService</source> </properties> </destination> </service>
Создаем проект в Flash Builder, и пишем такой код:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="300" minHeight="600" width="300" height="600" creationComplete="onComplete(event)"> <fx:Declarations> <!-- Разместить невизуальные элементы (например, службы или объекты значений) --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.*; import mx.events.*; import mx.messaging.*; import mx.messaging.Consumer; import mx.messaging.Producer; import mx.messaging.events.*; import mx.messaging.messages.AsyncMessage; import mx.rpc.events.*; import mx.rpc.remoting.RemoteObject; [Bindable] private var ro:RemoteObject; private function onComplete(e:FlexEvent):void { trace ("onComplete"); ro = new RemoteObject("NameService"); ro.endpoint = "http://env-XXXXXXXX.jelasticloud.com/testds/messagebroker/amf"; ro.addEventListener(FaultEvent.FAULT, faultHandler); ro.addEventListener(ResultEvent.RESULT, resultHandler); ro.getNames(); ro.showBusyCursor = true; } private function resultHandler(e:ResultEvent):void { trace ("result:"); trace(e.result); names.dataProvider = e.result as ArrayCollection; } private function faultHandler(e:FaultEvent):void { trace ("fault"); trace (e); } ]]> </fx:Script> <s:VGroup y="20" gap="20" horizontalAlign="center" verticalAlign="middle"> <s:Label id="server_responce" x="2" y="-16" width="276" height="44" fontSize="17" text="{ro.sayHello.lastResult}"/> <s:TextInput id="userInput" x="21" width="238"/> <s:Button id="send" x="77" y="95" label="Отправить на сервер" click="{ ro.sayHello(userInput.text); }"/> <s:List id="names" x="10" y="145" width="280" height="445"></s:List> </s:VGroup> </s:Application>
Тут особо комментировать нечего, мы просто создали удаленную службу, запрашиваем её метод getNames() при старте приложения, и наполняем полученным результатом дата-провайдер компонента List, все это мы делаем в стандартном асинхронном стиле, со слушателями событий. Работа с удаленной службой компонентов TextInput и Button осуществляется через байдинг – флексовый способ связывания данных.
В общем, наверное пока это все, в дальнейшем можно будет рассмотреть Message Service, и работу с типизированными объектами, если к этому будет интерес со стороны читателей.
Исходники прикладываю:
Всего комментариев 0
Комментарии
Последние записи от PainKiller
- Имитируем браузер (на примере залогинивания из приложения в контакт) (28.08.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть III (03.03.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть II (27.02.2014)
- Поднимаем сервер в облаке (Jelastic + Java + Tomcat + MySQL + BlazeDS) Часть I (27.02.2014)