接着昨天的事情,继续往下走。
昨天已经成功的把数据源都增加进来了。今天就准备开始上数据了,
测试的客户端使用的是 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确实被调用到了。离真正的同步,还有一段路要走。
分享到:
相关推荐
基于Funambol DS 的云同步服务研究 实现
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开源程序!
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 移动设备管理服务器端源代码
Funambol DS Server Architecture and Design Document 结构与设计文档,PDF版
改造funambol_dm_server源码为eclipse工程, 方便测试研究, 内附SQL脚本, 可作为OTA相关项目的研究参照, funambol_dm_server完全遵照SYNCML协议, 对SYNCML的深入研究比较有帮助. 包内是个EAR工程, 包含EJB和WEB两部分...
funambol OMA DM Server source
Funambol DS Server Architecture and Design Document.doc 图片显示很不清晰,请下载PDF版 http://download.csdn.net/source/2032365
syncml协议下开源项目funambol的服务端开发者文档
funambol SyncML全套工程包括Server、EJB和Web。并附加全部Jar包集合及数据库SQL脚本,方便学习使用,对SyncML想要的深入研究的朋友较有用。 可作为OTA相关项目的研究参照。 funambol SyncML完全遵照SyncML协议,包内...
学习OMA协议很好的源码参考。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
NULL 博文链接:https://fanfq.iteye.com/blog/1447209
funambol_clinet_src源码,可以运行,5个jar包已打包
基于funambol的J2ME客户端设计文档
基于Funambol架构进行云数据同步的研究,具体包括Syncml同步协议,同步原理,funambol的整体框架
ubuntu10.4编译funambol android源码,这是本人编译的经历。
PacktPub.Funambol.Mobile.Open.source.Dec.2009.pdf
funambol_android_client实现分析.pdf
funambol-administration-guide-v7.1.pdf