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

Funambol 之 jetty 与 gwt 集成

阅读更多

目标:想把 Funambol 8.5 集成到 gwt 里面来,提供一个 syncml 的服务。

 

首先面对的是,funambol缺省只支持 tomcat,而gwt 自1.6以后就是jetty了。

于是,如何添加相应的 jndi datasource?刚开始,仿照安装了之后的 funambol

目录,放入需要的jar文件,启动时自然会报一堆的 class not found 异常,还有 config

目录找不到的问题。等把需要的 jar 文件和 config 目录都拷贝一下放进去之后,开始

出现 jndi 找不到的问题了。

 

首先是 jdbc/fnblcore 这个 datasource 找不到。当然找不到了,我什么配置信息都没改,

缺省的这个 datasource 自然没有提供。而且,在dev mode 下的 gwt,还不象部署模式

下那样,可以通过修改 etc/jetty.xml 之类的来修改。

 

于是搜索了一下,发现在 WEB-INF/ 目录下放一个 jetty-web.xml,就可以为当前的 webapp

添加一个可配置的地方。添加了如下信息:

 

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure class="org.mortbay.jetty.webapp.WebAppContext">

 <New id="fnblcore" class="org.mortbay.jetty.plus.naming.Resource">
 <Arg></Arg>
    <Arg>jdbc/fnblcore</Arg>
    <Arg>
     <New class="org.apache.commons.dbcp.BasicDataSource">
     	<Set name="driverClassName">org.h2.Driver</Set>
                 <Set name="url">jdbc:h2:data/db/pim8;MVCC=TRUE</Set>
                 <Set name="username"></Set>
                 <Set name="password"></Set>
     </New>
    </Arg>
   </New>
</Configure>

 

然后在 web.xml 当中增加引用:

 

    <resource-ref>      
     <description>syncml datasource</description> 
        <res-ref-name>jdbc/fnblcore</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>  
    </resource-ref>

 当然,象 jetty-plus.jar 以及 jetty-naming.jar之类的,也要放到 web-inf/lib目录下。

还有,启动的时候要加入

-Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactory

这样的参数。

 

好了,fnblcore 的问题解决了,接下来是下一个问题:

 

Caused by: java.lang.ClassCastException: org.apache.commons.dbcp.BasicDataSource cannot be cast to com.funambol.server.db.RoutingDataSource

 

这个问题就更严重了,用 google 搜了很长时间,甚至都换了百度和bing来尝试了一下,都没有结论。

大致是认为,funambol 已经放弃了 tomcat 之外的服务器,可能是它不想被别人嵌入到自己的应用当中,

而更倾向于作为独立应用使用。

 

在 funambol 当中,fnbluser 的 datasource,不是dbcp的那个,而是 RoutingDataSource

的一个实例。于是,想办法直接用 RoutingDataSource,而不是 dbcp的那个。

凭着对jetty以往的使用经验,尝试着这样改了一下 jetty-web.xml,增加了:

 

 <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><New class="com.funambol.server.db.RoutingDataSourceConfiguration"></New></Arg>
     </New>
    </Arg>
   </New>

 

结果就OK了。哈哈~~

接下来如何使用它,就是下一步的问题了。

 

0
1
分享到:
评论
3 楼 SimonLei 2010-05-05  
关于你提到的这个设置,我今天果然也碰到了问题,解决的办法:

http://simonlei.iteye.com/blog/659802

2 楼 SimonLei 2010-05-05  
jetty 的那个xml,其实你可以把它当作java语言一样来看待。
区别只是用xml来描述java 对象的生成过程。

funambol的那个xml配置文件,也是一样的道理。所以如果要
自己注入属性,或者要调用其他类的方法,也都可以把它写在
xml当中。
1 楼 shingo7 2010-05-04  
呵呵,你好,我是发贴的人,谢谢你的贴子
我有一个疑问
最后你配置RoutingDataSource时没有为其填充属性啊

源代码中的RoutingDataSourceConfiguration是通过下面的方法得到的
DataSourceConfiguration dataSourceConfiguration =
         DataSourceConfigurationHelper.getJDBCDataSourceConfiguration(name.toString());


它调用的是com/funambol/server/db/db.xml

我们这里自己定义后需要自己注入一些属性啊

jboss也有jboss-web.xml 有没有这样的写法我还不清楚,明天上班时去看看
你有MSN吗?有空交流下,我的MSN是 shingo_go@hotmail.com
贴子也是今天发的,呵呵。。。

相关推荐

    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 编译

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

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

    API接口则允许开发者扩展和集成Funambol到其他应用或服务。 接着,我们来看Funambol客户端。客户端软件支持多种操作系统,例如Android、iOS、Windows Mobile等,通过SDK(Software Development Kit)提供。SDK包含...

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

    5. **部署与集成**:Funambol DM Server可部署在企业内部服务器上,与现有IT系统集成,提供统一的设备管理入口。集成可能涉及到认证系统、日志记录、数据库等。 6. **设备兼容性**:Funambol支持多种操作系统,包括...

    Funambol DS Server Architecture and Design Document

    ### Funambol DS Server 架构与设计文档分析 #### 概述 Funambol DS Server 是一款功能强大的数据同步服务器解决方案,旨在为企业提供高效、可靠的数据同步服务。该架构与设计文档详细介绍了Funambol DS Server 的...

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

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

    funambol_dm_server源码改造Eclipse工程

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

    funambol mobile

    - **易于集成**:提供丰富的API接口和开发指南,方便与其他系统或应用集成。 #### 五、应用场景 - **企业办公**:适用于企业内部的数据同步管理,提高员工的工作效率。 - **个人使用**:适合个人用户管理自己的...

    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...

    PacktPub.Funambol.Mobile.Open.source.Dec.2009.rar

    3. **云服务集成**:除了本地设备,Funambol还支持与各种云服务的集成,如Google、Microsoft Exchange、Facebook等,使得用户可以在不同平台之间轻松切换,享受一站式的数据同步体验。 4. **开放标准**:Funambol...

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

    设计文档详细介绍了基于Funambol的J2ME客户端的设计理念、架构、模块划分、数据流图、状态图、类图等,以及如何集成SyncML标准进行数据同步。此外,文档还涵盖了测试策略、性能优化建议和安全措施等内容,旨在帮助...

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

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

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

    总结来说,Funambol通过SyncML协议实现高效、可靠的云数据同步,其架构设计考虑了灵活性、可扩展性和安全性,使得开发者可以轻松集成到自己的应用程序中,为用户提供跨设备的数据一致性体验。通过深入理解SyncML的...

    Funambol android eclipse上的配置及说明

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

    Funambol android 客户端源码在eclipse上的配置

    本文将详细讲解如何在Eclipse集成开发环境中配置并运行Funambol的Android客户端源码。 首先,你需要确保已经安装了Eclipse IDE,以及Android Developer Tools(ADT)插件。ADT插件提供了一整套的Android开发工具,...

Global site tag (gtag.js) - Google Analytics