Jwchat 的安裝和配置、Service unavailable、Authorization failed問題彙總

原文地址:http://www.cnblogs.com/hoojo/archive/2012/05/17/2506845.html

上一篇介紹了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、 伴隨出現:Exception in thread "Thread-34" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found異常,可能是tomcat版本低於tomcat6或是jwchat缺少相應的jar包,如缺少xml的serializer.jar、xalan.jar、xercesImpl.jar、xml-apis.jar

D、 如果在滿足了c步驟,有添加jra包還出現Exception in thread "Thread-34" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found異常,建議刪除tomcat/work目錄下的緩存,然後重啓tomcat試試

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章