`
SimonLei
  • 浏览: 176160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Funambol 之 自定义 SyncSource

阅读更多

接着昨天的事情,继续往下走。

 

昨天已经成功的把数据源都增加进来了。今天就准备开始上数据了,

测试的客户端使用的是 funambol自带的那个 demo。

 

拷贝一份 SyncServerServlet 的定义到 web.xml 当中,增加一个 servlet mapping

 

    <servlet>
        <servlet-name>SyncServerServlet</servlet-name>
        <display-name>SyncServerServlet</display-name>

        <servlet-class>com.funambol.transport.http.server.Sync4jServlet</servlet-class>
        <init-param>
            <param-name>sync-holder-class</param-name>
            <param-value>com.funambol.transport.http.server.LocalSyncHolder</param-value>
        </init-param>
        <init-param>
            <param-name>log-messages</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>dirlog-messages</param-name>
            <param-value>.</param-value>
        </init-param>

        <!-- Session timeout in seconds -->
        <init-param>
            <param-name>session-timeout</param-name>
            <param-value>900</param-value> <!-- 15 minutes -->
        </init-param>
        <init-param>
            <param-name>enable-compression</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>preferred-encoding</param-name>
            <param-value>gzip</param-value>
        </init-param>
        <init-param>
            <param-name>supported-encoding</param-name>
            <param-value>gzip,deflate</param-value>
        </init-param>

        <!--
         =======================================================================
         The allowed values for compression-level are the following:
         - DEFAULT_COMPRESSION  -1
         - NO_COMPRESSION        0
         - BEST_SPEED            1
         - BEST_COMPRESSION      9
         =======================================================================
        -->
        <init-param>
            <param-name>compression-level</param-name>
            <param-value>-1</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SyncServerServlet</servlet-name>
        <url-pattern>/sync/*</url-pattern>
    </servlet-mapping>
 

然后把 ds-server\default\sql\hypersonic\ 当中的 create_engine.ddl 和 init_engine.sql 都先执行一遍。

我用的是 h2 ,不过还是很顺利的就执行完了。创建了 funambol 所需要的缺省数据。

 

运行客户端,把 url 修改成 http://localhost:8080/sync/ 用户名使用缺省的 guest/guest

随便增加了几个联系人,然后点击 同步 按钮。

 

接下来,返回511错误信息。查看 logs/ds-server/ds-server.log

发现是没有定义scal 和 scard 所对应的Source。而独立运行的 funambol 是没有这个问题的。

config是全部拷贝过来的,因此区别应该是在数据库那里。

 

于是看 funambol 自己的数据库里面,果然有对 scard的 syncsource定义,于是插入两条这样的数据:

 

INSERT INTO FNBL_CLIENT_MAPPING VALUES(1,'scard','1272530711883','0','0')

INSERT INTO FNBL_SYNC_SOURCE VALUES('scard','foundation/foundation/contact-foundation/SIFContactSource.xml','scard','contact-foundation')

 

同时,修改 SIFContactSource.xml 当中 class 的定义,指向我自己做的一个class。

 

原以为这样就OK了。没想到,居然报错。错误信息就是 RoutingDataSource 没办法 得到 jdbc connection。

回想起昨天 shingo7 提到的,

shingo7 写道

源代码中的RoutingDataSourceConfiguration是通过下面的方法得到的
Java 代码

DataSourceConfiguration dataSourceConfiguration =
    DataSourceConfigurationHelper.getJDBCDataSourceConfiguration(name.toString());

 

于是明白了,不能象我昨天的blog里面写的那么简单,而是要把 fnbluser 的定义搞成和这个一样的。

看了一下在 java 代码中是如何获取到 RoutingDataSourceConfiguration的,于是把 jetty-web.xml

修改了一下,关于 fnbluser 的定义,修改成:

 

<Call id="dsConf" class="com.funambol.server.db.DataSourceConfigurationHelper" name="getDBConfiguration">
</Call>
<Call id="routingDsConfi" class="com.funambol.server.db.DataSourceConfigurationHelper" name="mergeConfiguration">
	<Arg><New class="com.funambol.server.db.RoutingDataSourceConfiguration"/></Arg>
	<Arg><Ref id="dsConf"/></Arg>
</Call>
 <New id="fnbluser" class="org.mortbay.jetty.plus.naming.Resource">
 	<Arg></Arg>
    <Arg>jdbc/fnbluser</Arg>
    <Arg>
     <New class="com.funambol.server.db.RoutingDataSource">
     	<Arg>
     		<Ref id="routingDsConfi"/>
     	</Arg>
     </New>
    </Arg>
   </New>

 

又一次以为OK了,运行还是出错。只好进入debug状态,发现在 DataSourceConfiguration 这个类当中,获取

configPath() 这个方法,返回的居然是 null/config。原来是一个环境变量没有设置的原因。于是把设置一个环境变量

-Dfunambol.home=. 再运行,就 OK了。

 

当然,这里OK的意思是,我自己写的 SyncSource确实被调用到了。离真正的同步,还有一段路要走。

0
0
分享到:
评论

相关推荐

    Funambol 编译

    本文将深入探讨Funambol的编译过程,以及与之相关的技术要点。 首先,我们要了解Funambol的基本架构。Funambol是一个基于Java的平台,它的核心功能是实现数据的双向同步,包括联系人、日历、任务等个人信息管理...

    funambol-dm-server-3.5.2.zip_Funambol_dm_funambol dm 3.5._funamb

    8. **API与扩展**:Funambol提供API,允许开发人员创建自定义插件或扩展,增强服务器的功能,如集成第三方服务、实现特定的管理策略等。 9. **监控与报告**:管理员可以通过Funambol DM Server监控设备状态,获取...

    基于Funambol DS 的云同步服务研究

    Funambol DS是一种基于SyncML协议的云同步服务,它主要用于客户端和云端的数据同步,包括通讯录、日历、视频和文件等内容。本文主要探讨了Funambol DS在通讯录同步方面的实现机制。 首先,Funambol DS和DM(Device ...

    Funambol开源工程(客户端和服务器端)

    Funambol是一款开源同步平台,专门设计用于移动设备与服务器之间的数据同步,尤其注重于个人信息管理(PIM)数据,如日历、联系人、任务和邮件。它基于云技术,提供了一个双向同步解决方案,使得用户可以在不同设备...

    Funambol DS Server Architecture and Design Document

    - **持久化存储架构**:版本1.1中增加了对持久化存储的支持,这是数据同步服务的核心需求之一。 - **安全架构**:版本1.2中加入了安全相关的架构设计,确保了数据传输的安全性。 - **同步过程**:版本1.3中新增了...

    Funambol客户端与服务器同步工具

    Funambol客户端与服务器同步工具,Funambol provides apps for smartphones, tablets and computers such as iPhone, Android, BlackBerry, Symbian, Windows Mobile (Windows Phone coming soon), Windows PC and ...

    funambol_dm_server源码改造Eclipse工程

    改造funambol_dm_server源码为eclipse工程, 方便测试研究, 内附SQL脚本, 可作为OTA相关项目的研究参照, funambol_dm_server完全遵照SYNCML协议, 对SYNCML的深入研究比较有帮助. 包内是个EAR工程, 包含EJB和WEB两部分...

    Funambol Sync Client for Android

    Funambol Sync Client for Android is a client to synchronize PIM Data of Android devices with any SyncML aware server. For the moment, it is an experimental project to explore the possibility of the...

    funambol-dm-server-src-3.5.2.rar_Funambol_服务器_移动设备管理_设备管理 JAVA

    funambol-dm-server 移动设备管理服务器端源代码

    基于Funambol架构进行云数据同步的研究

    Funambol架构允许开发者扩展其核心功能,以满足特定应用需求,如添加新的同步数据类型或者自定义同步策略。 总结来说,Funambol通过SyncML协议实现高效、可靠的云数据同步,其架构设计考虑了灵活性、可扩展性和安全...

    funambol mobile

    ### Funambol Mobile开源同步解决方案 #### 一、概述 《Funambol Mobile:开源同步你的电子邮件和其他数据至移动设备》是一本由Packt Publishing在2009年12月出版的技术书籍,作者为Stefano Fornari。本书主要介绍...

    基于funambol的J2ME客户端设计文档

    基于Funambol的J2ME客户端设计文档,深入探讨了移动应用开发与管理的核心概念、技术及实践。本文档不仅提供了详细的理论基础,还涵盖了Funambol作为开源移动应用平台的关键角色,以及SyncML标准在其中的应用。 ### ...

    funambol-android-sync-client源码

    Funambol是一个开源的同步平台,它主要用于移动设备与服务器之间的数据同步,如日历、联系人、任务等。在Android平台上,Funambol提供了Android Sync Client,它是一个客户端应用程序,使得用户能够方便地将手机上的...

    OMA-DM 开源实现:funambol-dm-server

    学习OMA协议很好的源码参考。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    Funambol android eclipse上的配置及说明

    Funambol是一款开源的同步服务器软件,主要用于移动设备与服务器之间的数据同步,如日历、联系人、邮件等。在Android开发环境中,Eclipse是最常用的集成开发环境(IDE)。本篇将详细介绍如何在Eclipse中配置Funambol...

Global site tag (gtag.js) - Google Analytics