Статьи

Интеграция приложений JMS на основе Flex 4 и Spring 3

В этой статье объясняются основы использования проекта Spring BlazeDS для интеграции систем JMS на основе Spring с многофункциональными интернет-приложениями (RIA) на базе Flex.   Объясняются основные понятия, связанные с интеграцией Spring и Flex, и иллюстрируется роль проекта Spring BlazeDS и его механика. Вместо подробного теоретического объяснения приведен простой пример, показывающий, как такой стек может быть настроен и использован. Расширенная конфигурация и использование набора инструментов Spring Roo для повышения производительности не включены в эту статью.

 

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

  • Adobe Flex Framework / SDK 4.5+
  • Adobe Flash Builder 4+
  • Adobe BlazeDS 4.0+
  • Spring Framework 3.0.5+
  • Интеграция Spring BlazeDS (или Spring Flex) 1.5.0.M1 +

 Для примеров и иллюстраций в этой статье также требуется несколько других программ, а именно Apache Tomcat, Apache ActiveMQ и Eclipse IDE. В этой статье используются самые последние стабильные версии каждого из этих компонентов программного обеспечения.

 

Spring — это популярный корпоративный Java-фреймворк с открытым исходным кодом для создания надежных и масштабируемых приложений, тогда как Adobe Flex — это фреймворк с открытым исходным кодом для создания многофункциональных и привлекательных интерфейсов.   Обе эти технологии являются достаточно зрелыми и пользуются популярностью среди разработчиков. Adobe BlazeDS — это приложение с открытым исходным кодом, которое позволяет приложениям Flex подключаться к приложениям на стороне сервера Java с помощью удаленных вызовов процедур и обмена сообщениями.

Приложения Flex могут соединяться со сторонами Spring, используя любой из следующих четырех механизмов:

  • HTTP-запросы и ответы
  • Веб-сервисы
  • Удаленные вызовы процедур
  • Обмен сообщениями

 

The first two of the above listed four options, namely HTTP based requests and responses and web services, are agnostic to the server side technology and so the integration of Flex and Spring using these techniques involves no special considerations beyond the standard support for HTTP and the web services protocol and the availability of data through these endpoints.  Usually text based payload exchanges, especially XML, or JSON encoded data are common when HTTP services and web services are used. When using HTTP service or web service, BlazeDS or any such intermediary is not required, unless the security restrictions do not allow you to fetch data from the remote sources. Considering the relevance of BlazeDS is limited when using these two methods, I will not discuss the use of these methods any further in this article.

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

До существования проекта интеграции Spring BlazeDS (также известного как Spring-Flex) проект SpringSource, поддерживаемый Adobe, с использованием BlazeDS для соединения с Java-серверами на основе Spring, использовал пользовательскую фабрику для доступа к Spring Beans. Это связано с тем, что Spring Beans и объекты, создаваемые стандартным BlazeDS, находятся в отдельных пространствах имен. Нужно было не только создать собственную фабрику, но и нельзя было использовать конфигурацию в стиле Spring для соединения артефактов BlazeDS. Чтобы настроить его, нужно было использовать определенные XML-конфигурации BlazeDS. Благодаря интеграции Spring BlazeDS большая часть утомительной связи между Spring и BlazeDS была уменьшена до простой унифицированной конфигурации и первоклассной поддержки Spring Beans как удаленных пунктов назначения. Кроме того, связанные с Spring сообщениями вкусности, такие как JMSTemplate и управляемые сообщениями POJO,Безопасность Spring и остальные его компоненты инфраструктуры становятся доступными в качестве серверных аналогов для приложений Flex.

В следующих нескольких разделах я объясню, как можно использовать Spring BlazeDS для интеграции систем JMS на основе Flex и Spring. По мере того, как я это делаю, я предполагаю, что вы обладаете необходимыми знаниями о среде Spring, среде Flex и даже BlazeDS. Если эти предположения не верны для вас, вам может быть полезно освоиться с основами Spring, Flex и BlazeDS, прежде чем продолжить. Таким образом, вы получите максимальную отдачу от этой статьи.

Вот несколько рекомендованных ресурсов для быстрого получения знаний об основах Spring (особенно разработки веб-приложений на основе Spring MVC), Flex и BlazeDS:

 

Загрузка и настройка программного стека

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

  •  Java 6+ 
  •  Apache ActiveMQ 5.4.1 (или любой другой поставщик JMS) 
  •  Apache Tomcat 7.0.2 (или любой другой сервер приложений, который содержит контейнер сервлетов и может размещаться или интегрироваться с поставщиком JMS)
  •  Spring Framework 3.0.5.RELEASE
  •  Затмение 3.6
  •  Adobe Flex SDK 4.5 (Получить последнюю версию Adobe Flash Builder и настроить Flex SDK 4.5 в качестве предпочтительного варианта SDK. Последняя публично доступная версия на момент написания этой статьи является 4.5.0.17689, что предварительный просмотр сборки MAX датированный 24 октября 2010) 
  •  Adobe BlazeDS 4.0 (скачать бинарный дистрибутив. В последней доступной версии на момент написания этой статьи является 4.0.0.14931.)
  •  Весна BlazeDS Версия 1.5.0.M1 (также известный как Spring-Flex)

 

Список программного обеспечения для установки длинный, но я предполагаю, что некоторые из них уже установлены. Как минимум, я предполагаю, что JDK будет установлен на вашем компьютере. Если нет, то это первое программное обеспечение, которое вам нужно получить.

После установки Java загрузите Apache Tomcat, Apache ActiveMQ, Spring Framework, Eclipse, плагин Flash Builder Eclipse, Flex SDK, BlazeDS и дистрибутив Spring-flex. Перейдите по URL-адресу, указанному напротив названия программного обеспечения, в списке выше, чтобы перейти на конкретный веб-сайт. В каждом из случаев вы легко сможете найти ссылку для загрузки последней версии сборки для конкретного программного обеспечения. Все части программного обеспечения в списке, кроме плагина Flash Builder Eclipse, имеют открытый исходный код. Вы можете получить 60-дневную пробную версию плагина Flash Builder Eclipse, если решите ознакомиться с инструментом до того, как планируете его купить. Вы можете создать приложение Flex и Spring без Flash Builder, но его использование повышает производительность. Предпочтительные версии инструментов перечислены против их соответствующих имен.Рекомендуется придерживаться этих версий, чтобы избежать дополнительных сложностей конфигурации и интеграции. Хотя это и не гарантировано, примеры в этой статье могут работать со старыми версиями программного обеспечения, которые составляют стек.

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

Первым делом вы должны извлечь загруженные вами дистрибутивы Tomcat и ActiveMQ. Запуск Tomcat прост и не требует больших усилий. На большинстве платформ распаковка дистрибутива — это все, что вам нужно сделать, чтобы начать его использовать.

Следующим шагом должна стать настройка IDE, а именно Eclipse и плагина Flash Builder. Вам также может потребоваться настроить последний Flex SDK в Flash Builder. Eclipse можно установить, просто расширив дистрибутив архива. Плагин Flash Builder устанавливается с помощью пошагового мастера. На платформе Mac OSX вам может потребоваться выбрать сборку Eclipse Carbon вместо предпочитаемой сборки Cocoa, чтобы подключаемый модуль Flash Builder мог быть установлен без каких-либо проблем. В будущих версиях Flash Builder это может не быть проблемой. Кроме того, на всех платформах придерживайтесь 32-разрядной версии Eclipse, поскольку Flash Builder пока не поддерживает 64-разрядную платформу.

Чтобы настроить последнюю версию Flex SDK с Flash Builder, откройте настройки Flash Builder в вашем Eclipse IDE. Перейдите к разделу «Установленный Flex SDK», который будет отображаться, как показано на рисунке 1 и добавить недавно загруженный SDK в список. Дополнительно установите последний SDK как SDK по умолчанию. Я извлечена скачал последнюю версию Flex SDK в ~ / Applications / flex_sdks / flex_sdk_4.5.0.17689. Затем я добавил этот новый SDK в список установленных SDK. На рисунке 2 и 3, чтобы просмотреть части шагов, которые я выполняемых для настройки SDK.

 

(Нажмите для увеличения изображения)

 

Наконец, скачайте дистрибутивы Spring Framework, Spring-Flex и BlazeDS и разверните загруженный файл, если он доступен в формате zip или tar, в папку в вашей файловой системе. Вам потребуется несколько JAR-файлов из этих дистрибутивов, чтобы Flex работал с Spring JMS.

 

Настройка проекта Flex и Spring JMS

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

В более ранней версии этой статьи я создал комбинированный проект Flex и WTP. В этой обновленной статье я создаю два отдельных проекта:

  • Динамический веб-проект для веб-слоя и
  • Проект Flex, который подключается к веб-приложению, созданному с использованием первого проекта.

 

В последнем разделе я установил Flash Builder 4 в качестве подключаемого модуля в установке Eclipse 3.6. У меня также есть платформа Web Tools Platform (WTP), установленная в этой установке Eclipse. Плагины WTP и Java EE позволяют легко создавать динамические веб-проекты. Для разработки Spring полезно наличие плагина Spring Tools Suite (STS) в Eclipse, хотя я вообще не использую этот плагин в этом примере.

 

Создание динамического веб-проекта

Для начала откройте Eclipse и создайте новый динамический веб-проект, как показано на рисунке 4.  Назовите его «flexspring».  Хотя у меня установлена ​​и настроена среда исполнения сервера Tomcat с Eclipse для динамического веб-проекта, я использую Apache Ant для сборки и развертывания проекта.

Примечание. Если вы решите использовать сервер приложений, отличный от Tomcat, не забудьте настроить ActiveMQ или альтернативного поставщика JMS на свой сервер приложений, как вы это делали с Tomcat. Также измените файлы build.xml и build.properties для работы с сервером приложений.

(Нажмите для увеличения изображения)

 

Затем перейдите на второй экран мастера создания проекта, где вы можете указать папку, в которой будут храниться ваши соблюдаемые классы Java. Я установил это как «WebContent / WEB-INF / classes». Смотрите рисунок 5.

(Нажмите для увеличения изображения)

 

Затем переходите к последнему экрану мастера, где у вас есть шанс изменить «корневой контекст» и «каталог контекста». Предварительно заполненные значения по умолчанию достаточно хороши для этого проекта. «Контекст корень» корень вашего веб-приложения. В этом окне вы также можете создать описание развертывания web.xml. Я рекомендую вам выбрать этот параметр для создания дескриптора развертывания, а затем изменить его по мере необходимости. Смотрите Рисунок 6 для последнего экрана мастера.

(Нажмите для увеличения изображения)

 

Теперь нажмите на кнопку Готово и скорлупа проект готов. Рисунок 7 показывает, что структура проекта является, когда вы сначала создать его.

 

С начальной оболочкой проекта на месте, мы готовы двигаться вперед с созданием Spring на основе JMS с поддержкой приложения. Это приложение будет зацепили с Flex переднего конца позже в этой статье.

Сначала создайте файл сборки, чтобы использовать Apache Ant для задач компиляции и развертывания. Я настроил файл сборки на основе примера файла сборки, доступного в учебном приложении Spring MVC . Содержимое файла сборки выглядит следующим образом:

<?xml version="1.0"?>

<project name="flexspring" basedir="." default="usage">
<property file="build.properties"/>

<property name="src.dir" value="src"/>
<property name="web.dir" value="WebContent"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="flexspring"/>

<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${appserver.lib}">
<include name="servlet*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>

<target name="usage">
<echo message=""/>
<echo message="${name} build file"/>
<echo message="-----------------------------------"/>
<echo message=""/>
<echo message="Available targets are:"/>
<echo message=""/>
<echo message="build --> Build the application"/>
<echo message="deploy --> Deploy application as directory"/>
<echo message="deploywar --> Deploy application as a WAR file"/>
<echo message="reload --> Reload application in Tomcat"/>
<echo message="start --> Start Tomcat application"/>
<echo message="stop --> Stop Tomcat application"/>
<echo message="list --> List Tomcat applications"/>
<echo message=""/>
</target>

<target name="build" description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.6" target="1.6" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>

<target name="deploy" depends="build" description="Deploy application">
<copy todir="${deploy.path}/${name}" preservelastmodified="true">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</copy>
</target>

<target name="deploywar" depends="build" description="Deploy application as a WAR file">
<war destfile="${name}.war"
webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>

<!-- ============================================================== -->
<!-- Tomcat tasks - remove these if you don't have Tomcat installed -->
<!-- ============================================================== -->

<path id="catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
</fileset>
</path>

<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>

<target name="reload" description="Reload application in Tomcat">
<reload url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>

<target name="start" description="Start Tomcat application">
<start url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>

<target name="stop" description="Stop Tomcat application">
<stop url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>

<target name="list" description="List Tomcat applications">
<list url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>

<!-- End Tomcat tasks -->

</project>

 

Затем я начинаю создавать JMS-приложение на основе Spring BlazeDS. Для этого я начну с копирования всего набора файлов JAR из папок Spring-Framework и Spring-Flex Distribution (Dist). Некоторые файлы JAR могут не использоваться, но проще и быстрее скопировать их все. Доступность всех банок также позволяет вам использовать весь пружинный каркас и набор пружин Flex.

Приложение Spring JMS создается для подключения через интерфейс Flex. Внешний интерфейс Flex будет подключаться к приложению Spring JMS с помощью интеграции Flex на основе Spring BlazeDS. Поэтому загрузите и распакуйте файл войны BlazeDS и включите файлы jar BlazeDS в проект. Чтобы получить все файлы jar, распакуйте содержимое файла blazeds.war, используя файл jar xvf. Затем скопируйте все файлы в распакованной папке lib blazeds.war в каталог WebContent / WEB-INF / lib проекта flexspring.

В дополнение к уже скопированным файлам jar также скопируйте следующие файлы jar в WebContent / WEB-INF / lib:

  • xbean-spring-3.7.jar — доступно в папке lib / option в дистрибутиве ActiveMQ. Эта банка позволяет встроенную настройку ActiveMQ через параметры конфигурации Spring.
  • aopalliance.jar — доступен в Интернете по адресу http://aopalliance.sourceforge.net/ . Убедитесь, что не загружен файл альфа-релиза по умолчанию. Получить версию 1.0.
  • cglib-2.2.jar — доступен в Интернете по адресу http://sourceforge.net/projects/cglib/files/cglib2/ .
  • asm-all-3.3.jar — доступно в Интернете по адресу http://asm.ow2.org/ .

 Окончательный список jar-файлов в WebContent / WEB-INF / lib проекта flexspring должен выглядеть следующим образом:

activemq-all-5.4.1.jar
aopalliance.jar
asm-all-3.3.jar
cfgatewayadapter.jar
cglib-2.2.jar
commons-codec-1.3.jar
commons-httpclient-3.0.1.jar
commons-logging.jar
flex-messaging-common.jar
flex-messaging-core.jar
flex-messaging-opt.jar
flex-messaging-proxy.jar
flex-messaging-remoting.jar
flex-rds-server.jar
org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.aspects-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.context.support-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.flex.roo.addon-1.0.0.M1.jar
org.springframework.flex.roo.annotations-1.0.0.M1.jar
org.springframework.instrument-3.0.5.RELEASE.jar
org.springframework.instrument.tomcat-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.jms-3.0.5.RELEASE.jar
org.springframework.orm-3.0.5.RELEASE.jar
org.springframework.oxm-3.0.5.RELEASE.jar
org.springframework.spring-library-3.0.5.RELEASE.libd
org.springframework.test-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
org.springframework.web.portlet-3.0.5.RELEASE.jar
org.springframework.web.servlet-3.0.5.RELEASE.jar
org.springframework.web.struts-3.0.5.RELEASE.jar
spring-flex-core-1.5.0.M1.jar
xalan.jar
xbean-spring-3.7.jar

 

Теперь, когда все файлы jar скопированы и, следовательно, разрешены зависимости, давайте приступим к некоторой конфигурации. Вам нужно 4 разных типа конфигурационных файлов для проекта. Они находятся в WebContent / WEB-INF и следующие:

  • web.xml — стандартный дескриптор развертывания контейнера Java EE и сервлета
  • flex-servlet.xml — файл конфигурации для сервлета, который перехватывает все вызовы брокера сообщений BlazeDS. По соглашению Spring ищет файл конфигурации с именем <servlet_name> -servlet.xml для настройки сервлета с именем <servlet_name>. Я назвал мой брокер-перехватчик BlazeDS «flex».
  • Конфигурационные файлы Spring в подкаталоге «spring». Этот путь указан в файле web.xml и может соответствовать любому другому шаблону именования. Эти файлы загружают и настраивают весенние бины.
  • Конфигурации BlazeDS по умолчанию в файле flex / services-config.xml . Я использую Spring для большей части конфигурации адресатов BlazeDS, поэтому services-config.xml содержит только некоторые базовые конфигурации для каналов и ведения журналов.

 

Содержимое web.xml в <web-app> и </ web-app> выглядит следующим образом:

<display-name>flexspring</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/*-config.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>flex</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flex</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

 

Первый элемент конфигурации указывает расположение файлов конфигурации контекста. Напомним, что файлы конфигурации Spring находятся в папке «spring» и соответствуют соглашению об именах, как указано. Основная конфигурация в файлах конфигурации Spring выглядит примерно так:

<!—enables component scanning. The spring JMS classes are in the package com.treasuryofideas.flexspring -- >
<context:component-scan base-package="com.treasuryofideas.flexspring" />

<!-- Embedded ActiveMQ Broker -->
<amq:broker id="broker" useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>


<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost" />

 

ActiveMQ способен создавать места назначения по мере необходимости, поэтому не нужно создавать темы и очереди заранее, но если вы должны были это сделать, это место для этого.

Возвращаясь к конфигурации web.xml, DispatcherServlet настраивается под именем «flex», которое отображается для перехвата всех вызовов, сделанных в шаблоне url: / messagebroker / *. Flex-клиент подключается к каналам BlazeDS и взаимодействует с удаленными получателями, используя URL-адреса, соответствующие этому шаблону.

Сам сервлет принимает дополнительную конфигурацию, которая указана в файле flex-servlet.xml. Важное содержимое файла flex-servlet.xml выглядит примерно так:

<flex:message-broker>
<flex:message-service
default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
</flex:message-broker>

<!-- Messaging destinations -->
<flex:message-destination id="simple-feed" />

<!-- MessageTemplate makes it easy to publish messages -->
<bean id="defaultMessageTemplate" class="org.springframework.flex.messaging.MessageTemplate" />

<!-- Pojo used to start and stop the data feed that pushes data in the 'simple-feed' destination -->
<bean id="simpleFeedStarter" class="com.treasuryofideas.flexspring.SimpleFeed">
<constructor-arg ref="defaultMessageTemplate" />
<flex:remoting-destination />
</bean>

 

Все это настраивает места удаленного взаимодействия и обмена сообщениями BlazeDS, используя пространство имен http://www.springframework.org/schema/flex, которое определяет spring-flex xsd. В случаях без Spring-Flex вы настраиваете эти места назначения в файле flex / services-config.xml. Узнайте больше об элементах конфигурации spring-flex здесь и об опциях flex services-config здесь .

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

 

Пример приложения: простая подача и клиент

Я проиллюстрировал много шагов при создании сервера spring-flex, но пока не упомянул о возможностях примера приложения. Вот что содержится в этом разделе. Сердцем примера приложения Spring-Flex является простой канал, который генерирует случайное число и отправляет его через шаблон JMS. Пружина прогибается тест — драйв имеет подобный пример. У меня также есть пример генератора случайных слов, включенный в код загрузки.

Flex-клиент — это простой клиент, который запускает и останавливает простой канал, имеет возможность подписаться на канал и отображать случайное число. Начнем с создания клиентского приложения.

 

Создание простого гибкого клиента

Сначала откройте Flash Builder и создайте гибкий проект, следуя указаниям мастера, как показано на рисунках 8, 9, 10 и 11.

(Нажмите для увеличения изображения)

После создания проекта добавьте следующий код в mainapp.mxml, чтобы создать простое приложение flex:

<?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="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.messaging.messages.IMessage;

private function messageHandler(message:IMessage):void
{
pushedValue.text = ""+ message.body;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<mx:ChannelSet id="cs">
<mx:StreamingAMFChannel url="http://localhost:8080/flexspring/messagebroker/streamingamf"/>
<mx:AMFChannel url="http://localhost:8080/flexspring/messagebroker/amflongpolling"/>
<mx:AMFChannel url="http://localhost:8080/flexspring/messagebroker/amfpolling"/>
<mx:AMFChannel url="http://localhost:8080/flexspring/messagebroker/amf"/>
</mx:ChannelSet>

<mx:RemoteObject id="simpleFeedStarter" destination="simpleFeedStarter" channelSet="{cs}"/>

<mx:Consumer id="consumer" destination="simple-feed" channelSet="{cs}"
message="messageHandler(event.message)"/>

</fx:Declarations>
<s:layout>
<s:VerticalLayout paddingTop="20" paddingLeft="20" gap="20"/>
</s:layout>

<s:Label text="Simple Feed" fontSize="18" fontWeight="bold"/>

<s:HGroup verticalAlign="middle">
<s:Label text="Simple Feed" width="120"/>
<s:Button label="Start" click="simpleFeedStarter.start()"/>
<s:Button label="Stop" click="simpleFeedStarter.stop()"/>
</s:HGroup>

<s:TextInput id="pushedValue" width="250" verticalCenter="0" horizontalCenter="0"/>

<s:Button label="Subscribe" click="consumer.subscribe()" enabled="{!consumer.subscribed}" verticalCenter="30" horizontalCenter="-50"/>
<s:Button label="Unsubscribe" click="consumer.unsubscribe()" enabled="{consumer.subscribed}" verticalCenter="30" horizontalCenter="50"/>

</s:Application>

 

Вот и все, приложение готово к тестированию. Запустите сценарий ant build, чтобы развернуть веб-приложение flexspring на tomcat. Развертывание Ant делает свое дело. Затем запустите Tomcat и, наконец, подключитесь к серверу flexspring, запустив клиент Flex. Пример приложения при запуске выглядит так, как показано на рисунке 12.

 

Резюме

Spring-flex позволяет использовать возможности пружины в приложениях flex и упрощает настройку назначений BlazeDS с помощью конфигурации в стиле Spring. Это облегчает разработку приложений Spring и Flex для разработчиков Spring. Пример приложения в этой статье лишь поверхностно, но, надеюсь, охватывает множество деталей по настройке и конфигурации, с которыми вам необходимо ознакомиться. Немного времени уходит на сам код приложения, но вы можете загрузить здесь исходный код как сервера, так и клиента . Последнее, но не менее важное, не стесняйтесь задавать мне вопрос о статье или предмете в целом в твиттере @tshanky или отправив мне электронное письмо на tshanky в gmail dot com. Вы можете прочитать больше обо мне на моем сайте www.shanky.org и на моемСтраница автора Amazon .