04 2013 档案

Spark研究笔记10:重要的工厂类SoundManager(原创)
摘要:SoundManager用于控制内置的声音文件,主要的方法:public void playClip(final AudioClip clip) { final Runnable playThread = new Runnable() { public void run() { try { clip.play(); } catch (Exception ex) { System.err.prin... 阅读全文

posted @ 2013-04-27 17:54 CVT-wangxin 阅读(243) 评论(0) 推荐(0)

Spark研究笔记9:重要的工厂类PresenceManager(原创)
摘要:PresenceManager用于用户的在线状态和模式处理,类 Presence 位于org.jivesoftware.smack.packet,说明:public enum Type { /** * The user is available to receive messages (default). */ available, /** * The user is unavailable to receive messages. */ unavailable, /... 阅读全文

posted @ 2013-04-27 17:53 CVT-wangxin 阅读(359) 评论(0) 推荐(0)

Spark研究笔记8:重要的工厂类PluginManager(原创)
摘要:PluginManager 负责装载所有的插件和Workspaces。私有域:private final List<Plugin> plugins = new ArrayList<Plugin>();//Plugin接口//PublicPlugin是注册的插件,字面含义是公开 private final List<PublicPlugin> publicPlugins = new CopyOnWriteArrayList<PublicPlugin>();//单例管理器 private static PluginManager singleton; 阅读全文

posted @ 2013-04-27 17:52 CVT-wangxin 阅读(329) 评论(0) 推荐(0)

Spark研究笔记7:重要的工厂类UserManager(原创)
摘要:UserManager用于处理所有用户的代理应用,每个用户或者所有正在聊天的用户都能被UserManager引用,你可以通过UserManager得到聊天室中的访问者。代码写的很清晰,懒得翻译了View Code /** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * yo 阅读全文

posted @ 2013-04-27 17:51 CVT-wangxin 阅读(431) 评论(0) 推荐(0)

Spark研究笔记6:重要的工厂类SessionManager(原创)
摘要:SessionManager负责在xmppconnection 连接会话处理。比如处理连接错误和添加会议监听和检索用户连接,等。SessionManager实现了接口ConnectionListener,ConnectionListener的定义:public interface ConnectionListener { public void connectionClosed(); public void connectionClosedOnError(Exception e); public void reconnectingIn(int seconds); public void re. 阅读全文

posted @ 2013-04-27 17:50 CVT-wangxin 阅读(408) 评论(0) 推荐(0)

Spark研究笔记5:重要的工厂类NativeManager(原创)
摘要:NativeManager目前主要是为了闪屏插件(org.jivesoftware.spark.plugin.flashing)服务的,主要是操作NativeHandler列表,而NativeHandler接口的主要实现类是FlashingHandler,FlashingHandler的定义:public class FlashingHandler implements NativeHandler { private FlashWindow flasher; public FlashingHandler() { flasher = new FlashWindow();... 阅读全文

posted @ 2013-04-27 17:48 CVT-wangxin 阅读(429) 评论(0) 推荐(0)

Spark研究笔记4:重要的工厂类DataManager(原创)
摘要:DataManager用于处理聊天室的关联数据。MetadataListener接口被定义成任意类型的Map对像,这非常有利于扩展:public interface MetadataListener { void metadataAssociatedWithRoom(ChatRoom room, Map<?, ?> metadata);}该类只有3个方法,非常简洁 public void addMetadataListener(MetadataListener listener) { metadataListeners.add(listener); } publ... 阅读全文

posted @ 2013-04-27 17:46 CVT-wangxin 阅读(231) 评论(0) 推荐(0)

Spark开发研究笔记专题[入口必读]
摘要:Spark研究笔记1:重要的静态工厂类SparkManagerSpark研究笔记2:重要的工厂类WorkspaceSpark研究笔记3:重要的工厂类ChatManagerSpark研究笔记4:重要的工厂类DataManagerSpark研究笔记5:重要的工厂类NativeManagerSpark研究笔记6:重要的工厂类SessionManagerSpark研究笔记7:重要的工厂类UserManagerSpark研究笔记8:重要的工厂类PluginManagerSpark研究笔记9:重要的工厂类PresenceManagerSpark研究笔记10:重要的工厂类SoundManagerSpark研 阅读全文

posted @ 2013-04-27 17:05 CVT-wangxin 阅读(827) 评论(0) 推荐(0)

Spark研究笔记3:重要的工厂类ChatManager(原创)
摘要:ChatManager处理大多数消息的监听和过滤器的注册,以及聊天室的创建和检索。它也被用来取得的chatframe的UI对象。ChatManager实现了MessageEventNotificationListener接口,该接口在Smack中定义。接口的方法: /** * 指消息已发出 * * @param from:发送者 * @param packetID:消息包ID */ public void deliveredNotification(String from, String packetID); /** *当接收到... 阅读全文

posted @ 2013-04-27 16:46 CVT-wangxin 阅读(794) 评论(0) 推荐(0)

Spark研究笔记2:重要的工厂类Workspace(原创)
摘要:前言:上一节我们参观了工厂的中控指挥中心,接下来需要下到各个生产车间去看看了。Workspace是Spark的内置单例容器类,用于放置自定义的插件,比如新建一个Tab页: Workspace workspace = SparkManager.getWorkspace(); JButton button = new JButton("HELLO SPARK USERS"); workspace.getWorkspacePane().addTab("MyPlugin", button);它的私有域内置了Workspace、Tab容器TabbedPane、状态 阅读全文

posted @ 2013-04-27 11:49 CVT-wangxin 阅读(512) 评论(0) 推荐(0)

Spark研究笔记1:重要的静态工厂类SparkManager(原创)
摘要:前言:想了解汽车是怎么生产的,就必须到工厂参观一下,而工厂的中控指挥中心,是一定要来看看的。想进入Spark开发,就必须先寻找一个入口,然后先轮廓后细节的学习,SparkManager就有些类似中控指挥中心,是非常好的学习入口。按SparkManager类代码的注释,可以这么理解:SparkManager是一个静态的中控管理类,他负责生成其他的管理类,比如ChatManager、PreferenceManager、SoundManager...比如在插件开发中需要处理系统声音,可以这样编写:final Runnable soundThread = new Runnable() { public 阅读全文

posted @ 2013-04-27 11:22 CVT-wangxin 阅读(775) 评论(0) 推荐(0)

Spark插件开发完全入门手册,多级组织架构初步(原创)
摘要:前言:Openfire +Spark 是实时的基于XMPP协议的开源即时消息传输平台,是原来的Jive Messenger,其灵活的插件开发架构深受开发者的喜爱。问题:Spark只有单一组,没有多级组织架构的分组,实际企业应用中,只要是稍微有些人数,就难以应对了,特别是需要和域进行同步的情况,为此,我们首先要在服务器端构建同步AD域组织架构的数据库,并且是确保有版本控制功能(方便批次同步),客户端同步最新的版本,获取组织架构和用户的改变,形成树形的组织架构,类似下图:为此,我们需要开发Spark插件来实现这一功能。通过其自身的工厂类可以非常容易实现。Spark的工厂类和监听类,抄自官网:Man 阅读全文

posted @ 2013-04-26 13:58 CVT-wangxin 阅读(4217) 评论(4) 推荐(0)

配置Openfire使用Windows AD认证(原创)
摘要:忙了一上午,装数据库,搭AD,N次的LDAP配置失败....,在数据库配置那里也可以改改数据驱动(原来的驱动对.\SQLserver之类的servername好像死活不认)驱动程序类输入:com.microsoft.sqlserver.jdbc.SQLServerDriver数据库URL:出入用户名sa,密码xxxxxx,其他默认。点击继续:启动配置:Stop Openfire.Edit conf/openfire.xml in your Openfire installation folder and set <setup>true</setup> to <se 阅读全文

posted @ 2013-04-25 14:14 CVT-wangxin 阅读(1491) 评论(0) 推荐(0)

Windows 2012服务器建立域控(AD DS)详解(转)
摘要:原文:http://yaabb163.blog.51cto.com/1975905/987138作者:杨坚 阅读全文

posted @ 2013-04-25 11:04 CVT-wangxin 阅读(236) 评论(0) 推荐(0)

Java 动态代理机制分析及扩展,第 2 部分(转)
摘要:转自:http://www.ibm.com/developerworks/cn/java/j-lo-proxy2/本文希望将 Java 动态代理机制从接口扩展到类,使得类能够享有与接口类似的动态代理支持。设计及特点新扩展的类名为 ProxyEx,将直接继承于 java.lang.reflect.Proxy,也声明了与原 Proxy 类中同名的 public 静态方法,目的是保持与原代理机制在使用方法上的完全一致。图 1. ProxyEx 类继承图 与原代理机制最大的区别在于,动态生成的代理类将不再从 Proxy 类继承,改而继承需被代理的类。由于 Java 的单继承原则,扩展代理机... 阅读全文

posted @ 2013-04-20 10:22 CVT-wangxin 阅读(241) 评论(0) 推荐(0)

Java 动态代理机制分析及扩展,第 1 部分(转)
摘要:转自:http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/引言Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分 派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。本文首先从 Java 动态代理的运行机制和特点出发,对其代码进行了分析,推演了动态生成类的内部实现。回页首代理:设计模式代理是一种常 阅读全文

posted @ 2013-04-20 10:21 CVT-wangxin 阅读(200) 评论(0) 推荐(0)

Java 继承设计技巧--摘自《JAVA核心技术》
摘要:摘自《JAVA核心技术》第5章(1)将公共操作和域放置在超类 (2)不要使用受保护的域 有些程序员认为,将大多数的实例域定义为protected是一个不错的主意,只有这样,子类才能够在需要的时候直接访问他们。然而,protected 机制并不能够带来更好的保护,其原因主要有两点。第一,子类集合是无限制的,任何一个人都能够由某个类派生一个子类,并编写代码以直接访问 protected的实例域,从而破坏了封装性。第二,在Java程序设计语言中,在同一个包中的所有类都可以访问protected域,而不管它是否为 这个类的子类。 (3)使用继承实现“is-a”关系 使用继承很容易得到节省代码的目的,但 阅读全文

posted @ 2013-04-19 16:15 CVT-wangxin 阅读(201) 评论(0) 推荐(0)

instanceof和getClass()的区别
摘要:classA{}classBextendsA{}Objecto1=newA();Objecto2=newB();o1instanceofA=>trueo1instanceofB=>falseo2instanceofA=>true//<================HEREo2instanceofB=>trueo1.getClass().equals(A.class)=>trueo1.getClass().equals(B.class)=>falseo2.getClass().equals(A.class)=>false//<======= 阅读全文

posted @ 2013-04-19 14:57 CVT-wangxin 阅读(173) 评论(0) 推荐(0)

XMPP——Smack[6]离线消息和离线文件的实现 (转)
摘要:转自:http://blog.csdn.net/wklken/article/details/64601821.离线消息 openfire本身是支持离线消息的,不需要进行额外处理,可以用spark测试下 使用smack,其实他提供了相应的方法 Class OfflineMessageManager 可以看下描述The OfflineMessageManager helps manage offline messages even before the user has sent an available presence. When a user asks for his offline me 阅读全文

posted @ 2013-04-18 19:26 CVT-wangxin 阅读(569) 评论(0) 推荐(0)

XMPP——Smack[5]文件传输及离线消息的获取 (转)
摘要:转自:http://blog.csdn.net/wklken/article/details/6460126三天时间,赶在最后一下午实现了文件的传输,本来需要实现离线文件的发送的,一直没想好怎么弄,找openfire的离线文件插件没找到,后来想出一种方法,起服务器时起了一个系统用户,一直在线,当用户发送离线文件,检测到对方不存在,先发给系统用户,存到服务器路径,并在数据库中保存信息,当对方上线时,系统用户查表,拿文件发送想是这么想的,问题是时间太紧,没有实现,囧。下一篇写离线消息和离线文件文件的发送开一个文件选择框,选中文件后再调用下面的方法[java] view plaincopyprint 阅读全文

posted @ 2013-04-18 19:25 CVT-wangxin 阅读(452) 评论(0) 推荐(0)

XMPP——Smack[4]状态,心情,头像更改 (转)
摘要:转自:http://blog.csdn.net/wklken/article/details/6460117这里写完,最基本的IM功能也就完了,还剩下个发送接收文件,离线消息扩展等等呵呵,三天时间,看的不是很深入,欢迎大家补充呀修改自身状态包括上线,隐身,对某人隐身,对某人上线[java] view plaincopyprint?publicstaticvoidupdateStateToAvailable(XMPPConnectionconnection){Presencepresence=newPresence(Presence.Type.available);connection.send 阅读全文

posted @ 2013-04-18 19:24 CVT-wangxin 阅读(617) 评论(0) 推荐(0)

XMPP——Smack[3]用户列表,头像,组操作,用户操作 (转)
摘要:转自http://blog.csdn.net/wklken/article/details/6460112继续,这是显示用户列表方面的用户列表Smack主要使用Roster进行列表管理的connection.getRoster();[java] view plaincopyprint?/***返回所有组信息<RosterGroup>**@returnList(RosterGroup)*/publicstaticList<RosterGroup>getGroups(Rosterroster){List<RosterGroup>groupsList=newArr 阅读全文

posted @ 2013-04-18 19:23 CVT-wangxin 阅读(558) 评论(0) 推荐(0)

XMPP——Smack[2]会话、消息监听、字体表情和聊天窗口控制 (转)
摘要:继续连接之后,拿到了connection,通过它可以搞定会话建立一个会话[java] view plaincopyprint?MessageListenermsgListener=newMessageListener(){publicvoidprocessMessage(Chatchat,Messagemessage){if(message!=null&&message.getBody()!=null){System.out.println("收到消息:"+message.getBody());//可以在这进行针对这个用户消息的处理,但是这里我没做操作,看后 阅读全文

posted @ 2013-04-18 19:21 CVT-wangxin 阅读(471) 评论(0) 推荐(0)

XMPP——Smack[1]连接、登陆及账户操作 (转)
摘要:转自:http://blog.csdn.net/wklken/article/details/6460075需求:基于XMPP的IM工具,需实现和gtalk实现通信,需实现同spark的通信,需架设服务器,实现同自身客户端的通信,传文件,视频聊天 Smack是一个开源,易于使用的XMPP(jabber)客户端类库。 Smack API, 是一个 Java 的XMPP Client Library,也是由Jive Software开发。 优点:编程简单。 缺点:API并非为大量并发用户设计,每个客户要1个线程,占用资源大,1台机器只能模拟有限(数千个)客户.smack是一个用 java 写的X. 阅读全文

posted @ 2013-04-18 17:50 CVT-wangxin 阅读(416) 评论(0) 推荐(0)

XMPP简介
摘要:历史Jeremie Miller于1998年开始了这个项目。第一个公开版本于2000年5月发行。这个项目的主要产品是jabberd,XMPP的服务器端软件。它既可以创建私人的XMPP网络,也可以加入全球的公共XMPP网络。XMPP的关键特色是,分散式的实时通信系统,以及使用XML流。Jabber已经由IETF XMPP协议(RFC3920)标准化。Jabber是一个开放源代码形式组织产生的网络实时通信协议。XMPP原本是为即时通讯而量身定制,但由于XML Stanza本身是XML元素,在基于XML灵活发展的特性下,使得XMPP也可以适用其他方面,已经得到了IETF的批准。XMPP与IMPP、P 阅读全文

posted @ 2013-04-18 17:49 CVT-wangxin 阅读(1269) 评论(0) 推荐(0)

openfire消息接收、处理流程图
摘要: 阅读全文

posted @ 2013-04-18 17:44 CVT-wangxin 阅读(448) 评论(0) 推荐(0)

XMPP协议的原理介绍(转)
摘要:转自:http://blog.csdn.net/wbw1985/article/details/5502272XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;在IETF 中,把IM协议划分为四种协议,即即时信息和出席协议(Instant Messaging. 阅读全文

posted @ 2013-04-18 17:28 CVT-wangxin 阅读(260) 评论(0) 推荐(0)

JAVA基础学习笔记:有趣的静态方法
摘要:摘自《JAVA核心技术》第4章import java.util.*;public class welcome { public static void main(String[] args) { /* * Test 1: Methods can't modify numeric parameters */ System.out.println("Testing tripleValue:"); double percent = 10; System.out.println("Before: percent =" + percent); percen 阅读全文

posted @ 2013-04-18 15:32 CVT-wangxin 阅读(155) 评论(0) 推荐(0)

导航