`
SimonLei
  • 浏览: 177280 次
  • 性别: 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 架构要求的自定义配置对象。 ##### 9.4 获取已配置实例 - **获取实例**:如何从配置文件中获取已配置的组件实例。 - **技巧与提示**:提供一些实用的配置技巧。 #### 十、...

    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 DS Server Architecture and Design Document.doc

    7. **设备库存架构**:设备库存管理允许服务器识别并跟踪与之同步的各个设备,确保正确处理每个设备的同步需求。 8. **消息压缩**:为了减少网络传输的数据量,Funambol DS Server支持对同步消息进行压缩,提高数据...

    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_SyncML全套工程(含Server、EJB和Web)

    funambol SyncML全套工程包括Server、EJB和Web。并附加全部Jar包集合及数据库SQL脚本,方便学习使用,对SyncML想要的深入研究的朋友较有用。 可作为OTA相关项目的研究参照。 funambol SyncML完全遵照SyncML协议,包内...

    funambol-v7-installation-and-configuration-guide.pdf

    完成基本安装与配置后,用户应继续探索Funambol V7的高级特性,如自定义同步策略、性能优化、安全增强等,以充分利用平台的全部潜力。 ### 总结 Funambol V7的安装与配置是一系列有序的步骤,涵盖了从准备阶段到...

    funambol mobile

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

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

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

    funambol-administration-guide-v7.1.pdf

    - **转换规则设定**:Funambol提供了数据转换管理功能,允许管理员自定义数据转换规则,确保不同来源的数据格式能够被正确解析和转换,达到无缝同步的目的。 #### 同步策略设定:灵活应对多变同步需求 - **策略...

    funambol-android-sync-client源码

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

    funambol-v7-test-drive-guide.pdf

    - **“真实世界”测试驱动**:相比之下,这种测试驱动提供了更全面的体验,包括了更复杂的配置选项和多设备同步等功能。 #### 准备主机计算机 在进行任何测试之前,需要准备一台主机计算机用于安装和配置Funambol...

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

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

Global site tag (gtag.js) - Google Analytics