出發點: 我不贊同手機應用會走PC機基於瀏覽器的路線,手機基於html5可以實現很多Web APP,但是一般還是以WebView方式去實現一個應用並以一個圖標作爲入口而不是通過輸入網址,所以手機應用很方面潛入IM功能獲取到實時的交互信息。
實踐過程: XMPP服務器端採用開源的openfire+sqlserver 2005, 手機端Android基於asmack庫,ios基於object-c的xmpp庫實現。
1. 解決數據庫無法訪問的問題
java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:385)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39)
at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159)
at org.logicalcobwebs.proxool.Prototyper.sweep(Prototyper.java:102)
at org.logicalcobwebs.proxool.PrototyperThread.run(PrototyperThread.java:44)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:304)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:255)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:310)
... 8 more
解決方法: 1. 打開 /Microsoft SQL Server 2005/配置工具/目錄下的SQL Server Configuration Manager,選擇mssqlserver協議, 然後右邊窗口有個tcp/ip協議,設置IP標籤頁裏的ip/all默認端口爲1433,然後啓動它,重啓sqlserver服務。
2. cmd >net start mssqlserver
3.在openfire啓動後的Launch Admin設置數據庫的鏈接字符串(此時不需要指定端口號了)
JDBC驅動程序類:net.sourceforge.jtds.jdbc.Driver
數據庫URL: jdbc:jtds:sqlserver://dell/openfire;appName=jive
2. 解決XMPP客戶端asmack庫中傳文件失敗的問題