假期温习了一下openfire和以前写的QQTransport,
又调用lumaQQ写了点代码,在spark和openfire中实现支持qq的gateway,经过测试可用。
http://www.igniterealtime.org/downloadServlet?filename=--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/openfire_src_3_4_3.zip
svn方式下载:
Openfire:
svn co http://svn.igniterealtime.org/svn/repos/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/trunk openfire
Spark:
svn co http://svn.igniterealtime.org/svn/repos/--escaped_anchor:e8b9b88aab5416e56fe429cf45045bf5--/trunk spark
Smack:
svn co http://svn.igniterealtime.org/svn/repos/smack/trunk smack
Asterisk-IM:
svn co http://svn.igniterealtime.org/svn/repos/asterisk-im/trunk asterisk-im
svn客户端:
http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe
a.Saprk中,需要修改的地方有:
1.首先找到qq在线和离线的图标:
在线: http://is.--escaped_anchor:f124307942fb3d42345ce2d54c166839--.com/webpresence/help/help_clip_image007.gif
离线:http://is.--escaped_anchor:f124307942fb3d42345ce2d54c166839--.com/webpresence/help/help_clip_image008.gif
图标来源:http://is.--escaped_anchor:f124307942fb3d42345ce2d54c166839--.com/webpresence/help/help.shtml
2.定义资源信息常量和相关字符串信息,
尽量不改动原有代码,因此把扩展的代码写的比较丑。
3.修改org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin.java里的
populateTransports方法。
增加:
import com.lizongbo.spark.plugin.gateways.transports.QQTransport;
else if (entityName.endsWith(”qq.”)) {
QQTransport qqTransport = new QQTransport(item.getEntityID());
TransportUtils.addTransport(item.getEntityID(), qqTransport);
}
4.QQTransport的代码:
[code]
package com.lizongbo.spark.plugin.gateways.transports;
import java.net.URL;
import org.jivesoftware.resource.Res;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import org.jivesoftware.sparkimpl.plugin.gateways.transports.*;
public class QQTransport implements Transport {
// public static final String QQ_TRANSPORT_ACTIVE_IMAGE =
// “QQ_TRANSPORT_ACTIVE_IMAGE”;
// public static final String QQ_TRANSPORT_INACTIVE_IMAGE =
// “QQ_TRANSPORT_INACTIVE_IMAGE”;
org.jivesoftware.sparkimpl.plugin.gateways.GatewayPlugin gg;
org.jivesoftware.spark.SparkManager gga;
private String serviceName;
public QQTransport(String serviceName) {
this.serviceName = serviceName;
System.out.println(this.getIcon()); ;
System.out.println(this.getInactiveIcon());
}
public String getTitle() {
return “QQ 账户凭证”;
// return Res.getString(”title.qq.registration”);
}
public String getInstructions() {
return “请输入你的QQ号码和密码。”;
// return Res.getString(”message.enter.qq”);
}
public Icon getIcon() {
final String iconURI = “/images/qq_online.gif”;
try {
final URL imageURL = //getClass().getClassLoader().
//getSystemClassLoader().getResource(
getClass().getResource(iconURI);
return new ImageIcon(imageURL);
} catch (Exception ex) {
System.out.println(iconURI + ” not found.”);
}
return null;
//return SparkRes.getImageIcon(QQ_TRANSPORT_ACTIVE_IMAGE);
}
public Icon getInactiveIcon() {
final String iconURI = “/images/qq_offline.gif”;
try {
final URL imageURL = //Thread.class.getClassLoader().
// getSystemClassLoader()
getClass().getResource(
iconURI);
return new ImageIcon(imageURL);
} catch (Exception ex) {
System.out.println(iconURI + ” not found.”);
}
return null;
//return SparkRes.getImageIcon(QQ_TRANSPORT_INACTIVE_IMAGE);
}
public String getServiceName() {
return serviceName;
}
public String getName() {
return “QQ”;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
public Boolean requiresUsername() {
return true;
}
public Boolean requiresPassword() {
return true;
}
public Boolean requiresNickname() {
return false;
}
}
[/code]
4.打包文件。
将新增文件打包到qqransport.jar,
替换修改后的GatewayPlugin.class
你好,我刚刚接触openfire和spark,想向你请教请教,可以的话q我:183448997。
[Reply]
lizongbo reply on 1月 29th, 2008:
如有什么需要交流的请直接留言。
你好,非常需要你的qq trans,但是我搞了一天也没有搞好,对java实在是不太懂,想请教你能否把做好的包给一份。我用的是openfire3.4.5,spark2.5.8
[Reply]
通过svn下载了spark2.5.8源代码,发现已经有你的qq代码了,可是不会编译呀
[Reply]
lizongbo reply on 2月 23rd, 2008:
你只要编译好相关class文件,替换到Spark\lib\spark.jar,注意把相关新增的图片文件和propertis文件都添加替换进去。
你好,看了你的文章,想和你交个朋友。我的QQ121088580.MSN:jameshwang8@msn.com
[Reply]
lizongbo reply on 2月 23rd, 2008:
不好意思,由于条件限制,qq和msn的上线时间不多,可以电子邮件交流: lizongboATgmail.com
您好,我是JAVA的初学者,,看了您的《为 OpenFire和Spark增加QQTransport–Spark篇》后,对即时通讯很是感兴趣,下载了原码后无法运行(我是用IntelliJ IDEA 7.0.3的,加载代码后可以编译但运行不起来),非常着急,希望得到您的指导,望回复,谢谢~~~
[Reply]
lizongbo reply on 3月 29th, 2008:
to sqzzd:
你好,不好意思,由于现在比较忙,无法提供相关帮助,建议你通过google获取帮助,谢谢。
你好!我对开源的IM有很大兴趣!希望能得到袮的指导!这是我的邮箱sqsowen@126.com
[Reply]
最新的 IM GATEWAY 官方插件已经支持了QQ,但是测试中发现,客户端SPARK2.5.8 根本就没有显示 QQ的图标,但是当选择别的“测试IM”时候,比方说GTALK,在客户端都可以正常显示图标。为什么唯独QQ的不能出现登录图标?
着急。。。
[Reply]
lionlee reply on 5月 19th, 2008:
spark要去下最新的源代码重新编译。好像要2.6.*以上才有这个功能。
怎么打包到qqransport.jar大哥急急!!!!
[Reply]
怎么打包?
[Reply]