- 浏览: 227423 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (212)
- 架构师-01-文档目录 (3)
- 架构师-02-组织 (7)
- 架构师-03-实施 (35)
- 架构师-04-监督 (14)
- 架构师-05-工具 (29)
- 架构师-09-引用文集 (63)
- 专题-01-微博应用 (5)
- 专题-02-GoogleEarth (1)
- 专题-03-运行维护 (9)
- 专题-04-经纪人营平 (3)
- 专题-05-RCP&RAP (5)
- 专题-06-框架PK (3)
- 专题-07-Android (13)
- 专题-08-UI (3)
- 专题-liferay6 (6)
- 专题-extjs4 (3)
- 专题-CXF (3)
- 专题-封闭网络的社会化 (0)
- 扯谈 (4)
- 外包 (9)
- 专题-C++ (4)
- 专题-09-BI (2)
- jquery&easyui (2)
- 专题-搜索引擎 (1)
最新评论
-
brighter:
oMapper.configure(Deserializati ...
jackson 抛出 bean 中没有定义字段的错误,只好用 gson -
PassFeed_free:
public Bitmap decode(ImageDecod ...
android universalimageloader 几点改进 -
PassFeed_free:
楼主你好, 请问这个库, 在大屏显示高清图片 ,listvie ...
android universalimageloader 几点改进 -
yonghong:
楼主只是揣测
JIRA4.1 升级到 JIRA5.1 -
abdxj:
"Could NOT parse license t ...
JIRA4.1 升级到 JIRA5.1
引用说明:原文来自于http://sirius.01242.org/shindig,为了方便本人阅读,文本格式略有调整。
opensocial是一套用于社会化网络平台开发的通用 API,也就是现在流行的sns上用的一套API,自从facebook火了之后,中国的开发者们也按耐不住了,sns网站一下子遍地都是,邮箱里的邀请也是五花八门,国内的主要就是校内,开心,海内,一起.google眼见facebook开放api了,心想我也要分肉,于是也搞了自己的一套,现在和myspace,还有国内的sns网站搞起了合作,大推opensocial.
对于sns网站来说,实际的好处就是可以使用现成的opensocial的应用来丰富网站内容,对于opensocial开发者来说开发一个支持opensocial的gadget可以运行在任何opensocial的sns容器上,对于google来说…呃,他可以说:我就是sns界的老大了.
目前opensocial的实现还只有shindig,就是说如果你希望你的网站支持opensocial写的应用,那么你需要把shindig集成到你的系统中.按照官方的说法:Apache Shindig is an open source project that contains code that you can plug into your server’s infrastructure and begin hosting OpenSocial apps relatively quickly.注意:relatively.
shindig包括四个部分:Gadget Container JavaScript,Gadget Server,OpenSocial Container JavaScript,OpenSocial Data Server,差不多是两两的对应关系,Container JavaScript差不多是前端的API,Server就是后端对API的支持.所以说opensocial得api相当于就是一个JavaScript的API,在特定的Container(iframe)里面运行,然后可以运用container带的一些特性.
集成shindig主要就是对于OpenSocial Data Server部分做一个实现,其他部分基本上不用管
如果你有自己熟悉的JEE server,(我就习惯tomcat),你可以在java/server/target目录下找到一个名字为shindig-server-1-SNAPSHOT.war的war包,然后你看自己爱好部署到自己的服务器上就可以了.
我们把shindig里面代码剥离出来,我这里把unittest的部分去掉了,因为到了实现api接口的部分,unittest还是得重写,这里就整一个干净的shindig.可以在tomcat里面运行并进行调试。假设shindig check out 的目录就是shindig
- 在eclipse里面建立一个标准的web项目,由于不同的插件方式不同,这步就不细说了,我这里没有插件,就建了一个java项目.
- 把java\server\target\shindig-server-1-SNAPSHOT\WEB-INF\lib里面的jar包拷到你自己web项目的WEB-INF\lib里面,以shindig开头的四个包不要拷.
- 将java\server\target\shindig-server-1-SNAPSHOT\gadgets文件夹拷贝到webroot根下
-
- 在eclipse中导入shindig\java\common\src\main\java
- shindig\java\gadgets\src\main\java
- shindig\java\social-api\src\main\java
- shindig\features下的文件,其中target文件夹不用导入
- shindig\java\gadgets\conf下的gadgets.properties文件
- 在src下建containers/default目录,copy shindig/config/container.js到此目录下
- 将shindig\java\server\src\main\webapp\WEB-INF下web.xml拷贝到webroot\WEB-INF下
- shindig\java\server\target\shindig-server-1-SNAPSHOT\gadgets\files\sampledata目录copy到src下
- 如果编译有问题,检查一下导入的包是否齐全了.
- 然后将项目发布到tomcat中,在浏览器中输入http:///gadgets/files/samplecontainer/samplecontainer.html
在display gadget里面可以输入gadget xml的地址,然后点”reset all”就可以看到结果.
现在得到的就是一个完整的web工程,可以进行调试了.
现在我们的shindig可以在服务器上跑了,但是在samplecontainer里面跑的都是模拟的数据,这些数据存放在sampledata/canonicaldb.json中,是一个json字符串,实际应用中我们应该把这些数据从自己的数据库中读取出来,只需要实现3个接口就可以了,org.apache.shindig.social.opensocial.spi包下的PersonService,ActivityService,AppDataService
现有的sample中有一个JsonDbOpensocialService实现了这3个接口(在org.apache.shindig.social.sample.spi包下),可以参照看一下.
在shindig中使用的依赖注入工具是google的Guice,可能大家不是很熟悉,有兴趣的可以参照这里,我就结合shindig里面的应用简单地说明一下,熟悉spring的话可以比较快地理解,注入就是将类之间的依赖关系从类的外部设定好,这样可以降低类之间的耦合程度,和spring不同的是,spring的注入设置都在xml文件里,而guice的注入关系都是写在代码里的,通过bind(someInterface.class).to(someImplement.class);这种语句来注入,这些注入都写在一个集成自module类里面,在shindig里面有两个类管理全部的注入,一个是org.apache.shindig.social.core.config.SocialApiGuiceModule,一个是org.apache.shindig.gadgets.servlet.HttpGuiceModule(实际上这个类继承自DefaultGuiceModule),HttpGuiceModule主要是从gadgets.properties里面读取配置,而SocialApiGuiceModule就是我们需要关注的opensocial api的注入.这两个类在web.xml里面加载,可以看到web.xml里面有如下一段:
<context-param>
<param-name>guice-modules</param-name>
<param-value>
org.apache.shindig.gadgets.servlet.HttpGuiceModule:
org.apache.shindig.social.core.config.SocialApiGuiceModule
</param-value>
</context-param>
…
<listener>
<listener-class>org.apache.shindig.common.servlet.GuiceServletContextListener</listener-class>
</listener>
这两句就是加载guice的注入关系.如果有需要也可以自己写一个集成module的类,然后添加到这里.用”:”隔开
但是我们仔细看一下,在SocialApiGuiceModule里面并没有发现把PersonService之类的接口绑定到
JsonDbOpensocialService这个类上,是因为现在使用java的标注形式绑定的,打开PersonService文件,在最上面可以看到这样一行@ImplementedBy(JsonDbOpensocialService.class),这是注入的另一种方式,表示JsonDbOpensocialService这个具体类来替换PersonService这个接口.
了解了这些之后,就可以自己写几个类来把sample中JsonDbOpensocialService替换掉,来实现opensocial的API.
部分来自这篇文档:Make Your Site an OpenSocial Container Using Shindig 但是这篇文档针对的shindig版本稍低,有些东西已经不能用在新版本的shindig上面,所以主要把里面的sql脚本拿来生成一个测试用的数据库.另外,导入数据库还要用命令行,太不方便了,shindig_sql 这里是一个mysql gui tools用的恢复脚本,直接用gui工具恢复就行了.shindig也被我打了个包,放到lib里面,这里可以下载. 数据库建好了之后(如果你不会建,可以参考本文最上面的链接),我们开始写几个类,把shindig里面自带的读取数据的类替换掉,来实现自己的opensocial data server. 新建了一个包com.my.open,新建三个文件DataLayer.java,JuiceModule.java,MysqlService.java,其中DataLayer.java负责与数据库通信,取到需要的数据,这里就简单地用了jdbc,实际生产环境中一般你可以替换成hibernate,或者用spring管理,MysqlService.java参照shindig中的org.apache.shindig.social.sample.spi.JsonDbOpensocialService修改,负责在调用opensocial api时返回数据,这里是调用了DataLayer来取数据,JuiceModule是用来替换掉shindig中原有的org.apache.shindig.social.core.config.SocialApiGuiceModule来完成依赖注入工作,将opensocial api的实现绑定到我们写的类上面. JuiceModule比较简单,将三个api service绑定到我们自己的实现上 还有两个类比较长,datalayer.java和mysqlservice.java,就不贴出来了,点击链接可以下载 然后需要把web.xml里的GuiceModule替换掉,就是将 下面是一些参考资源
package com.my.open;
import org.apache.shindig.social.core.config.SocialApiGuiceModule;
import org.apache.shindig.social.opensocial.spi.ActivityService;
import org.apache.shindig.social.opensocial.spi.AppDataService;
import org.apache.shindig.social.opensocial.spi.PersonService;
public class JuiceModule extends SocialApiGuiceModule{
@Override
protected void configure() {
super.configure();
bind(ActivityService.class).to(MysqlService.class);
bind(PersonService.class).to(MysqlService.class);
bind(AppDataService.class).to(MysqlService.class);
}
}
<context-param>
<param-name>guice-modules</param-name>
<param-value>
org.apache.shindig.gadgets.servlet.HttpGuiceModule:
org.apache.shindig.social.core.config.SocialApiGuiceModule
</param-value>
</context-param>
替换成
<context-param>
<param-name>guice-modules</param-name>
<param-value>
org.apache.shindig.gadgets.servlet.HttpGuiceModule:
com.my.open.JuiceModule
</param-value>
</context-param>
这样在context加载的时候就会加载我们自己写的module.
http://chrisschalk.com/shindig_docs/io/shindig-io.html
Shindig – Data Integration Guide
chabotc.com
opensocial-resources – Google Code
OpenSocial API Specification (v0.8) – OpenSocial – Google Code
发表评论
-
深入理解Java:SimpleDateFormat安全的时间格式化
2014-06-26 01:45 462原文引用自:http://www.cnblogs.com/p ... -
注册MS CRM 2011 online
2014-04-24 00:38 506http://www.cnblogs.com/StoneGa ... -
微信架构推测
2013-08-06 09:45 1337原文:http://wenku.baidu.com/vie ... -
arc-04-10-手机应用的性能测试
2013-01-05 15:01 679手机性能测试的工具一大堆,但专门针对开发手机应用的性能测试工 ... -
GraphicsMagick 介绍及安装
2012-12-26 16:56 1239引用说明:原文来自 http://paris8.org/a/b ... -
在windows系统中生成数字证书-V3
2012-12-10 16:43 1058引用说明:原文来自 http://zhouyongqiang. ... -
如何从最大用户并发数推算出系统最大用户数
2012-11-19 14:52 1415引用说明:原来来自 ht ... -
使用JIRA搭建企业问题跟踪系统
2012-07-20 09:33 0原文来自:http://www.blogjava.net/zh ... -
Eclipse rcp/rap 开发经验总结
2012-01-11 23:48 1261有牛人将 Eclipse RCP & RAP 开发经验 ... -
VMware Server 在 CentOS 下的安装与配置
2012-01-08 09:46 1099引用说明:原文来 ... -
rdesktop:Linux 下的远程桌面客户端
2012-01-07 11:37 943引用说明:原文来自于 http://blog. ... -
解决 Oracle 11g存在密码过期问题
2012-01-04 09:52 795引用说明:原文来自 ... -
角色权限,RBAC
2011-12-27 23:00 869引用说明:原文来 ... -
Spring Security 2 配置精讲
2011-12-12 20:10 775引用说明:原文来 ... -
Linux下Mongodb的分布式分片群集(sharding cluster)配置
2011-12-12 09:45 823引用说明:原文来自于http://www.linux ... -
使用 JReble 实现 tomcat 热布署
2011-11-24 09:42 2093甚至有人为了实现热部署,放弃各种框架(struts, spri ... -
基于MongoDB的好友消息动态的实现思路
2011-10-18 13:45 1550引用说明:原文来自 ... -
Linkedin网站技术架构简介
2011-10-11 14:41 1211引用说明:原文来 ... -
微薄后台架构浅析
2011-10-11 14:00 779引用说明:原文来自于http://blog.sina.c ... -
通过 Flick 看数据库集群
2011-09-19 14:14 829原文参见 http://www.cchere.com/arti ...
相关推荐
**OpenSocial Java版Shindig使用Jar包** OpenSocial 是一个开放的标准,旨在定义一套API,使得社交网络应用可以跨平台运行。Java版的Shindig是实现OpenSocial规范的一个开源实现,它提供了服务器端的基础设施,使得...
Shindig是一个开源项目,主要用于实现OpenSocial标准,它提供了一个服务器端的框架,用于构建社交网络应用。在这个过程中,Shindig允许开发者扩展其功能,以满足特定的应用需求。本文将详细介绍如何在Shindig中新增...
Java 版 Shindig 是 OpenSocial 的实现之一,它提供了一个服务器端的框架,使得开发者可以使用 Java 语言开发这些社交应用程序。Shindig 也被称为 Apache SocialSite,它实现了 OpenSocial 规范中的各种 API,包括 ...
适用于Chrome的Shindig屏幕共享扩展程序 Shindig是一个视频聊天平台,可同时容纳多达1,000名参与者。 Shindig可让您与活动参与者聊天,向主要演讲者提问,亲自向观众展示,加入视频组并进行聊天以进行协作,在私人...
在深入研究源代码之前,你需要熟悉以下概念: 1. 版本控制工具:如Git,用来管理源代码的版本和协作开发。 2. Maven或Gradle:构建管理系统,用于编译、打包和依赖管理。 3. Java编程基础:理解类、对象、接口、异常...
- **Shindig**:这是一个开源的参考实现,用作容器来运行基于OpenSocial的应用程序。 - **开发者社区**:围绕OpenSocial形成了一个活跃的开发者社群,成员们共同推动技术的发展和应用。 #### 二、OpenSocial API...
GroupWyze允许用户在单个页面上创建事件,shindig,视频群聊,聚会,音乐会,欢乐时光,团队建设和一般的恶作剧。 朋友,家人,同事和熟人可以对特定事件的细节进行投票,以使民主化并最大程度地提高乐趣! 然后,...
1. **环境搭建**:首先,你需要设置一个支持OpenSocial的开发环境,这可能包括安装Shindig服务器,配置数据库,以及设置必要的开发工具。 2. **API调用**:深入理解数据API和Gadgets API,学习如何获取和更新社交...
3. **数据模型**:OpenSocial定义了一个标准化的数据模型,包括People(人物)、Activities(活动)、Shindig(聚会,作为服务端实现的一部分)等对象,使得开发者可以跨平台访问和操作这些数据。 4. **RESTful API...
#Shindig警长管理事件的应用程序。 ##最小可行产品供组织者和财务批准者使用。 组织者可以添加,删除和编辑组织和事件。 组织者可以增加和减少活动费用。 财务批准者可以确认已收到收入,并且可以批准或拒绝组织者...
近年来,IBM继续推动开源技术的发展,对KVM、oVirt和Open Virtualization Alliance的支持,以及对Apache Shindig、Apache Hadoop(作为IBM BigInsights的一部分)、Eclipse Orion、Lyo、Paho、OpenJDK、Apache ...
例如,文档提到了参考了shindig的缓存类和apc,这意味着开发者可以借鉴shindig项目中的缓存设计思路,或者直接复用其中的某些缓存实现代码。 在实际应用中,开发者需要根据具体需求和环境选择合适的缓存策略。例如...