整合 java + BlazeDS + spring + JDO 部署到 app 上.

先看到 一篇 部署到 app 上面的文章.

http://www.iteye.com/topic/428326

 

感谢这个兄弟的研究.

 

 

 

先说昨天写的一篇 文章.

 

http://toeo.iteye.com/admin/blogs/641211

 

讲到 如果 创建 一个 java 和 BlazeDS的工程. 并且工程文件是放到一起的.

 

flex 和 J2EE 一起开发.

 

现在将工程 可以运行 app 上面. 开发 的东西直接部署到 google的服务器上面.

 

工程代码很简单.

 

一个pojo.

 

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class SystemUser implements Serializable {

	private static final long serialVersionUID = 5679860749390605118L;

	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;

	@Persistent
	public String loginName;

	@Persistent
	public String passwd;
......

 

一个dao.

 

public class SystemUserDAO extends JdoDaoSupport {

......

/**
	 * 保存数据.
	 */
	public String saveSystemUser(SystemUser systemUser) {
		String countNo = "";
		PersistenceManager pm = getPersistenceManager();
		try {
			if (systemUser.getId() == null) {
				systemUser.setCreateDate(new Date());
				pm.makePersistent(systemUser);
			} else {
				SystemUser tempSystemUser = pm.getObjectById(SystemUser.class,
						systemUser.getId());
				tempSystemUser.setLoginName(systemUser.getLoginName());
				tempSystemUser.setPasswd(systemUser.getPasswd());
				tempSystemUser.setName(systemUser.getName());
				tempSystemUser.setPhone(systemUser.getPhone());
				tempSystemUser.setEmail(systemUser.getEmail());
				tempSystemUser.setIslock(systemUser.getIslock());
				tempSystemUser.setLoginTimes(systemUser.getLoginTimes());
				tempSystemUser.setLastLogin(systemUser.getLastLogin());
				pm.makePersistent(tempSystemUser);
			}
			Query query = pm.newQuery("select count(id) from "
					+ SystemUser.class.getName());
			/** 强制转换成int */
			countNo = "" + Integer.parseInt(query.execute("Smith").toString());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pm.close();
		}
		return countNo;
	}

......

 

一个远程调用的方法.

 

public class ROService {

	public ROService() {
		System.out.println("初始化类.");
	}

	private SystemUserDAO systemUserDAO;

	public String helloWorld() {
		SystemUser systemUser = new SystemUser();
		systemUser.setCreateDate(new Date());
		systemUser.setLoginName("123456");
		systemUser.setPasswd("1223");
		System.out.println("函数被调用.");
		return "保存一个新类.总共有:\t" + systemUserDAO.saveSystemUser(systemUser)
				+ "条记录.";
	}

 

flex 远程调用.

 

 <mx:Script>
    <![CDATA[
      import mx.rpc.remoting.mxml.Operation;
      private function callIt():void
      {
        var op:Operation = roHello.getOperation("helloWorld") as Operation;
        op.send();
      }
    ]]>
  </mx:Script>

  <mx:RemoteObject id="roHello" destination="helloClass"/>

  <mx:Label text="Hello from BlazeDS!" fontSize="14" fontWeight="bold"/>

  <mx:Button label="Click to say hello" click="callIt()"/>

  <mx:Label text="{roHello.helloWorld.lastResult}"
    fontSize="14" fontWeight="bold"/>

 

 

更新插件.

 

将eclipse的 插件更新到 最新的 4 月 11 日的版本.(3 月的版本是不可以的.报错误.启动不了.)

 

然后选择工程的 属性.

 

添加 SDK.

 

修改 flex 的服务器路径 然后重新编译.flex.

 

然后按照 那个兄弟的方法.

 

 

1
.修改WEB-INF/appengine-web.xml,在<appengine-web-app> 下加入这句:
<sessions-enabled>true</sessions-enabled> 

 

2.
修改WEB-INF/flex/services-config.xml,在<system>下加入下句:
<manageable>false</manageable> 

3.

替换WEB-INF/lib/flex-messaging-core.jar(基于blazeds-src- 3.2.0.3978)

文件下载地址.

 

http://dl.iteye.com/topics/download/25a933ff-c336-3387-9c9b-a5b00ae4cf68

 

 

 

2010-4-11 23:32:29 com.google.apphosting.utils.jetty.JettyLogger info
信息: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
2010-4-11 23:32:29 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
信息: Successfully processed E:\new_workspace\workspace_win_3.4_flex\chapter24_test\WebContent\WEB-INF/appengine-web.xml
2010-4-11 23:32:29 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
信息: Successfully processed E:\new_workspace\workspace_win_3.4_flex\chapter24_test\WebContent\WEB-INF/web.xml
初始化类.
The server is running at http://localhost:8888/

 启动的时候 比以前的版本多了些日志.

 

 

 

测试. 调用jdo.成功.调用 flex 成功.

 

然后配置 spring 2.0.7整合

 

 

spring 不用太高的版本.用 spring 2.0.7 就行.

 

发现 其实在 BlazeDS 里面就支持spring呢.

 

1.要有一个 SpringFactory

 

相信见附件.

 

 

2. 在services-config.xml中

<factories>
        <factory id="spring" class="com.spring.factories.SpringFactory" />
    </factories>

3.在remoting-config.xml中

 <destination id="helloClass" channels="my-amf">
        <properties>
            <factory>spring</factory>
            <scope>application</scope>
            <source>helloClass</source>
        </properties>
    </destination>
 
4.在spring配置中加入

<bean id="systemUserDAO" class="com.freewebsys.dao.SystemUserDAO">
        <property name="persistenceManagerFactory">
            <ref bean="pmf" />
        </property>
    </bean>
   
    <bean id="helloClass" class="flex3Bible.ROService"/>

 

这样在点击的时候就可以调用 jdo 进行保存.

 

在使用Google app的服务的时候.jdo如果jdo调用出错是由于 jar 文件引用重复.

 

 

将 WebContent 下面的 那个 app的jar 都不要引用..和 sdk的jar 重复.

 

 

附件是  源文件 去掉 jar 包.

 

修改配置文件的服务器路径.修改成你自己申请的名称.

选择工程右键直接可以部署到google app 上面.(怎么申请帐号部署略)

 

我的应用访问地址.

 

http://myflexeye.appspot.com/flex_web/CallOperation.html

 

访问页面显示结果.

 

 

服务调用成功.

 

[下面继续做一个简单的CRUD.部署到app上面.]

 

时间: 2024-11-01 12:55:26

整合 java + BlazeDS + spring + JDO 部署到 app 上.的相关文章

Java 开发 2.0: 使用 Google App Engine--利用 Groovy、Eclipse 和 JDO 进行快速 Web 应用程序开发

开源解决方案和外来基础设施改变了 Java 开发的特征,使您能够以更低的成本.更快的速度交付更好的软件.Andrew Glover 发明了 Java 开发 2.0 这一术语,使用它概括了所有这些现象体现出来的强大力量.他推出了一个全新的系列,主要介绍有关 Java 开发 2.0 的工具和技术.本系列的第一期文章将宣布 Java 开发 2.0 的到来,并解释了如何使用 Google 的 App Engine for Java 迅速实现这些概念. Java 世界如同一个丰富的生态系统,涉及开发人员.

Java的Spring框架中AOP项目的一般配置和部署教程_java

0.关于AOP面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对

Java开发2.0: 针对Google App Engine的Gaelyk

本 系列 将探讨对于如今及未来的 Java 开发的发展起决定作用的各 个技术方面.Java 开发 2.0 的前提开发速度将越来越快,这要归功于开源领域 中的创新以及硬件的商业化.您可以租借其他人的硬件平台来托管自己的应用程 序(主要使用开源库.工具和框架来装配),成本只包括获取和维护自己的基础 设施. 本系列的第一期 "使用 Google App Engine" 讨论 了免费租借 Google 的基础设施来托管您的 Java 应用程序(不过会牺牲少许灵 活性)的概念.在后续文章中,您了

RabbitMQ与java、Spring结合实例详细讲解(转)

         林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka          摘要:本文介绍了rabbitMq,提供了如何在Ubuntu下安装RabbitMQ 服务的方法.最后以RabbitMQ与java.Spring结合的两个实例来演示如何使用RabbitMQ. 本文工程免费下载   一.rabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮

mybatis 高级映射和spring整合之与Spring整合(6)

mybatis 高级映射和spring整合之mybatis与Spring整合 3.0 mybatis和spring整合(掌握) 3.1 整合思路 需求spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(spring和mybatis整合自动完成) 持久层的mapper都需要有spring进行管理. 3.2 整合环境 创建一个新的java工程(接近实际开发的工程结构) jar

浅析Java的Spring框架中IOC容器容器的应用_java

Spring容器是Spring框架的核心.容器将创建对象,它们连接在一起,配置它们,并从创建到销毁管理他们的整个生命周期.在Spring容器使用依赖注入(DI)来管理组成应用程序的组件.这些对象被称为Spring Beans. 容器获得其上的哪些对象进行实例化,配置和组装通过阅读提供的配置元数据的说明.配置元数据可以通过XML,Java注释或Java代码来表示.下面的图是Spring如何工作的高层次图. Spring IoC容器是利用Java的POJO类和配置元数据的产生完全配置和可执行的系统或

AngularJS整合Springmvc、Spring、Mybatis搭建开发环境_AngularJS

最近想学习AngularJS的使用,网上搜了一圈后,折腾了半天解决bug后,成功使用AngularJS整合Springmvc.Spring.Mybatis搭建了一个开发环境.(这里Spring使用的版本是4.0.6,Mybatis版本是3.2.5,AngularJS的版本是1.0.3) 第一步:创建一Maven项目,在pom.xml下添加需要的包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="

基于Java的Spring框架来操作FreeMarker模板的示例_java

1.通过String来创建模版对象,并执行插值处理  import freemarker.template.Template; import java.io.OutputStreamWriter; import java.io.StringReader; import java.util.HashMap; import java.util.Map; /** * Freemarker最简单的例子 * * @author leizhimin 11-11-17 上午10:32 */ public cl

实例讲解Java的Spring框架中的控制反转和依赖注入_java

近来总是接触到 IoC(Inversion of Control,控制反转).DI(Dependency Injection,依赖注入)等编程原则或者模式,而这些是著名 Java 框架 Spring.Struts 等的核心所在.针对此查了 Wikipedia 中各个条目,并从图书馆借来相关书籍,阅读后有些理解,现结合书中的讲解以及自己的加工整理如下:   eg1问题描述: 开发一个能够按照不同要求生成Excel或 PDF 格式的报表的系统,例如日报表.月报表等等.   解决方案: 根据"面向接口