Jwchat 的安装和配置、Service unavailable、Authorization failed问题汇总

标签: jwchat service unavailable | 发表时间:2012-05-17 22:05 | 作者:hoojo
出处:http://www.blogjava.net/

上一篇介绍了Openfire开源聊天IM服务器的安装: http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html

这篇文章介绍Jwchat的安装和配置

 

首先Jwchat的配置和安装需要具备的环境:

Tomcat 5.0.28+/Tomcat 6

JDK 1.6+

Openfire 3.7.1

1、 下载jwchat工程文件

下载站点: http://blog.jwchat.org/jwchat/download/

Zip下载: http://downloads.sourceforge.net/jwchat/jwchat-1.0.zip?use_mirror=

 

2、 下载完成后,将jwchat-1.0.zip解压到你的tomcat的webapps目录,将jwchat-1.0命名为jwchat,如果不这样的话,可能会出现错误,如Authorization failed。至少这样会方便你访问jwchat工程。

然后将index.html.zh_CN等这样带有*.后缀.zh_CN的这样的文件的.zh_CN都删掉,进行重命名。.zh_CN是表示中文版的,当然你也可以直接将*.后缀.后缀的文件进行重命名,那样就是默认的英文版的了。

批量命名工具类:

package com.hoo.util;
 
import java.io.File;
 
/**
 * <b>function:</b> 文件命名工具类
 * @author hoojo
 * @createDate 2012-5-14 下午01:58:14
 * @file FileRenameUtils.java
 * @package com.hoo.util
 * @blog http://blog.csdn.net/IBM_hoojo
 * @email [email protected]
 * @version 1.0
 */
public abstract class FileRenameUtils {
    
    private final static String FILE_PATH = "D:\\apache-tomcat-6.0.33\\webapps\\jwchat";
    
    /**
     * <b>function:</b> 将指定目录下的文件的type类型的文件,进行重命名,命名后的文件将去掉type
     * <p>example: 如果type = html; index.html.html -> index.html</p>
     * <p>example: 如果type = zh_CN; index.html.zh_CN -> index.html</p>
     * @author hoojo
     * @createDate 2012-5-16 下午02:16:48
     * @param path
     * @param type
     */
    public static void rename(String path, String type) {
        if (path == null || "".equals(path)) {
            path = FILE_PATH;
        }
        File dir = new File(path);
        File[] list = dir.listFiles();
        for (File file : list) {
            String name = file.getName();
            String[] s = name.split("\\.");
            if (s.length == 3 && type.equals(s[2])) {
                System.out.println(s[0] + "--" + s[1] + "--" + s[2]);
                file.renameTo(new File(path + "/" + s[0] + "." + s[1]));
            }
        }
    }
    
    public static void main(String[] args) {
    FileRenameUtils.rename("D:\\apache-tomcat-6.0.33\\webapps\\jwchat", "zh_CN");
    }
}

3、 下载JabberHTTPBind这个包,因为直接下载的jwchat没有WEB-INF、web.xml是无法运行的。

JabberHTTPBind是jwchat进行http bind通信的一种方式,它可以让jwchat和openfire进行链接通信。

站点: http://blog.jwchat.org/jhb/

下载地址: http://blog.jwchat.org/download/JabberHTTPBind-1.1.1.zip

JabberHTTPBind会依赖xalan的library库

下载站点: http://xml.apache.org/xalan-j/downloads.html

下载目录: http://labs.renren.com/apache-mirror/xml/xalan-j/

 

4、 下载完成后,将JabberHTTPBind的zip解压出来的WEB-INF、META-INF一并放到刚才的jwchat目录中,并且将刚才下载的xalan的xalan.jar,serializer.jar, xercesImpl.jar, xml-apis.jar放到webapps\jwchat\WEB-INF\lib目录下即可。

 

5、 修改jwchat目录中的相关配置

修改config.js文件

var BACKENDS = 
[
        {
            ……
        },
        {
            ……
        },
        {
            name:"Open Relay",
            description:"HTTP Binding backend that allows connecting to any jabber server",
            httpbase:"/JHB/", /* 修改这里为:/jwchat/JHB/ */
            type:"binding",
            default_server: SITENAME
        },
        {
            ……
        }
];

修改WEB-INF目录下的web.xml文件

<servlet-mapping>
        <servlet-name>Jabber HTTP Binding Servlet</servlet-name>
        <url-pattern>/</url-pattern>
         url-pattern修改为:/JHB/
         <!-- 这里的修改主页是对应上面的config.js,如果config.js的httpbase配置是/jwchat/,那这里的就不用修改了 -->
</servlet-mapping>

6、 启动tomcat后,访问 http://localhost:8080/jwchat/

如果登录出现Service unavailable这个问题,那么会有以下几种情况:

A、 表明服务器不可用,可能是openfire服务器没有启动,

B、 webapps\jwchat \config.js的配置有问题,如var SITENAME = "localhost";和openfire服务器地址没有对应

C、 可能是tomcat版本低于tomcat6或是jwchat缺少相应的jar包

 

7、 如果登录出现Authorization failed验证失败,那么有以下几种可能的情况:

A、 用户没有注册

B、 openfire的证书(C:\Program Files\openfire\resources\security)没有安装到相应的jdk的C:\Program Files\Java\jre6\lib\security目录下

如果出现这种异常信息:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed也表明是安全证书的问题;

关于解决ssl验证,网上有人说在jsjac.js中的if(this.has_sasl) 这行前面加上this.has_sasl = false;来取消ssl安全证书的验证。

C、 如果你的工程名称不是jwchat,建议把它修改成jwchat并且修改config.xml的相关链接的配置(httpbase)

D、 还有可能是你当前的用户没有注册,这个时候你可以注册一个用户或是在openfire控制台的用户组中添加一个用户,然后再等了看看是否存在这个问题。

 

8、 修改服务器名称

点击服务器à服务器管理器à编辑属性 修改服务器名称

image

修改后的服务器名称

image

出现叹号,我们要删除安全证书,点击服务器à服务器设置à服务器安全证书删掉这里的证书。

image

删除后,在当前页面会出现提示,然后按照提示点击相应的链接,重启服务器,然后登陆,再生成证书

image

生成证书需要点时间,然后生成完成后,手动重启openfire服务器,再次登陆发现警告没有了。

  image

9、 在服务器端增加配置

xmpp.httpbind.client.requests.polling = 0

xmpp.httpbind.client.requests.wait = 10

hoojo 2012-05-17 22:05 发表评论

相关 [jwchat service unavailable] 推荐:

Jwchat 的安装和配置、Service unavailable、Authorization failed问题汇总

- - BlogJava-首页技术区
上一篇介绍了Openfire开源聊天IM服务器的安装: http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html. 这篇文章介绍Jwchat的安装和配置. 首先Jwchat的配置和安装需要具备的环境:. 1、 下载jwchat工程文件.

SPRING BOOT OAUTH2 + KEYCLOAK - service to service call

- - BlogJava-首页技术区
employee-service调用department-service,如果要按OAUTH2.0流程,只需要提供client-id和client-secrect即可. 在KEYCLOAK中引入service-account,即配置该employee-service时,取消standard-flow,同时激活service-account.

Web Service入门

- - 博客 - 伯乐在线
本文来自文章作者 @Jeremy黄国华 的投稿. 伯乐在线也欢迎其他朋友投稿,投稿时记得留下您的新浪微博账号哦~. 目前对Web Service没有统一的定义,定义一:Web Service是自包含的、模块化的应用程序,它可以在Web中被描述、发布、查找以及调用. 定义二:Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼任的组件进行操作.

Android Service 详解

- - CSDN博客移动开发推荐文章
一个Service也是一种应用程序组件,它运行在后台以提供某种服务,通常不具有可见的用户界面. 其它的应用程序组件可以启动一个Service,即使在用户切换到另外一个应用程序后,这个Service还是一直会在后台运行. 此外,一个应用程序也可以绑定到一个Service然后使用进程间通信(IPC)方式与Service之间发生交互.

【转】 Service Manager

- - 移动开发 - ITeye博客
android2.3 ---  Service Manager分析. Android系统Binder机制的总管是Service Manager,所有的Server(System Server)都需要向他注册,应用程序需要向其查询相应的服务. 可见其作用是多么的重要,那么我们这里就要重点介绍一下这个.

Web Service的研究

- - CSDN博客系统运维推荐文章
SOA和Web Service. 首先明白SOA和Web Service的关系:. * SOA面向服务架构,用于大型分布式系统的一个概念;. * Web Service是实现SOA的方式之一,不是所有的SOA都是基于Web service的;. * 但Webservice确实为最主流的SOA实现方式,有的人甚至把SOA等同于Webservice.

Android学习之路——7.Service

- - ITeye博客
这两天又学习了Android四大组件之一的Service. (1)Service不是一个单独的Process,除非特别指派了,也不是一个Thread,但也不是运行在Main Thread中. (3)Service的生命周期:. 调用的Context.startService()   oncreate() --> onStartCommand ()--> Service is running --> The service is stopped by its or a client--> onDestroy() --> Service is shut down .

Android Activity与Service通信

- - CSDN博客移动开发推荐文章
一、当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现.      当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用. 比如你后台有一个播放背景音乐的Service,这时就可以用这种方式来进行通信.

Restful 和 Jersey介绍(Web Service )

- - CSDN博客架构设计推荐文章
REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最重要的概念是资源(resources) ,使用全球 ID(通常使用 URI)标识. 客户端应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE )操作资源或资源集.

service层异常的处理

- - Web前端 - ITeye博客
1、在service方法里面如果对异常进行了捕获的话,该事务是不会进行回滚的.        默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚.   方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去回滚,并且在controller层要继续捕获这个异常并处理.