且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-08-13 11:16:52

先看到 一篇 部署到 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 月的版本是不可以的.报错误.启动不了.)

 

然后选择工程的 属性.

 


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


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


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

添加 SDK.

 


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

修改 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 文件引用重复.

 


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

 

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

 

 

附件是  源文件 去掉 jar 包.

 

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


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


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

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

 

我的应用访问地址.

 

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

 

访问页面显示结果.

 


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

 

服务调用成功.

 

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