一步步调通Openfire3.10.2+Smack4.1.4官方Demo
2015-10-23 01:49
501 查看
首先在电脑上安装Openfire服务器(本文安装的版本为Openfire 3.10.2)
Openfire下载地址http://www.igniterealtime.org/downloads/index.jsp 本文Openfire服务器名称为192.169.20.246
Smack 4.1.4的官方文档下载地址包括jar包和javadoc(官方给的解释Easy to use Java XMPP client library.)
http://www.igniterealtime.org/downloads/download-landing.jsp?file=smack/smack_4_1_4.zip
下载Smack之后从文档smack_4_1_4/releasedocs/documentation/index.html给的示例
// Create a connection to the gwcheng-pc server on a specific port.
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword("<span style="color: rgb(0, 136, 0); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.3px; white-space: pre;">wangzheng</span>", "<span style="color: rgb(0, 136, 0); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.3px; white-space: pre;">wz20120404</span>")
.setServiceName("<span style="color: rgb(136, 0, 0); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.3px; white-space: pre;">192.169.20.246</span>")
.setHost("<span style="color: rgb(136, 0, 0); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.3px; white-space: pre;">192.169.20.246</span>")
.build();
AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
conn2.connect();建立一个java工程,拷贝smack_4_1_4\libs\下的jar包到自己的工程里。
运行上面的代码(代码中”wangzheng”和"wz20120404"是我在openfire中注册的用户名和密码”192.169.20.246”为我的openfire服务器名称
)
运行上面的程序,会报如下的错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserFactory
Caused by: java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserFactory
这个错误很明显是缺少jar包 xmlpull.jar,此处导入xmlpull-1.1.3.1.jar
导入之后运行还是会报错
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalStateException: org.xmlpull.v1.XmlPullParserException: caused by: org.xmlpull.v1.XmlPullParserException: resource not found: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory make sure that parser implementing XmlPull API is available
Caused by: org.xmlpull.v1.XmlPullParserException: caused by: org.xmlpull.v1.XmlPullParserException: resource not found: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory make sure that parser implementing XmlPull API is available
这种错误还是缺少jar包 kxml.jar,此处导入kxml2-2.3.0.jar
导入之后运行还是会报错
Exception in thread "main" java.lang.NoClassDefFoundError: de/measite/minidns/DNSCache
Caused by: java.lang.ClassNotFoundException: de.measite.minidns.DNSCache
继续导入jar包 minidns.jar,此处导入minidns-0.1.7.jar
导入之后运行还是会报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/jxmpp/util/cache/ExpirationCache
Caused by: java.lang.ClassNotFoundException: org.jxmpp.util.cache.ExpirationCache
继续导入jar包 jxmpp-core-0.5.0-alpha6.jar和 jxmpp-util-cache-0.4.0-alpha1.jar
导入之后运行还是会报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/StrictHostnameVerifier
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.StrictHostnameVerifier
继续导入jar包 httpclient-4.4.1.jar
导入之后运行还是会报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
继续导入jar包 commons-logging-1.2.jar
导入之后运行还是会报错
org.jivesoftware.smack.SmackException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这个错误造成的原因是:Openfire 服务器(安全设置问题),这个安全证书问题,我会单独抽出来,进行详细的说明。
openfire服务器端解决办法:
“服务器设置”--“安全设置”---将“客户端安全联接”中由“非必须”,修改为“自定义”,另外把“旧的SSL方式”和“TLS方式”都设置为无效。
至此,我们完成了XMPP服务开发第一步:XMPP服务器连接
package com.openfire.util; import java.io.IOException; import org.jivesoftware.smack.AbstractXMPPConnection; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.tcp.XMPPTCPConnection; import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration; public class ConnectionUtil { //简单连接 public boolean connect(String username,String password,String serverName){ boolean target=false; XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setUsernameAndPassword(username, password) .setServiceName(serverName) .setHost(serverName) .setPort(5222) .build(); AbstractXMPPConnection conn = new XMPPTCPConnection(config); try { conn.connect(); target = conn.isConnected(); if(target){ System.out.println("XMPP 服务器连接成功"); }else{ System.out.println("XMPP 服务器连接不成功"); } } catch (SmackException | IOException | XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); } return target; } }
package com.openfire.main; import com.openfire.util.ConnectionUtil; public class ConnectionTest { public static void main(String[] args) { // TODO Auto-generated method stub ConnectionUtil connection=new ConnectionUtil(); connection.connect("wangzheng", "wz20120404", "192.169.20.246"); } }
相关文章推荐
- linux下搭建ftp服务器
- org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete
- org.apache.hadoop.security.AccessControlException: Permission denied:
- 《HBase权威指南》读书笔记6:第六章 可用客户端
- 对linux编译模块make -C path_to_kernel_src M=`pwd` modules的理解
- maven自动部署到tomcat的问题
- apache2 开发C++模块 —— 基于cximage实现图片、缩略图下载功能
- Linux shell函数使用
- Gnome3提取gnome-shell.css以及修改和编译
- 《HBase权威指南》读书笔记5:第五章 客户端API: 管理功能
- Linux第一个重头戏时间管理
- 动漫网站的制作
- linux挂载磁盘步骤
- nginx 代理imap pop smtp
- CentOS7设置开机启动
- Apache Configuration
- Linux用户与用户组的详解
- ecshop个人收款接口
- 修改CentOS 7网卡名称eno16777736为eth0
- Linux系统时间设置