一、搭建开发环境
1.给Eclipse安装Flex Builder插件(Flex4.0之后改为叫Flash Builder)
2.给Eclipse安装Google App Engine的插件,这个在Google App Engine官方网站上能找到相关的文档。
二、新建GAE项目
略过,这个没什么好说的
三、给GAE项目加Flex的Nature
在项目名上右键==》Flex Project Nature==》Add Flex Project Nature
然后服务器选择J2EE和BlazeDS
添加完Flex的Nature之后需要设置Flex Server(在项目的属性里)里的
Root folder:选择GAE项目里的war子文件夹
Root URL: http://localhost:8888/(注意,这里和普通的Flex+J2EE的项目不一样)
Context Root:/(这里也不一样,普通的Flex+J2EE项目,这里需要设定为项目名称,要不然Flex在编译之后,运行时找不到BlazeDS的服务器)
项目上的配置到此结束。
四、配置BlazeDS
在网上有关于如何配置Google App Engine项目里使用的文章BlazeDS,上Google搜索一下就o了
五、配置Spring+BlazeDS
有两种Spring+BlazeDS的配置方式。
第一种就是在BlazeDS的service-config.xml文件里配置一个factory,factory里设置需要的bean从Spring上下文里去找。这种方法我以前就这么使用,想尝试一下新的方式,所以放弃这种方法。这种方法在BlazeDS的文档里的倒数第二章里有奖,需要的可以去那里查。
第二种就是Spring提供的Spring+BlazeDS配置方式(Spring FLex Home
http://www.springsource.org/spring-flex,想详细了解的可以去看这里的文档)。
1.拷贝Spring相关的lib包
2.配置web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/config/service-context.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<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>
<!--
Map all /messagbroker requests to the DispatcherServlet for handling
-->
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
熟悉Spring的应该很清楚这些都干什么的
设置一下Spring配置文件的位置
添加一个加载Spring的Listener
为BlazeDS配置servlet以及url-mapping
其实从本质上讲这种方法和第一种方法没有什么区别的,唯一的区别就是第一种方法是使用BlazeDS自己提供的servlet,这里是使用Spring的MVC框架的Servlet而已。
3.配置web-application-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<flex:message-broker />
</beans>
这个文件里就一行有用,其他都是Spring的命名空间声明。这里虽然简单,其实是Spring2.5之后提供的自定义命名空间帮我们做了很多事情,很多都是默认的。比如说到哪里去找flex的配置文件(默认在WEB-INF\flex目录下)。
4.配置service-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-autowire="byName">
[color=red]<import resource="jdo-context.xml" />
<context:component-scan base-package="com.rever.gae.service" />
<context:component-scan base-package="com.rever.gae.dao.jdo" />[/color]
<bean id="velocityEngine"
class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath">
<value>WEB-INF/velocity</value>
</property>
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<prop key="contentType">text/html;charset=UTF-8</prop>
<prop key="file.resource.loader.cache">false</prop>
<prop key="file.resource.loader.modificationCheckInterval">1</prop>
<!-- <prop key="runtime.log">velocity.log</prop> -->
<prop key="runtime.log.logsystem.class">org.apache.velocity.runtime.log.CommonsLogLogChute
</prop>
<prop key="velocimacro.library.autoreload">true</prop>
<prop key="velocimacro.max.depth">200</prop>
</props>
</property>
<property name="overrideLogging">
<value>false</value>
</property>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="ApplicationResources" />
</bean>
</beans>
重要配置在红色地方标出来了。第一行是引入jdo配置文件,第二行是告诉Spring去哪里找service。这里我用Spring3.0里提供的Annotation来暴露Spring的service给BlazeDS的(我觉的这一点比第一种方法更方便一些,第一种方法如果重构service的名字或者添加一个新的service,需要改两处配置文件才能生效,而且修改也是拷贝粘贴)。第三行是告诉Spring到哪里去找DAO的实现,这里跟BlazeDS没有多少关系。
5.配置jdo-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
[color=darkred]<bean id="persistenceManagerFactory"
class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
<property name="jdoProperties">
<props>
<prop key="javax.jdo.PersistenceManagerFactoryClass">
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory
</prop>
<prop key="javax.jdo.option.ConnectionURL">
appengine
</prop>
<prop key="javax.jdo.option.NontransactionalRead">
true
</prop>
<prop key="javax.jdo.option.NontransactionalWrite">
true
</prop>
<prop key="javax.jdo.option.RetainValues">
true
</prop>
<prop key="datanucleus.appengine.autoCreateDatastoreTxns">
true
</prop>
</props>
</property>
</bean>
[/color]
[color=blue]<bean id="jdoTransactionManager" class="org.springframework.orm.jdo.JdoTransactionManager">
<property name="persistenceManagerFactory" ref="persistenceManagerFactory" />
</bean>[/color]
[color=violet]<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="delete*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="update*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly
</prop>
</props>
</property>
</bean>[/color]
[color=cyan]<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
<property name="beanNames">
<value>*Service</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>[/color]
</beans>
深红色的bean是Google App Engine里关于JDO的配置,从自动生成的文件里改过来就ok了,其余的是自动管理事务的配置。
六、编写Service
如何编写Service就看自己的业务了,这里主要说一下Spring的Annotation的使用。
@Service("systemStatusService")
@RemotingDestination(channels = {
"my-amf"
})
public class SystemStatusService {
@RemotingInclude
public void addTotal() {
..............................
..............................
..............................
}
}
第一个:@Service("systemStatusService") 注明该类需要暴露为bean,并且该bean的id是systemStatusService(当然你也可以使用他默认的命名策略)。
第二个:@RemotingDestination(channels = {
"my-amf"
}) 用来注明该bean被BlazeDS暴露为service。这里的my-amf在flex的配置文件里配置,表明用那个序列化。
第三个:@RemotingInclude 注明该方法暴露给BlazeDS,你可以在Flex能够调用该方法。
这其实也是第一种配置方法里加一个service的三个步骤。
----------------------------------华丽的分割线----------------------------------
关于GAE+Flex+Spring的配置到此结束。
分享到:
相关推荐
标题“spring+gae+hibernate”所提及的是一个技术集成项目,主要涉及Spring框架、Google App Engine(GAE)和Hibernate三个关键组件。让我们详细探讨这三个技术以及它们的集成。 Spring是一个开源的Java企业级应用...
【标题】"Spring+GAE"揭示了将Google App Engine(GAE)与Spring框架集成的主题,这是一个在云端运行Java应用程序的关键技术组合。Spring是一个广泛使用的开源Java框架,提供了依赖注入、面向切面编程和MVC(模型-...
总结来说,这个项目展示了如何利用Flex构建用户界面,Spring处理业务逻辑,BlazeDS作为数据通信中介,以及GAE的JDO进行数据存储,形成一个完整的客户端-服务器端应用。这种架构结合了富客户端的交互体验和云计算的可...
标题 "spring3+springmvc+jpa2+gae" 指的是一个集成开发环境,它结合了Spring框架的三个核心组件以及Google App Engine (GAE)。这个项目旨在展示如何在GAE上运行一个基于Spring 3、Spring MVC和JPA 2.0的应用程序。...
【gae strus2 spring 整合】是一种在Google App Engine(GAE)平台上将Struts2和Spring框架集成的技术方案。这种整合旨在充分利用Struts2的MVC架构和Spring的依赖注入(DI)以及面向切面编程(AOP)能力,以构建高效...
这篇博客“Struts2,Spring,JDO,AJAX on GAE”可能探讨了如何在Google App Engine (GAE)平台上整合这些技术来构建高效且可扩展的Web应用。 1. Struts2:Struts2是一个基于MVC(Model-View-Controller)设计模式的...
【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...
在本实例中,我们将探讨如何将Google App Engine (GAE) 与三个强大的Java框架——Struts2、JPA(Java Persistence API)以及Spring进行整合,以构建一个高效的Web应用程序。GAE是一个由Google提供的云平台,允许...
利用GAE+WallProxy-plugins搭建个人代理服务器
### GAE搭建个人网站知识点详解 #### 一、GAE简介 - **定义与特性**:GAE(Google App Engine)是Google推出的一种基于云端的应用程序托管服务,它允许开发者在其上部署各种Web应用程序。GAE自2008年发布以来,已经...
【标题】"gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_" 提供的信息表明,这是一个使用PyTorch实现的图自编码器(Graph Autoencoder, GAE)项目,其核心是将自编码器的概念应用于图数据。...
GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则
【标题】:“小学期GAE项目 python+Django框架实现的博客” 【描述】:“小学期的项目,一组人用了三周连学习再开发,文档齐全,适合对GAE感兴趣的人入门使用” 这个项目是一个教育实践项目,目标是构建一个基于...
**图形自动编码器(GAE)在PyTorch中的实现** **一、GAE概述** 图形自动编码器(Graph Autoencoder, GAE)是一种应用于图数据的深度学习模型,它结合了自动编码器(Autoencoder)的思想与图神经网络(Graph Neural...
mvn install)$ git clone https://github.com/scratches/spring-boot-sample-gae$ cd spring-boot-sample-gae$ mvn gae:deploy也作为部署在 WTP 或常规 Tomcat 容器中的 WAR 运行。 main()应用程序(普通的 Spring ...
pass之GAE入门教程, 学习GAE
通常,Python博客应用可能会使用Django或Flask框架,而Java可能使用Spring Boot。 4. **源码管理**:在部署前,源代码应该被组织在一个版本控制系统中,如Git。这有助于跟踪更改,并确保团队合作时的一致性。 5. *...