Documente Academic
Documente Profesional
Documente Cultură
Autores
Jeremy Grelle
Verso 1.5.0.RC1
Cpias deste documento podem ser feitas para o seu uso prprio e para distribuio para outras pessoas, desde que voc no cobrar qualquer taxa para cpias e ainda desde que cada cpia contenha este Aviso de direitos autorais, distribudos na forma impressa ou eletronicamente.
Junho 2011
1. Viso geral de integrao Primavera BlazeDS 1.1. Fundo 1.2. Mnimo maior dependncia verses Primavera Integrao BlazeDS 1.5 requer para executar 1.3. Mnimo principais verses de dependncia exigido por recursos opcionais 1.4. Onde obter suporte 2. Configurando e usando o BlazeDS MessageBroker com Spring 2.1. Introduo 2.2. Configurando o DispatcherServlet Primavera 2.3. Configurando o MessageBroker na Primavera 2.4. Solicitaes de mapeamento para o MessageBroker 2.5. Usando clientes Flex ao lado de controladores Spring MVC 2.6. Usando Spring Destinos de gesto do cliente Flex 2.7. Personalizao MessageBroker avanados 2.8. Usando Tradutores exceo personalizada 2.9. Usando personalizado Mensagem Interceptors 2.9.1. Tratamento personalizado com recursos Mensagem Interceptors 2.9.2. Personalizao da Cadeia Interceptor Mensagem 2.10. Fornecendo adaptadores Servio Personalizado 3. Exportao Beans da Primavera para Flex Remoting 3.1. Introduo 3.2. Configurando o servio de Remoting 3.3. Usando o remoting destino Tag 3.4. Feijo para exportao Remoting com @ RemotingDestination 3.4.1. Fornecendo exteriorizada Canal Ids 4. Comunicar-se com pontos de extremidade RESTful Spring MVC usando AMF 4.1. Introduo 4.2. Usando AmfView 4.3. Usando AmfHttpMessageConverter 4.4. Interagindo com pontos de extremidade RESTful AMF do Cliente Flex 5. Suporte aprimorado AMF 5.1. Personalizando AMF Converso 5.1.1. Configurando AMF Converso de tipo 5.1.1.1. Usando mapeamento de campo direto 5.1.1.2. Desserializar objetos imutveis com @ AmfCreator 5.1.1.3. Ignorando Propriedades Durante AMF Converso 5.1.1.4. Fornecimento de conversores personalizados 5.2. Trabalhando com Hibernate 5.2.1. Configurando o Hibernate Entity suporte de serializao / desserializao 5.3. De utilizar a Digitalizao Classpath para AMF Configurao
6. Protegendo Destinos BlazeDS com Spring Security 6.1. Introduo 6.1.1. A simples configurao do Spring Security 3 6.1.2. Permitindo a Primavera cadeia de filtros de segurana no web.xml 6.2. Configurando a Integrao Spring Security 6.2.1. Usando um LoginCommand personalizado 6.2.2. Acessando Detalhes do Usurio 6.2.3. Traduo de segurana Exception 6.2.4. garantiu atributos de configurao 6.3. Configurando o Endpoint e Segurana Destino 6.3.1. Assegurar canais especficos BlazeDS 6.3.2. Protegendo Canais BlazeDS pelo Caminho URL Endpoint 6.3.3. Protegendo exportou servios Primavera 7. Integrao com o servio de mensagens BlazeDS 7.1. Introduo 7.2. Configurando o Servio de Mensagem 7.3. Usando Destinos Mensagem AMF 7.4. Usando Destinos Mensagem JMS 7.5. Usando Destinos Primavera Mensagem Integrao 7.6. Envio de mensagens com a AMF MessageTemplate 8. Criando e executando o Primavera exemplos de integrao BlazeDS 8.1. Introduo 8.1.1. Maven Setup 8.1.2. Criando e executando o Test Drive 8.1.3. Usando BlazeDS 4 com Maven 8.1.4. Baixar o Test Drive pr-embalados 8.1.5. Importao e executando o Test Drive no Eclipse 9. Trabalhando com o Addon Flex para a Primavera de Roo 9.1. Introduo 9.1.1. Requisitos mnimos para o Addon Flex para a Primavera de Roo 9.1.2. Instalar o Addon Flex para a Primavera de Roo 9.1.3. Flex Addon para a Primavera de Roo Features 9.1.4. Comandos Flex 9.1.4.1. Flex configurao 9.1.4.2. Flex remoting andaime 9.1.4.3. Flex remoting todos 9.1.5. Construindo e executando um projeto Addon Flex 9.1.5.1. Construindo e executando um projeto Addon Flex com Maven 9.1.5.2. Importando um Projeto Addon Flex em SpringSource Tool Suite e Flash Builder 9.1.6. Executando o exemplo Roo Script 9.1.7. Problemas conhecidos
Primavera-powered Rich Internet Applications usando o Adobe Flex para a tecnologia do lado do cliente. BlazeDS um projeto open source da Adobe que oferece o remoting eo fundamento de mensagens para conectar um Flex baseado em front-end para Java servios back-end. Embora tenha sido possvel utilizar o BlazeDS para se conectar a Primavera de gesto de servios, no foi de uma forma que se sente "natural" para um desenvolvedor Spring, exigindo a carga extra de ter que manter uma configurao separada BlazeDS xml. Primavera Integrao BlazeDS vira o jogo, tornando o MessageBroker BlazeDS uma mola de gesto objeto, abrindo os caminhos para uma integrao mais ampla que se segue "o caminho da Primavera".
1.2. Mnimo maior dependncia verses Primavera Integrao BlazeDS 1.5 requer para executar
Java 5 Spring 3.0 Adobe BlazeDS 4,0
<param-name> contextConfigLocation </ param-name> <param-value> / WEB-INF/config/web-application-config.xml </ param-value> </ Init-param> <load-on-startup> 1 <load-on-startup /> </ Servlet>
Isso faz com que o BlazeDS Primavera Integrao marcas de configurao disponvel sob a flexvel namespace em seus arquivos de configurao. A configurao acima ser assumido para o resto dos exemplos de configurao a seguir. Para todos os detalhes de cada atributo e tag disponvel no namespace de configurao, certifique-se de se referir a primavera-flex-1.0.xsd como cada elemento e atributo est totalmente documentado l. Usando um XSD-aware editor XML, como o de Eclipse devem trazer a documentao automaticamente enquanto voc digita. No mnimo, o MessageBrokerFactoryBean deve ser configurado como um bean na sua Primavera WebApplicationContext em ordem para iniciar o MessageBroker , juntamente com uma MessageBrokerHandlerAdapter e uma adequada HandlerMapping (geralmente um SimpleUrlHandlerMapping ) para rotear solicitaes de entrada para a Primavera de gesto MessageBroker . Esses gros sero registrados automaticamente usando o fornecido mensagem broker- tag no seu arquivo de definio de feijo. Por exemplo, em sua forma mais simples: <flex:message-broker/> Isto ir configurar o MessageBroker e infraestruturas de apoio necessrias, usando padres sensveis. Os padres podem ser sobrepostos usando os atributos fornecidos da mensagem broker- tag e seus elementos filho associados. Por exemplo, o local padro do arquivo de configurao XML BlazeDS (/ WEB-INF/flex/services-config.xml) pode ser substitudo usando
o servios-config path- atributo. O MessageBrokerFactoryBean usa Spring ResourceLoader abstrao, de modo que os caminhos de recurso tpico da Primavera podem ser usadas. Por exemplo, para carregar a configurao do classpath da aplicao: <Flex: mensagem de corretor de servios-config-path = "classpath *: services-config.xml" O equivalente MessageBrokerFactoryBean definio usando configurao do Spring baunilha seria: <-! Bootstraps e expe a MessageBroker BlazeDS -> <bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean"> <property name="servicesConfigPath" value="classpath*:servicesconfig.xml" /> <Feijo /> Note-se especialmente que, com a mensagem de corretor de tag, no necessrio atribuir um id personalizado para o MessageBroker, e de fato desanimado para que voc no ter que se continuamente de referncia mais tarde. A nica razo que voc poderia precisar para fornecer um ID de costume se voc estivesse bootstrapping mais de um MessageBroker na WebApplicationContext mesmo.
O cenrio mais simples mapeamento pedido quando o Flex front-end o tipo de cliente apenas para a aplicao. Neste caso, voc pode simplesmente mapa / MessageBroker como o caminho de nvel superior para os pedidos. O mapeamento no web.xml seria: <- Mapear todos os pedidos / messagbroker ao DispatcherServlet para lidar com -> <servlet-mapping> <servlet-name> Primavera Dispatcher Servlet MVC </ servletname> <url-pattern> / MessageBroker / * </ url-pattern> </ Servlet-mapping> Quando se utiliza a mensagem de corretor de tag de configurao, um SimpleUrlHandlerMapping que est instalado por padro, todos os mapas de entrada DispatcherServletsolicitaes para a Primavera de gesto MessageBroker usando um / * padro caminho. O mapeamento padro pode ser substitudo pelo fornecimento de um ou maismapeamento elementos filho. Se voc quiser fornecer seu prprio HandlerMapping configurao de feijo, voc pode desativar o padro usando o disable-padro de mapeamento de atributo da mensagem broker- tag. A ordem dos
instalados SimpleUrlHandlerMapping pode ser definido (para cenrios complexos, onde vrios tipos de mapeamento de manipulador so instalados no mesmo contexto), utilizando o mapeamento de fim- atributo. O SimpleUrlHandlerMapping na WebApplicationContext Primavera mapas todos os pedidos para a Primavera de gesto MessageBroker atravs do MessageBrokerHandlerAdapter .A configurao padro instalado pela mensagem de corretor de tag de configurao equivalente s definies de feijo seguinte: <-! Caminhos pedido Mapas em / * para o MessageBroker BlazeDS -> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapp ing"> <property name="mappings"> <value> / _messageBroker *= </ Value> </ Property> <Feijo /> <-! Despachos pedidos mapeado para um MessageBroker -> <bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter "/> Definies canal no BlazeDS services-config.xml deve corresponder ao mapeamento escolhido. Por exemplo, para configurar um canal AMF tpico em BlazeDS que coincide com a estratgia de mapeamento acima: <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <Endpoint url = "http:// {server.name}: {server.port} / {} context.root / MessageBroker / amf" class = "flex.messaging.endpoints.AMFEndpoint" /> <properties> <polling-enabled> false </ pesquisa-enabled> </ Properties> </ Channel-definition> Veja a documentao do BlazeDS para mais informaes sobre como configurar os canais de comunicao no services-config.xml.
camada de aplicativo principal (servios, segurana, infraestrutura de apoio, etc) em um contexto carregado atravs do pai ContextLoaderListener e configure todos os aspectos de seus controladores Spring MVC em uma criana DispatcherServlet contexto, e todos os aspectos especficos para seu cliente Flex em uma criana separada DispatcherServletcontexto. Esta abordagem pode parecer da seguinte maneira no web.xml: <context-param> <param-name> contextConfigLocation </ param-name> <param-value> / WEB-INF/spring / *- context.xml </ Param-value> </ Context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </ ouvinte classe> <Ouvinte /> <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> <servlet> <servlet-name> primavera-mvc </ servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </ servlet-class> <load-on-startup> 1 <load-on-startup /> </ Servlet> <servlet-mapping> <servlet-name> primavera-mvc </ servlet-name> <url-pattern> / primavera / * </ url-pattern> </ Servlet-mapping> Aqui, o contexto de aplicao pai est sendo montado a partir de um grupo de arquivos que terminam em -context.xml contidas no / WEB-INF/spring / diretrio. O contexto da criana para a configurao da Flex-especficos seriam construdos (por conveno) de / WEB-INF/flex-servlet.xml eo contexto para os controladores Spring MVC seria construda a partir de / WEBINF/spring-mvc-servlet . xml . Esta abordagem fornece uma boa separao das preocupaes e permitir Spring 2.5 + controladores anotada a trabalhar com sua configurao padro. Uma abordagem alternativa manter as coisas sob uma consolidada DispatcherServlet contexto. O lado negativo desta abordagem que ele requer uma configurao adicional manual, e voc tem que modificar a
sua abordagem de mapeamento de acordo, como o mapeamento de primavera / / * para o DispatcherServlet , mapeamentoMessageBroker / / * para a Primavera de gesto MessageBroker atravs do mapeamento XML de configurao tag namespace, e modificar qualquer canal de definies BlazeDS em conformidade. Voc poderia substituir a estratgia de mapeamento padro da mensagem broker- tag da seguinte forma: <flex:message-broker> <flex:mapping pattern="/messagebroker/*" /> </ Flex: mensagem de corretor-> e voc teria para dar conta do mapeamento / primavera / * em seu canal de definies BlazeDS. Por exemplo: <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <Endpoint url = "http:// {server.name}: {server.port} / {} context.root primavera / / MessageBroker / amf" class = "flex.messaging.endpoints.AMFEndpoint" /> <properties> <polling-enabled> false </ pesquisa-enabled> </ Properties> </ Channel-definition> Alm de definir a estratgia de mapeamento consolidado, voc tambm ter que habilitar manualmente o correto HandlerMapping e HandlerAdapter para os controladores Spring MVC , como descrito na documentao do Spring MVC , devido ao fato de que se alternam HandlerMapping e HandlerAdapter feijo so configuradas automaticamente quando se utiliza a mensagem de corretor- tag.
voc estiver usando destinos explicitamente definido no servicesconfig.xml (isto , no destinos dinmico) E voc compilar o seu cliente flexvel contra aquele arquivo seu destino usando o aplicativo de largura canal padro E voc compilar o seu cliente flexvel contra aquele arquivo
Mesmo se voc no estivesse usando destinos criados dinamicamente discutvel se uma boa idia para sempre compilar o seu cliente contra services-config.xml, assim acoplamento o seu cliente para a configurao do servidor. Muitas vezes, desejvel manter o seu cliente flex e seu cdigo do lado do servidor como dois mdulos distintos, mas compilando contra servicesconfig.xml borra as fronteiras entre esses mdulos. Nossa recomendao que geralmente mais limpo para manter a configurao do lado do cliente ChannelSets explicitamente contida dentro do mdulo cliente. Uma excelente maneira de fazer isso sem ter que embutir as
URLs em seu cdigo de cliente usar um framework ActionScript DI como Spring ActionScript (a Primavera projeto Extensions, anteriormente conhecida como Prana). Se voc optar por ir a rota de compilar o seu cliente contra o servicesconfig.xml, note que voc pode pelo menos manter as informaes de URL fora do cdigo do cliente usando ServerConfig.getChannel como descrito na documentao do BlazeDS referenciados.
Analisar o BlazeDS arquivos de configurao XML e aplicar as suas configuraes para um MessageBroker recm-criado Iniciando o MessageBroker e seus servios
Um especial MessageBrokerConfigProcessor interface callback fornecido, que permite o processamento personalizado para ser feito no recm-criado MessageBroker aps cada fase, antes que seja disponibilizado para processamento do pedido. Esta interface usada internamente pelo Spring Integrao BlazeDS, mas tambm est disponvel para uso geral na introspeco programtica avanada e personalizao do MessageBroker . Um costume MessageBrokerConfigProcessor pode ser configurado como um bean Spring e depois registrado no MessageBrokerFactoryBean atravs da configurao do processador tag. Por exemplo, dada uma implementao trivial para registrar algumas informaes adicionais sobre o MessageBroker: com.example pacote; org.springframework.flex.config.MessageBrokerConfigProcessor de importao; flex.messaging.MessageBroker de importao; flex.messaging.services.RemotingService de importao; MyDestinationCountingConfigProcessor public class {MessageBrokerConfigProcessor pblica MessageBroker processAfterStartup (broker MessageBroker) { RemotingService remotingService = (RemotingService) broker.getServiceByType (RemotingService.class.getName ()); if (remotingService.isStarted ()) { System.out.println ("O servio de Remoting foi iniciado com" + RemotingService.getDestinations () size () + "Destinos")..; } retorno corretor; } pblica MessageBroker processBeforeStartup (broker MessageBroker) { retorno corretor; } }
Esta classe pode ser configurado e registrado com o MessageBroker da seguinte forma: <flex:message-broker> ref="myConfigProcessor" <flex:config-processor /> </ Flex: mensagem de corretor-> <bean id="myConfigProcessor" class="com.example.MyDestinationCountingConfigProcessor" />
Pseudnimo
Classe MessageInterceptor
LOGIN_MESSAGE_INTERCEPTOR
LoginMessageInterceptor
message-broker/secure
ENDPOINT_INTERCEPTOR
EndpointInterceptor
message-broker/secure channel
Primavera de gesto existentes feijo como uma preocupao configurao externa. O MessageBroker transparente manipula o processo de serializao e desserializao entre o AMF Flex formato de dados e Java.
3.3. Usando o
remoting destino
Tag
O destino remoting- tag de configurao pode ser usada para exportar existentes Primavera de gesto de servios para comunicao remota direta de um cliente Flex.Dada a definio de feijo seguintes Primavera para um productService bean: <bean id="productService" class="flex.samples.product.ProductServiceImpl" /> e assumindo a existncia de uma mola de gesto MessageBroker configurado atravs da mensagem de corretor de tag, o seguinte top-level remoting destino marca ir expor o servio para comunicao remota para o cliente Flex como um destino de servio remoto chamado productService : <! - Exponha o feijo productService para comunicao remota BlazeDS -> <flex:remoting-destination ref="productService" /> Por padro, o destino de servio remoto exposto ao cliente Flex ir utilizar feijo nome do bean sendo exportado como o ID de servio do destino, mas isso pode ser substitudo com o destino id- atributo no remoting-destino tag. Uma maneira alternativa de usar o remoting destino tag como um elemento filho de uma definio de feijo de nvel superior. Isto ainda mais conciso e funciona bem se voc no tem a necessidade de manter suas definies de domnio da camada de feijo em separado das preocupaes de infra-estrutura, tais como remoting Flex. (. Tenha em mente que mant-los separados pode levar a mais fcil de testabilidade da camada de domnio core) A seguir alcana o resultado equivalente ao exemplo anterior: <bean id="productService" class="flex.samples.product.ProductServiceImpl"> <flex:remoting-destination /> <Feijo /> Os mtodos que so expostos a ser chamado pelo cliente Flex pode ser mais bem controlado atravs do uso do incluem-mtodos e excluir mtodos de atributos doremoting destino tag. Os canais BlazeDS sobre o qual o destino exposto tambm pode ser controlado usando os canais de atributo. (. Estes atributos esto disponveis se utilizar o nvel superior ou a verso aninhada) Um exemplo mais extensivamente personalizada seria algo parecido com: <Flex: remoting destino ref = "productService" incluem os mtodos = "read, update" exclude-mtodos = "criar, apagar" canais = "my-amf, meu seguro-amf" /> O destino remoting- tag transparente configurando um RemotingDestinationExporter instncia do bean para cada bean sendo exportado. A sintaxe de feijo equivalente completa sem o apoio namespace seria:
<! - Exponha o feijo productService para comunicao remota BlazeDS -> <bean id="product" class="org.springframework.flex.remoting.RemotingDestinationExporte r"> <property name="messageBroker" ref="_messageBroker"/> <property name="service" ref="productService"/> <property name="destinationId" value="productService"/> <property name="includeMethods" value="read, update"/> <property name="excludeMethods" value="create, delete"/> <property name="channels" value="my-amf, my-secure-amf"/> <Feijo />
Captulo 4. Comunicar-se com pontos de extremidade RESTful Spring MVC usando AMF 4.1. Introduo
Spring MVC 3 introduziu o suporte para a construo de servios RESTful usando o @ controlador modelo de programao. Isto permite para servir mltiplas representaes do mesmo contedo com base no que o cliente tenha solicitado. Por exemplo, uma extremidade RESTful nico pode ser configurado para servir HTML, XML ou JSON tudo a partir de um nico pedido manipulao de mtodo Java a classe Controller @. Esta abordagem permite uma implementao de servio nico para apoiar uma variedade de tipos diferentes
de clientes, fornecendo automaticamente a representao que o cliente deseja particular. No intuito de melhor apoiar Flex como um daqueles tipos de clientes, Spring BlazeDS Integrao acrescenta o apoio necessrio para ser capaz de suportar uma representao AMF de um recurso RESTful dadas.
AmfView e AmfHttpMessageConverter fornecem a base necessria a utilizao de
FMA com Spring MVC @ controladores. As implementaes so bastante semelhantes sMappingJacksonJsonView e MappingJacksonHttpMessageConverter que fornecem Spring out-of-the-box JSON. Os conceitos bsicos de configurao dessas classes so mostradas ao longo do restante deste captulo.
conjunto com o Spring MVC ContentNegotiatingViewResolver . Em particular, espera-se que ele ser configurado como um "default" de execuo vista singleton que pode tornar qualquer modelo MVC como AMF, em vez de precisar ter uma nica instncia por nome de vista lgico. O exemplo a seguir mostra uma configurao simples de ContentNegotiatingViewResolver para apoiar tanto JSON e representaes AMF: <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewR esolver"> <property name="mediaTypes"> <map> <entry key="json" value="application/json"/> <entry key="amf" value="application/x-amf"/> </ Mapa> </ Property> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJson View" /> <bean class="org.springframework.flex.http.AmfView" /> </ List> </ Property> <Feijo />
O exemplo acima inclui definir o Mdias propriedade para mapear extenses de arquivo para tipos de mdia. Isso til para os clientes (como Flex) que nem sempre so capazes de definir um adequado Aceitar cabealho. Assim, dada a configurao acima, e um controlador simples, como o seguinte: @ Controlador @ RequestMapping ("/ contatos") public class {ContactsController @ Autowired privada IContactDAO contactDAO;
@ RequestMapping (mtodo RequestMethod.GET =) public List <contato> find () { retorno contactDAO.findAll (); } }
um HTTP GET pedido emitido para qualquer http://localhost/myapp/contacts.amf sem uma adequada Aceitar cabealho ou http://localhost/myapp/contacts com um cabealho de aceitar application / x-amf retornar a lista de contatos como uma mensagem AMF que podem ento ser serializado para um ArrayCollection de objetos ActionScript no cliente Flex.
converter de e para a AMF. , A fim de ser capaz de converter HTTP POST e PUT corpos mensagem de solicitao da AMF a objetos Java para ser passado como um @ RequestBody argumentos para Controlador @ mtodos, deve ser adicionado ao conversores usados por Spring MVC AnnotationMethodHandlerAdapter . , A fim de adicionar suporte AMF ao mesmo tempo, deixando o quadro do padro HttpMessageConverters no lugar, uma simples BeanPostProcessor como o exemplo a seguir pode ser usado: org.springframework.flex.samples.rest pacote; org.springframework.beans.BeansException importao; org.springframework.beans.factory.config.BeanPostProcessor de importao; org.springframework.flex.http.AmfHttpMessageConverter de importao; org.springframework.http.converter.HttpMessageConverter de importao; org.springframework.util.ObjectUtils de importao; org.springframework.web.servlet.mvc.annotation.AnnotationMethodHand lerAdapter de importao; HandlerAdapterPostProcessor public class {BeanPostProcessor postProcessBeforeInitialization public Object (Objeto de feijo, String beanName) {throws BeansException retorno de feijo; } postProcessAfterInitialization public Object (Objeto de feijo, String beanName) {throws BeansException if (feijo instanceof AnnotationMethodHandlerAdapter) { AnnotationMethodHandlerAdapter adaptador = (AnnotationMethodHandlerAdapter) de feijo; HttpMessageConverter <?>[] conversores adapter.getMessageConverters = ();
adapter.setMessageConverters ((HttpMessageConverter <?>[]) ObjectUtils.addObjectToArray (conversores, AmfHttpMessageConverter nova ())); } retorno de feijo; } }
Com essa configurao no lugar, e um controlador, tais como o seguinte: @ Controlador @ RequestMapping ("/ contatos") public class {ContactsController @ Autowired privada IContactDAO contactDAO; @ RequestMapping (mtodo RequestMethod.POST =) Fale criar pblica (@ RequestBody Contato contato) { contactDAO.create retorno (contato); } }
o cliente Flex pode enviar um HTTP POST com um pedido ActionScript Fale serializados para AMF no corpo da mensagem para http://localhost/myapp/contacts para persistir esse contato ao banco de dados.
Um completo InSync repouso exemplo de interagir com um Spring MVC @ Controller agora fornecida no Test Drive . Esta amostra de duplicatas a funcionalidade completa do pedido completo InSync que foi originalmente construdo utilizando Remoting BlazeDS. Ele mostra em detalhes como contornar limitaes Flash player para uso AMF para interagir com um servio RESTful que a suporta.
O acesso de campo direto para propriedades (em vez de exigir getters e setters) Uso de um construtor alternativo anotado com @ AmfCreator para desserializao (em vez de um pblico no-arg construtor) Ignorando certas propriedades durante a serializao e / ou desserializao quando marcadas com @ AmfIgnore ou AmfIgnoreField @
Para aproveitar o apoio AMF melhorada, uma instncia de SpringPropertyProxy deve ser registrado para cada tipo de indivduo que poderia ser convertido para / de AMF.Um conjunto especializado de MessageBrokerConfigProcessors so fornecidos para que tome diversas abordagens para localizar os tipos a ser registrado: Tabela 5.1. Manuseio MessageBrokerConfigProcessors AMF
Classe
org.springframework.flex.core.io.HibernateConfigProcessor
U m e "T
org.springframework.flex.core.io.JpaHibernateConfigProcessor
U ti e
Classe
"T
U org.springframework.flex.core.io.ClassPathScanningAmfConversionServiceConfigProcessor p C
Configurao explcita de uma dessas classes feita da mesma forma com qualquer outro MessageBrokerConfigProcessor , definindo a aplicao desejada, como feijo e fiao-lo no MessageBroker usando a configurao do processador tag namespace. 5.1.1.1. Usando mapeamento de campo direto Por padro, o SpringPropertyProxy ir ler e gravar valores de propriedade durante a AMF converso usando JavaBean padro obter e definir mtodos, assim como o padro BlazeDS BeanProxy faz. Alternativamente, voc muitas configur-lo para acessar campos diretamente. Isso til em casos como quando voc tem uma classe que no expe getter pblico ou mtodos setter, como as seguintes: @ Entity public class {PackagePrivatePerson @ Id @ GeneratedValue (strategy = GenerationType.AUTO) Integer id; @ Version @ Column (name = "verso") Verso inteiro; String nome; }
, A fim de ser capaz de converter uma classe de / para a AMF, voc deve configurar o useDirectFieldAccess propriedade de um dos processadores de configurao fornecido AMF. Por exemplo: <flex:message-broker> ref="myJpaConfigProcessor" <flex:config-processor /> </ Flex: mensagem de corretor-> <bean id="myJpaConfigProcessor" class="org.springframework.flex.core.io.JpaConfigProcessor"> <property name="useDirectFieldAccess" value="true" />
<Feijo />
5.1.1.2. Desserializar objetos imutveis com @ AmfCreator Por padro, o SpringPropertyProxy tentar instanciar tipos usando um construtor no-arg pblico durante o processo de desserializao AMF. Tipos que no tm um construtor no-arg deve fornecer um construtor alternativo anotado com org.springframework.flex.core.io.AmfCreator , cujas propriedades so, por sua vez anotado comorg.springframework.flex.core.io.AmfProperty , a fim para ser elegvel para a converso AMF. Por exemplo: public class {ImmutableValueObject final String foo; zoo Integer final; @ AmfCreator pblica ImmutableValueObject (@ AmfProperty ("foo") String foo, @ AmfProperty ("zoo") Integer zoo) { this.foo = foo; this.zoo = zoo; } public String getFoo () { retorno this.foo; } pblica Integer getZoo () { retorno this.zoo; } }
5.1.1.3. Ignorando Propriedades Durante AMF Converso s vezes desejvel ignorar certas propriedades durante a serializao e / ou a desserializao. Por exemplo, pode haver uma propriedade em seu objeto de Java que voc no deseja sempre enviar para o cliente Flex. SpringPropertyProxy fornece um meio de conseguir isso adicionando algumas anotaes adicionais para seus objetos Java. A anotao org.springframework.flex.core.io.AmfIgnore podem ser usados em mtodos getter e setter. Anotar um mtodo getter com @ AmfIgnore far com que a propriedade a ser ignorados durante a serializao para AMF, e anotar um mtodo setter com @ AmfIgnore far com que a propriedade a ser ignorados durante a desserializao da AMF. Por exemplo: public class {IgnorablePropsObject / / Vai ser ignorado em ambos serializao e desserializao private String foo; / / Vai ser ignorado apenas na serializao
bar private String; / / Vai ser ignorado apenas na desserializao private String baz; @ AmfIgnore public String getFoo () { retorno foo; } @ AmfIgnore public void setFoo (String foo) { this.foo = foo; } @ AmfIgnore getBar public String () { retorno bar; } public void setBar (String bar) { this.bar = bar; } public String getBaz () { baz retorno; } @ AmfIgnore public void setBaz (String baz) { this.baz = baz; } }
Ao usar mapeamento de campo direto, a anotao org.springframework.flex.core.io.AmfIgnoreField pode ser usado em campos para obter uma funcionalidade equivalente.Por exemplo: public class {IgnorableFieldsObject / / Vai ser ignorado em ambos serializao e desserializao @ AmfIgnoreField private String foo; / / Vai ser ignorado apenas na serializao @ AmfIgnoreField (onDeserialization = false) bar private String; / / Vai ser ignorado apenas na desserializao @ AmfIgnoreField (onSerialization = false) private String baz; }
5.1.1.4. Fornecimento de conversores personalizados Personalizar o modo como os objetos Java so convertidos de / para AMF uma questo de fornecimento de Primavera do tipo 3 Conversores e registrlos com oConversionService . Os processadores de configurao desde AMF todos se estendem desde org.springframework.flex.core.io.AbstractAmfConversionServiceConf igProcessor , que fornece um mtodo modelo para registrar conversores adicionais. Um tal uso para este seria se voc quisesse usar a digitalizao classpath para localizar AMF-elegveis tipos, mas ainda queria registrar o Hibernate especializados conversores. O exemplo a seguir ilustra isso: Primeiro, vamos configurar o ClassPathScanningAmfConversionServiceConfigProcessor usando o Spring 3 estilo Configurao @: pacote com.foo.config; org.springframework.context.annotation.Bean importao; org.springframework.context.annotation.Configuration de importao; org.springframework.core.convert.converter.ConverterRegistry de importao; org.springframework.flex.core.io.ClassPathScanningAmfConversionServ iceConfigProcessor de importao; org.springframework.flex.core.io.HibernateProxyConverter de importao; org.springframework.flex.core.io.PersistentCollectionConverterFacto ry importao; @ Configurao CustomConverterConfiguration public class { @ Bean myConfigProcessor ClassPathScanningAmfConversionServiceConfigProcessor pblica () { retorno ClassPathScanningAmfConversionServiceConfigProcessor novo ("com.foo.domain") { @ Override protegidos configureConverters void (ConverterRegistry registro) { registry.addConverter (HibernateProxyConverter new ()); registry.addConverterFactory (novo PersistentCollectionConverterFactory ()); } }; } }
Ento, ns simplesmente fazer referncia que o processador de configurao, como de costume em nossa MessageBroker configurao:
Verifique cada propriedade do bean para ver se ele um Proxy contm Hibernate especficos ou Recolha Se o Proxy / Collection inicializado, desembrulhe o valor subjacente para serializao Se o Proxy / Collection inicializado, o retorno nulo para o valor a ser serializado
Na hora da inicializao, API do Hibernate Os metadados so usados para determinar quais os tipos de registrar com BlazeDS usar o especializado SpringPropetyProxy . O comportamento padro pode ser prorrogado / substitudos por implantar manualmente ou o HibernateConfigProcessor , JpaHibernateConfigProcessor , ou alguma outra extenso personalizada de AbstractAmfConversionServiceConfigProcessor como um bean Spring e fiao-lo no MessageBroker atravs da configurao de processador tag
namespace XML, como mostrado na Seo 5.1.1, "Converso de tipo Configurando AMF" .
<authentication-manager> <authentication-provider> <user-service> <user name="john" password="john" authorities="ROLE_USER" /> <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" /> <user name="guest" password="guest" authorities="ROLE_GUEST" /> </ User-service> </ Autenticao do provedor> </ Autenticao gerente-> </ Feijo: feijo> Com uma aplicao Flex tpicas, esta abordagem preferido ao uso de configurao do Spring Security auto-config. Auto-config configura um nmero de caractersticas que normalmente no so necessrios com uma aplicao Flex. Por exemplo, auto-config estabelece um padro interceptar urlentrada que requer autenticao para todos os caminhos URL dentro do aplicativo. O FlexAuthenticationEntryPoint retornar uma resposta de erro adequada AMF quando tal URL so hit via normal de processamento de comunicao Flex, mas chamada geralmente deve ser considerado um ltimo recurso. Maior parte do processamento de autenticao do tempo, e autorizao deve acontecer mais profundas dentro do processo de manipulao BlazeDS pedido, onde h oportunidades para fornecer informaes mais teis para o cliente. (Veja Protegendo Canais BlazeDS pelo Caminho URL Endpoint de uma alternativa para interceptar url- que gera respostas AMF adequada para o cliente Flex.) Recomenda-se comear pelo mais simples, como neste exemplo, e adicionar os recursos adicionais, conforme necessrio.
Vamos assumir a configurao acima est no lugar para o restante dos exemplos neste captulo. Para detalhes adicionais sobre as muitas opes disponveis na configurao e uso do Spring Security, consulte o projeto de documentao .
login-command="myLoginCommand"/> <flex:secured </ Flex: mensagem de corretor-> <bean id="myLoginCommand" class="com.foo.app.security.CustomLoginCommand"/> Se o seu costume LoginCommand estende SpringSecurityLoginCommand , as seguintes propriedades sero autowired pelo continer, se possvel:
AMF vez provoca umaFaultEvent para ser jogado do lado do cliente que contm o cdigo de falha de segurana adequado que pode ser fundamentado sobre as medidas adequadas possam ser tomadas. Este comportamento equivalente ao do out-of-the-box recipiente baseado em mecanismos de segurana fornecidos com BlazeDS, de modo que o modelo de programao do lado do cliente permanece a mesma.
Voc pode definir restries de segurana em mltiplos canais BlazeDS de uma s vez utilizando o seguro-endpoint caminho- elemento filho do seguro tag. Neste caso, voc especificar um padro de URL a ser protegido em vez de uma ID de canal especfico. Por exemplo: <flex:message-broker> <flex:secured> <flex:secured-endpoint-path pattern="**/messagebroker/**" access="ROLE_USER" /> </ Flex: seguro> </ Flex: mensagem de corretor-> Isso resulta em qualquer pedido a ser encaminhado a qualquer canal cujo ponto de extremidade de URL contm "MessageBroker / /" no caminho para exigir que o usurio estar logado e ter a "role_user" autoridade. Se qualquer um deles violado, uma FaultEvent ser sinalizado no cliente.
Nota
Ao fixar destinos como nos exemplos abaixo, importante ter em mente que este recurso do Spring Security est usando Spring AOP. Por padro, Spring AOP utiliza proxies JDK dinmico. Como tal, se voc tiver necessidade de garantir mtodos em uma classe que no fazem parte de uma interface que a classe implementa, ento ter de ter o fator esses mtodos para fora em uma interface, ou configurar o Spring para uso CGLIB baseado proxies vez. Veja as referncias Primavera seguinte documentao para obter mais orientaes:
Um dos principais pontos fortes do Spring Security a vrios nveis de granularidade que lhe fornece ao proteger os seus servios de Primavera. Voc pode ir de proteger a sua camada de servio toda em uma declarao concisa: <global-method-security> <protect-pointcut expression="execution(* com.mycompany.*Service.*(..))" access="ROLE_USER"/> </ Global-mtodo de segurana-> para controlar o acesso de uma forma mais refinada na camada de mtodo usando XML: <bean id="myService" class="com.mycompany.myapp.MyService"> <flex:remoting-destination/> <security:intercept-methods> <security:protect method="set*" access="ROLE_ADMIN" />
<security:protect method="get*" access="ROLE_ADMIN,ROLE_USER" /> <security:protect method="doSomething" access="ROLE_USER" /> </ Segurana: interceptar os mtodos> <Feijo /> ao uso de uma combinao de XML e anotaes: <security:global-method-security jsr250-annotations="enabled"/> secured-annotations="enabled" ... <flex:remoting-destination ref="myBankServiceImpl" />
BankService interface pblica { @ Secured ("IS_AUTHENTICATED_ANONYMOUSLY") pblica Conta readAccount (Long id); @ Secured ("IS_AUTHENTICATED_ANONYMOUSLY") Conta pblico [] findAccounts (); @ Secured ("ROLE_TELLER") ps Conta pblica (conta Conta, dobro); }
at mesmo mais refinado ACL baseada em permisses de objeto de domnio. Para mais detalhes sobre as opes disponveis, consulte a documentao do Spring Security.
avanado, o BlazeDS nativos destino da mensagem AMF-base a escolha ideal. Estes destinos podem ser totalmente configurado em um contexto de aplicao Primavera usando amensagem de destino tag namespace XML. Por exemplo, supondo que uma mola de gesto MessageBroker foi configurado, tudo que necessrio para criar um destino bsico chamado "evento-bus" com as configuraes padro o seguinte: <flex:message-destination id="event-bus" /> Isso configura um destino para usar o BlazeDS ActionScriptAdapter para lidar com as mensagens recebidas. As configuraes do destino pode ser ainda mais personalizado atravs de vrios atributos do destino mensagem tag. Aqui est um exemplo do "evento-bus" destino configurado com a maioria dos atributos disponveis: <Flex: mensagem de destino id = "evento-bus" mensagem corretor = "messageServiceBroker" canais = "my-voto-amf, meu seguro-amf" allow-subtpicos = "true" cluster-roteamento de mensagens = "broadcast" mensagem de tempo-para-viver = "1" enviar segurana restrio = "fooConstraint" inscrever-security-constraint = "barConstraint" assinatura-timeout minutos = "1" subtpico-separador = "/" acelerador-inbound-max-frequency = "500" acelerador-inbound poltica = "ERRO" acelerador de sada-max-frequncia = "500" acelerador de sada poltica = "IGNORE" /> A mensagem de broker- atributo uma referncia para o id de uma mola de gesto MessageBroker . Os canais de atributo permite que voc especifique uma lista delimitada por vrgula dos canais BlazeDS a ser utilizado (em ordem de preferncia) para este destino. Os atributos restantes correspondem s opes disponveis atravs da rede eservidor de configuraes quando a configurao de um destino de mensagem no BlazeDS XML especfico. Cada um desses atributos adicionais documentada no XSD para prestar assistncia de concluso de cdigo ao vivo. Para detalhes adicionais sobre seu uso, consulte a documentao do BlazeDS. A mensagem de destino tag serve como base para o jms-mensagem de destino e integrao de mensagens de destino tags de modo que as opes de configurao esto disponveis mesmo, no importa o tipo de subjacentes MessagingAdapter . O nico atributo disponveis na mensagem de destino tag que no est disponvel no JMS e implementaes de Integrao da Primavera o servio do adaptador- atributo, que pode ser usado para fornecer um costume ServiceAdapter atravs de uma referncia a uma ManageableComponentFactoryBean . Isto pode ser usado para fornecer a integrao com protocolos de mensagens adicionais no suportados diretamente pelo Spring Integrao BlazeDS. Ver Fornecer Adaptadores servio personalizado para obter informaes adicionais sobre como usar o ManageableComponentFactoryBean .
Para integrao com JMS, um especial JmsAdapter , desde que internamente faz uso de Spring JmsTemplate , DestinationResolver , DefaultMessageListenerContaine r e outras abstraes tais JMS para a interao simplificada com recursos JMS. A mensagem de jms-destino tag namespace XML usada para expor destinos como destinos JMS mensagem BlazeDS. Os atributos mnimos que devem ser especificados so o destino id e exatamente um dos jmsdestino , fila de nome , ou nome-topic . A JMSConnectionFactory de referncia tambm necessria, mas no precisa ser explicitamente especificado se j existe um configurado no contexto do aplicativo atual com um id "ConnectionFactory". Por exemplo, para configurar um destino da mensagem BlazeDS chamado "Chatin" que usa uma mola de gesto ActiveMQ fila JMS com uma instalao ActiveMQ local: <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"/> <Feijo /> <bean id="chatInQueue" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="queue.flex.chat.in"/> <Feijo /> <flex:jms-message-destination id="chatIn" jmsdestination="chatInQueue" /> Usando fila de nome ou tpico de nome far com que o destino a ser resolvido com uma mola DestinationResolver . O destino resolver, mensagem de conversor , e -manager transao atributos podem ser usados para definir referncias personalizado a uma Primavera managedDestinationResolver , MessageConverter , ou TransactionManagerrespectivamente.
POJO simples. Isso fornece uma abstrao agradvel sobre estilo de mensagens push que esconde os detalhes do protocolo de mensagens subjacentes. Seja usando um destino AMF simples baseado ou full-blown JMS, etc, o uso do MessageTemplate permanece o mesmo. A nica coisa que o MessageTemplate exige uma referncia a uma mola de gestoMessageBroker . Se o MessageTemplate configurado como um bean Spring, ele ir tentar auto detectar a MessageBroker de seu contexto de aplicao. Como um exemplo de como o MessageTemplate poderia ser usado, suponha que temos uma aplicao RESTful viagens que tem um console de administrao baseada em Flex, mas tambm expe uma API atravs de HTTP. Para dar o console de administrao uma viso "ao vivo" dos dados, ns queremos fazer atualizaes a qualquer momento para uma reserva de hotel novo criado. Dada a seguinte configurao em nosso contexto de aplicao: <flex:message-broker /> <bean id="defaultMessageTemplate" class="org.springframework.flex.messaging.MessageTemplate" /> <flex:message-destination id="bookingUpdates" /> e supondo que o cliente Flex est inscrito para o "bookingUpdates" destino, isto poderia ser alcanado com o cdigo do controlador seguinte: @ Controlador public class {BookingController modelo MessageTemplate privado; bookingService BookingService privado; @ RequestMapping (value = "/ reservas", method = RequestMethod.POST) createBooking public String (reserva Reserva) { = bookingService.saveBooking reserva (reserva); template.send ("bookingUpdates", da reserva); return "redirect: / reservas /" + booking.getId (); } @ Autowired public void setTemplate (MessageTemplate template) { this.template = modelo; } @ Autowired setBookingService public void (BookingService bookingService) { this.bookingService = bookingService; } }
Includo na distribuio do projeto uma coleo de amostras chamado BlazeDS Primavera Test Drive de Integrao. Este projeto amostras est configurado para ser construdo com Maven e quer executar via uma instncia Tomcat embutido usando o plugin do Maven Tomcat, ou ento importado para o Eclipse para rodar via WTP.
Primeiro sero construdos todos os projetos individuais Flex e finalmente montar o "testdrive" projeto WAR. Depois de construir com sucesso, se voc gostaria de executar o aplicativo a partir da linha de comando com uma instncia Tomcat embutido, execute: mvn tomcat: run
Uma vez que o aplicativo foi iniciado com sucesso, voc pode acessar as amostras atravs de walk- http://localhost:8080/testdrive/index.html
Descompacte o download e siga as instrues abaixo para importar para Eclipse, substituindo o diretrio descompactado no lugar do {raiz distribuio projeto} / path spring-flex-samples/spring-flex-testdrive.
Captulo 9. Trabalhando com o Addon Flex para a Primavera de Roo 9.1. Introduo
Spring Roo traz traz um novo nvel de produtividade para construo de aplicaes Java. A partir da Primavera de Roo Guia de Referncia: " Spring Roo um fcil de usar ferramenta de produtividade para a construo rpida de aplicativos corporativos na linguagem de programao Java. Ele permite que voc construa de alta qualidade, alto desempenho, aplicaes de lock-in livre empresa em poucos minutos. O melhor de tudo , Roo trabalha juntamente com o seu conhecimento em Java j existentes, habilidades e experincia. Voc provavelmente no vai precisar aprender nada de novo para usar Roo, como no h nenhuma nova linguagem ou plataforma de runtime necessrio. Voc programa simplesmente na sua forma normal e Java Roo simplesmente funciona, sentado no fundo cuidando das coisas que voc no quer se preocupar. " Para saber mais sobre Spring Roo si mesmo, voc encontrar inmeros recursos da pgina do projeto na http://www.springsource.org/roo
O Addon Flex para a Primavera de Roo tem como objetivo elevar o nvel de produtividade do desenvolvedor na construo de RIAs baseadas em Primavera com um cliente Flex atravs do cumprimento dos seguintes objetivos:
Oferecer a maneira mais rpida de obter um projeto Primavera configurado para usar BlazeDS Primavera Integrao configurado e funcionando. Eliminar a necessidade de executar manualmente tarefas repetitivas, tais como manter ActionScript e objetos de domnio Java em sincronia. Automatizar todo o tropeo de gerao de cdigo de artefatos Flex com foco em deixar os desenvolvedores fazem o que fazem melhor escrever cdigo.
Nota
O addon est atualmente sob forte desenvolvimento e uma verso atualizada 1.0.0.M2 devem estar disponveis no futuro prximo. Esta prxima verso estar disponvel via recurso Descoberta Addon of Spring Roo 1.1 +. 1.5.0.M1 conhecido por ser incompatvel com Roo 1.1 e acima. Veja a Primavera Flex fruns de suporte da comunidade, se voc estiver interessado em seguir junto com o desenvolvimento e experimentar o instantneo nightly builds. Em primeiro lugar, garantir que voc tenha Spring Roo 1.1.0.M1 configurado corretamente seguindo os passos encontrados aqui . Se voc no tiver feito isso, faa o download da Primavera Integrao BlazeDS 1.5.0.M1 distribuio projeto . Uma vez que voc tem um trabalho Primavera instalao Roo, voc pode instalar o Addon Flex simplesmente copiando-a {} spring_blazeds_dist / org.springframework.flex.roo.addon-1.0.0.M1.jar no $ ROO_HOME / bundle diretrio. Para verificar se o Addon Flex foi pego e ativados, comece Spring Roo partir de um diretrio limpo e executar o comando osgi lista scr . Voc dever verorg.springframework.flex.roo.addon.FlexCommands listados com um status de ativo .
Configurao automtica da Primavera necessrio, Maven, Eclipse e configurao de um padro de projeto Integrao Primavera BlazeDS. Gerao de Primavera Integrao BlazeDS @ RemotingDestination servios com recursos completos CRUD para uma determinada entidade. Sincronizao contnua de mudanas entre o ActionScript e as classes de domnio Java para comunicao remota AMF. Gerao de UI andaime que continuamente atualizado quando ocorrem alteraes nas classes correspondentes ActionScript ou Java. Client-side Flex gerao validador correspondente s anotaes Bean Validation no modelo Java.
Managed ROOT / src / main / flex / rootunes_scaffold.mxml Managed ROOT / src / main / flex / rootunes_scaffold-config.xml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistEvent.as Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistView.mxml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistForm.mxml Como mostrado na listagem acima, o comando faz com que o seguinte a ser gerado:
A RemotingDestination @ que fornece operaes de persistncia para a determinada entidade. Uma classe ActionScript que espelha a entidade Java. Se houvesse qualquer relacionamento JPA na entidade Java, classes adicionais ActionScript seriam gerados em conformidade. Uma vez que esta ligao estabelecida entre uma classe Java e ActionScript, o addon automaticamente manter os dois em sincronia e propagar as alteraes feitas aos campos tanto no ActionScript ou classe Java, se essas alteraes so feitas manualmente no cdigo, ou com o ajuda de um comando Roo. Flex UI andaimes para a realizao de operao CRUD na entidade. Qualquer momento os campos so adicionados classe ActionScript, as atualizaes necessrias sero feitas para o bom. Artefatos mxml para refletir os novos campos. (Nota - Neste momento, o addon Flex no vai apagar os campos da mxml uma vez eles foram adicionados As capacidades de sincronizao ser ampliado em novas libertaes...)
O RemotingDestination @ que ser gerado (neste exemplo, org.example.rootunes.ArtistService ), ser automaticamente fornecer funcionalidade CRUD bsicos para a dadaArtista entidade. Os mtodos gerados que fornecem essa funcionalidade so os seguintes:
Assinatura do mtodo
Assinatura do mtodo
Integer tamanho) {} ..
9.1.4.3. Flex remoting todos O Flex Remoting todos os comandos uma variao conveniente de flexionar remoting andaime que vai criar uma mola de gesto RemotingDestination @ Flex e andaimes UI para todas as entidades de domnio Java em um dado - pacote se ele no existir. Seu uso mostrada abaixo: roo> Flex remoting todos - Pacote ~ servio. Criado SRC_MAIN_JAVA / org / example / rootunes / servio SRC_MAIN_JAVA criado / org / example / rootunes / service / ArtistService.java Criado ROOT / src / main / flex / org / example / rootunes / domnio Criado ROOT / src / main / flex / org / example / rootunes / domnio / Artist.as Criado ROOT / src / main / flex / org / example / rootunes / domnio / Album.as SRC_MAIN_JAVA criado / org / example / rootunes / service / AlbumService.java SRC_MAIN_JAVA criado / org / example / rootunes / service / ArtistService_Roo_Service.aj Managed ROOT / src / main / flex / rootunes_scaffold.mxml Managed ROOT / src / main / flex / rootunes_scaffold-config.xml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistEvent.as Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistView.mxml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / artista / ArtistForm.mxml SRC_MAIN_JAVA criado / org / example / rootunes / service / AlbumService_Roo_Service.aj Managed ROOT / src / main / flex / rootunes_scaffold.mxml Managed ROOT / src / main / flex / rootunes_scaffold-config.xml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / lbum Criado ROOT / src / main / flex / org / example / rootunes / apresentao / lbum / AlbumEvent.as
Criado ROOT / src / main / flex / org / example / rootunes / apresentao / lbum / AlbumView.mxml Criado ROOT / src / main / flex / org / example / rootunes / apresentao / lbum / AlbumForm.mxml
http://localhost:8080/rootunes/rootunes_scaffold.html
9.1.5.2. Importando um Projeto Addon Flex em SpringSource Tool Suite e Flash Builder Para gerar os metadados Eclipse necessrios para o projeto, a partir da raiz do projeto voc deve executar mvn eclipse: eclipse Uma vez feito isto, o projeto pode ser importado para SpringSource Tool Suite e executados em um servidor via WTP. Para importar o projeto, selecione Arquivo-> Import ...-> Geral-> Existing Projects into Workspace e navegar para o diretrio raiz do projeto e importar o projeto Eclipse encontrados l. Se voc criou o projeto fora da sua rea de trabalho Eclipse, voc deve marcar a opo "Copiar projetos no espao de trabalho", durante o dilogo de importao para que os metadados gerados Builder Flash para funcionar corretamente.
Uma amostra Primavera roteiro Roo, que gera um projeto de amostra completa Flex est includo na distribuio Integrao Primavera BlazeDS. O script pode ser encontrado em {} project_distribution_root / samples / rootunes.roo O script pode ser executado usando Spring Roo do roteiro de comando. Crie um diretrio novo projeto, e depois iniciar o shell Roo. De l, voc pode apontar o script decomando no local do rootunes.roo script. Por exemplo, se voc descompactou a distribuio em seu diretrio home, o comando seria: roo script> - arquivo ~ / spring-flex-1.5.0.M1/samples/rootunes.roo Uma vez que o script for concluda, voc pode construir e executar o exemplo usando as etapas descritas acima.
O andaime no geram atualmente os campos do formulrio para edio relaes ONE_TO_MANY ou MANY_TO_MANY, embora ele no gerar os tipos de campo correta para o relacionamento na classe ActionScript, ento voc livre para adicionar o cdigo restante para a edio de tais relaes manualmente. As entidades ActionScript gerado atualmente ignorar qualquer superclasses ou interfaces que o tipo de Java pode declarar. O analisador ActionScript estamos usando no capaz de gerar getters e setters de propriedade, embora ele ainda deve analis-los sem erro. O analisador ActionScript no nos d controle sobre a localizao exata de campos no ActionScript, em vez de adicion-los sempre na parte inferior da declarao de classe. Est, obviamente, livre para mover a declaraes de campo em torno a seu gosto, sem quaisquer efeitos adversos. A ida e volta fuso funcionalidade para tags em artefatos. Mxml incompleta. Atualmente, pode adicionar novos campos, mas no atualizar ou remover os j existentes. Isso vai ser sanado atravs de uma abordagem semelhante Roo 1.1 usa para artefatos. Jspx, s vamos usar Flex meta-tags em vez de atributos da marca adicional. A ida e volta atualizao do script de blocos em arquivos. mxml destrutivo, o que significa que ir substituir as alteraes. Isso vai ser sanado, no futuro, aplicando o mesmo no destrutivos da camada de metadados ActionScript que usamos para o. Como arquivos.