亚洲色成人网站www永久,亚洲欧美人成视频一区在线,亚洲国产成人高清在线观看,亚洲精品久久久久久动漫,亚洲国产精品久久电影欧美

數(shù)據(jù)專欄

智能大數(shù)據(jù)搬運(yùn)工,你想要的我們都有

科技資訊

科技學(xué)院

科技百科

科技書籍

網(wǎng)站大全

軟件大全

HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> wamp環(huán)境 lavel框架 jq前端 實(shí)現(xiàn)一些基本的功能 都需要分類什么 比如一個(gè)個(gè)人中心算一個(gè)模板 一個(gè)人寫六個(gè)模板 不知道怎么下手 求大神給講解一下 都需要什么 怎么分類 沒學(xué)微信那樣的高級(jí)課程 不是上線的商城 謝謝 急求 急求 急求
來源:開源中國
發(fā)布時(shí)間:2016-11-07 11:13:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 在實(shí)現(xiàn)多文件上傳時(shí),想在選擇要上傳的文件時(shí),自動(dòng)替換之前選擇 的文件,用autoReplace: true,插件的這個(gè)方法用的時(shí)候有點(diǎn)問題求助各位大神怎么解
來源:開源中國
發(fā)布時(shí)間:2016-10-18 15:45:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>>
來源:開源中國
發(fā)布時(shí)間:2015-11-12 22:16:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 當(dāng)初對(duì)這套系統(tǒng)有一個(gè)很差的印象--用戶體驗(yàn)很差,直到現(xiàn)在用vicidial實(shí)現(xiàn)了大大小小數(shù)十個(gè)項(xiàng)目,總體來說,它的系統(tǒng)架構(gòu)比很多同業(yè)軟件好太多了。拋開用戶體驗(yàn)不說,就他強(qiáng)大的預(yù)撥號(hào)功能和圍繞campaign來配置呼叫中心復(fù)雜應(yīng)用這兩點(diǎn)就值得給它一個(gè)90分。 記得剛接觸的時(shí)候,由于沒有中文版本和中文說明文檔,學(xué)起來很頭疼。復(fù)雜的配置項(xiàng),面向流程的2萬多行PHP代碼集中于一個(gè)文件中,這些都讓很多愛好者放棄使用它。但畢竟好的軟件自有人為它傾注熱情,去年8月份,vicidial中國第一個(gè)正式的論壇發(fā)布(bbs.cnvicidial.com),到現(xiàn)在的一百四十多個(gè)有效會(huì)員,都證明了它在中國正在逐步發(fā)展。很多人質(zhì)疑它的穩(wěn)定性和預(yù)撥號(hào)應(yīng)用是否有傳聞中的強(qiáng)大,但當(dāng)你用它輕松地實(shí)現(xiàn)你的呼叫中心應(yīng)用時(shí),你就會(huì)覺得原來不需要精通asterisk也能實(shí)現(xiàn)很多復(fù)雜的話務(wù)流程。有人在論壇問“vicidial是否是基于asterisk最好的開源呼叫中心方案?”這個(gè)問題仁者見仁智者見智,畢竟它是免費(fèi)的,但我要強(qiáng)調(diào)一點(diǎn):它也經(jīng)歷了4年的版本升級(jí)。在國外,有很多人在項(xiàng)目中都用它來架構(gòu)話務(wù)系統(tǒng),并應(yīng)用它與vtigercrm的api來同時(shí)實(shí)現(xiàn)客戶和業(yè)務(wù)的管理。 我覺得好的東西應(yīng)該分享,cnvicidial論壇是由一班在呼叫中心領(lǐng)域工作多年的工程師和研發(fā)人員自發(fā)組織的非盈利網(wǎng)絡(luò)社區(qū),論壇沒任何廣告,只有純粹的技術(shù)討論,大家都把自己在實(shí)際項(xiàng)目中遇到的問題和解決問題的思路留在了論壇,為了讓后來的人少走點(diǎn)彎路。今年2月,bbs.cnvicidial.com發(fā)布了第一個(gè)vicidial中文包,為愛好者提供了官方收費(fèi)手冊(cè),希望有更多人關(guān)注它和融入到vicidial愛好者的大家庭。 中國vicidial技術(shù)論壇:bbs.cnvicidial.com 中國vicidial技術(shù)聯(lián)盟qq群:80689817
來源:開源中國
發(fā)布時(shí)間:2011-03-17 23:03:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 各位網(wǎng)友大家中午好: 初學(xué)Asterisk,安裝完成Asterisk服務(wù)器之后,編寫sip.conf和extensions.conf文件,進(jìn)行SIP聯(lián)通測(cè)試。 查考網(wǎng)站:http://blog.csdn.net/sukhoi27smk/article/details/17532249 111和222分機(jī)已成功注冊(cè): 但是遇到一個(gè)問題 : 111電話呼叫1001號(hào)碼時(shí), Xlite軟件呼叫時(shí),CLI控制臺(tái)打印: [Dec 5 12:42:05] NOTICE[2677][C-0000001e]: chan_sip.c:26309 handle_request_invite: Call from '222' (192.168.1.131:63567) to extension '1001' rejected because extension not found in context 'internal'. 再試著撥叫222,呼叫不成功,CLI控制臺(tái)也是同樣的打印。 sip.conf文件內(nèi)容: extensions.conf文件內(nèi)容: 注:extensions.conf文件沒有[internal],自己在文件的末尾添加如下內(nèi)容: 有沒有遇到過此問題的網(wǎng)友幫幫忙!感激不盡??!
來源:開源中國
發(fā)布時(shí)間:2016-12-05 12:59:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 想組件一套系統(tǒng),包括電話會(huì)議、視頻會(huì)議、白板、演示文稿共享、IM和一對(duì)一通話。 想用一些開發(fā)的東西,和自己開發(fā)一些東西組建這個(gè)系統(tǒng),但是對(duì)于這些相關(guān)知識(shí)比較缺乏,想讓大家?guī)兔?,把自己知道的,總結(jié)下來,大家交流下。先感謝大家了
來源:開源中國
發(fā)布時(shí)間:2019-05-10 15:05:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 各位朋友大家好,最近在學(xué)習(xí)了一段時(shí)間asterisk,成功實(shí)現(xiàn)互撥和電話會(huì)議功能。想進(jìn)一步學(xué)習(xí)asterisk-java接口。但是發(fā)現(xiàn)網(wǎng)上資料非常有限,有很多疑問,期待您的解惑。 了解到Asterisk-java是web服務(wù)器(java應(yīng)用程序)和asterisk服務(wù)器的交互接口,可以運(yùn)行在不同的PC端,使用socket通信。 問題: web服務(wù)器+Asterisk-java+asterisk服務(wù)器,三者是怎么工作的 ?資料看著有點(diǎn)抽象,需要您的提醒!?。ㄖ饕撬悸罚?
來源:開源中國
發(fā)布時(shí)間:2016-12-08 14:40:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 各位網(wǎng)友大家好: 最近在使用sipml5 sip client軟件來調(diào)試 asterisk 基本功能(已經(jīng)使用 X-Lite 客戶端軟件實(shí)現(xiàn)電話 呼叫 ,電話 會(huì)議 ,視頻電話,單一視頻源視頻會(huì)議).asterisk服務(wù)器和 客戶端 都在內(nèi)網(wǎng)。asterisk服務(wù)器ip地址為:192.168.1.187; asterisk對(duì)webrtc支持配置 參考官網(wǎng): https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support CSDN博客: http://blog.csdn.net/chengzhangbiji/article/details/40350997 1、http.conf配置 enabled = yes bindport = 8088 bindaddr = 0.0.0.0 2、rtp.conf配置 [general] rtpstart=10000 rtpend=20000 icesupport=yes stunaddr=stun.l.google.com:19302 3、生產(chǎn)webrtc證書,參考網(wǎng)站: https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial 原文中對(duì)生成webrtc證書配置如下: mkdir /etc/asterisk/keys //asterisk服務(wù)器證書生成 ./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -C選項(xiàng)定義我們的主機(jī)- DNS名稱或IP地址,是否需要修改為asterisk服務(wù)器地址,不確定 //siml5客戶端證書生成 ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm -C選項(xiàng)是否修改為客戶端ip地址,不太確定 -o選項(xiàng)是否修改為6001號(hào)碼同名,也不知道 以上命令全部使用官網(wǎng)原命令。 將生成的 malcolm.pem and ca.crt文件拷貝到sipml5客戶端目錄下。 4、sip.conf配置 [general] srvlookup = yes videosupport = yes maxcallbitrate = 384 allowoverlap=no ; Disable overlap dialing support. (Default is yes) udpbindaddr = 0.0.0.0:5060 realm = 192.168.1.187 [6001] ;sipml5客戶端號(hào)碼 host=dynamic secret=6001 context=internal type=friend encryption=yes avpf=yes force_avp=yes icesupport=yes directmedia=no disallow=all allow=ulaw dtlsenable=yes dtlsverify=fingerprint dtlscertfile=/etc/asterisk/keys/asterisk.pem dtlscafile=/etc/asterisk/keys/ca.crt dtlssetup=actpass nat = yes transport = ws,wss [2002] ;xlite客戶端號(hào)碼 secret = 2002 port = 5060 type = friend host = dynamic qualify = yes nat = no context = internal canreinvite = yes fullname = cuiyj allow = h263p transport = udp 5、pjsip.conf配置 [transport-ws] type=transport protocol=ws bind=0.0.0.0 [6001] type=aor max_contacts=2 remove_existing=yes [6001] type=auth auth_type=userpass password=6001 username=6001 [6001] type=endpoint disallow=all allow=ulaw context=default auth=6001 aors=6001 media_encryption=dtls dtls_verify=fingerprint dtls_cert_file=/etc/asterisk/keys/asterisk.pem dtls_ca_file=/etc/asterisk/keys/ca.crt dtls_setup=actpass use_avpf=yes ice_support=yes media_use_received_transport=yes 6、重啟asterisk服務(wù)器 systemctl stop asterisk.service systemctl start asterisk.service 7、客戶端登錄 將sipml5 sip client設(shè)為6001分機(jī) , 登錄信息如下所示: 配置ok。點(diǎn)擊“l(fā)ogin”登錄,控制臺(tái)打?。? WebSocket connection from '192.168.1.154:51785' for protocol 'sip' accepted using version '13' -- Registered SIP '6001' at 192.168.1.154:51785 > Saved useragent "IM-client/OMA1.0 sipML5-v1.2016.03.04" for peer 6001 登錄ok。xlite登錄不在貼出。 8、電話互打 (1) 使用sipml5撥打xlite客戶端 , 調(diào)試信息如下: 通話正常。 (2) 使用xlite撥打sipml5客戶端 ,調(diào)試信息如下: sipml5客戶端響鈴,接通之后馬上斷掉,其中出現(xiàn)錯(cuò)誤: DTLS failure occurred on RTP instance '0x7f462000fff8' due to reason 'missing tmp ecdh key', terminating 9、 問題分析 猜測(cè)可能是step 3,生成webrtc證書有誤,所以將其修改為: mkdir /etc/asterisk/keys //asterisk服務(wù)器證書生成 ./ast_tls_cert -C 192.168.1.187 -O "My Super Company" -d /etc/asterisk/keys //siml5客戶端證書生成 ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 192.168.1.154 -O "My Super Company" -d /etc/asterisk/keys -o 6001 將6001 .pem and ca.crt拷貝到sipml5客戶端目錄下。 重新登錄,繼續(xù)step 8.2 使用xlite撥打sipml5客戶端,出現(xiàn)了同樣的錯(cuò)誤。 請(qǐng)教一下各位大神,問題出現(xiàn)在哪里呢??
來源:開源中國
發(fā)布時(shí)間:2017-01-16 15:56:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 問題1: 主叫被叫顯示同號(hào)。如何讓主叫分機(jī)顯示被叫分機(jī)號(hào)碼,被叫分機(jī)顯示主叫分機(jī)號(hào)碼? 問題2: 如何使用ami管理接口 會(huì)議 室 創(chuàng)建會(huì)議室 ,并邀請(qǐng)其他用戶加入到會(huì)議室當(dāng)中? 各位Asterisk好友大家好,最近在學(xué)習(xí)ami管理接口,目前遇到兩個(gè)棘手的問題,想請(qǐng)教一下: 問題1 : 主叫被叫顯示同號(hào)。如何讓主叫分機(jī)顯示被叫分機(jī)號(hào)碼,被叫分機(jī)顯示主叫分機(jī)號(hào)碼? 部分代碼如下: originateAction = new OriginateAction(); originateAction.setChannel("SIP/1001"); //呼叫連接通道, 呼叫 時(shí),先呼通自己 主叫用戶 originateAction.setContext("internal"); //設(shè)置路由器 originateAction.setPriority(new Integer(1)); //設(shè)置優(yōu)先級(jí) originateAction.setExten("1002"); //被呼叫號(hào)碼, 被叫 originateAction.setTimeout(new Long(30000)); //設(shè)置 呼叫等待 時(shí)間 originateAction.setCallerId("1234"); //呼叫號(hào)碼 呼叫結(jié)果: 主叫1001先被呼叫,接通之后,呼叫1002分機(jī)。但是 主叫和被叫都顯示來電號(hào)碼為1234 。 代碼修改: 鑒于 originateAction.setCallerId("1234"); 這段代碼是用來顯示被叫號(hào)碼,但是將主叫和被叫統(tǒng)統(tǒng)顯示為1234同一個(gè)號(hào)碼,實(shí)際應(yīng)用肯定不行。 將此代碼屏蔽之后再編譯運(yùn)行。 結(jié)果 主叫顯示“Anonymous”號(hào)碼, 被叫顯示“Asterisk”號(hào)碼 。 想請(qǐng)教各位一下,如何設(shè)置 讓其主叫分機(jī)顯示被叫分機(jī)號(hào)碼,被叫分機(jī)顯示主叫分機(jī)號(hào)碼???? 問題2: 如何使用ami管理接口創(chuàng)建會(huì)議室,并邀請(qǐng)其他用戶加入到會(huì)議室呢? 我在看了ami管理接口之后有個(gè)疑問想請(qǐng)教一下: Originate接口可以實(shí)現(xiàn)電話呼叫。 Confbridge系列的接口可以實(shí)現(xiàn)會(huì)議管理, 那么創(chuàng)建一個(gè)會(huì)議室,邀請(qǐng)其他用戶加入到會(huì)議室這些最基本操作在哪個(gè)接口? 非常期待您的解惑,感激不盡??!
來源:開源中國
發(fā)布時(shí)間:2016-12-13 17:14:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 各位網(wǎng)友大家好,我在運(yùn)行asterisk-java官網(wǎng)例子時(shí)出現(xiàn)錯(cuò)誤。 asterisk服務(wù)器ip地址:192.168.1.171 manager.conf文件配合為: ----------------------------------- [general] enabled = yes port = 5038 bindaddr = 0.0.0.0 [manager] secret=password permit=0.0.0.0/0.0.0.0 read=system,call,log,verbose,agent,command,user write=system,call,log,verbose,agent,command,user ----------------------------------- 使用telnet命令訪問沒有問題。 在另一個(gè)windows電腦上使用Eclipse創(chuàng)建工程,導(dǎo)入包:asterisk-java-1.0.0-m1.jar 拷貝asterisk-java官網(wǎng)例子,HelloManager.java,并修改訪問ip和用戶密碼,代碼如下: ------------------------------------------------------ import java.io.IOException; import org.asteriskjava.manager.AuthenticationFailedException; import org.asteriskjava.manager.ManagerConnection; import org.asteriskjava.manager.ManagerConnectionFactory; import org.asteriskjava.manager.TimeoutException; import org.asteriskjava.manager.action.OriginateAction; import org.asteriskjava.manager.response.ManagerResponse; public class HelloManager { private ManagerConnection managerConnection; public HelloManager() throws IOException { ManagerConnectionFactory factory = new ManagerConnectionFactory( "192.168.1.171", "manager", "password"); this.managerConnection = factory.createManagerConnection(); } public void run() throws IOException, AuthenticationFailedException, TimeoutException { OriginateAction originateAction; ManagerResponse originateResponse; // connect to Asterisk and log in originateAction = new OriginateAction(); originateAction.setChannel("SIP/1001"); originateAction.setContext("default"); originateAction.setExten("1300"); originateAction.setPriority(new Integer(1)); originateAction.setTimeout(new Long(30000)); managerConnection.login(); // send the originate action and wait for a maximum of 30 seconds for Asterisk // to send a reply originateResponse = managerConnection.sendAction(originateAction, 30000); // print out whether the originate succeeded or not System.out.println(originateResponse.getResponse()); // and finally log off and disconnect managerConnection.logoff(); } public static void main(String[] args) throws Exception { HelloManager helloManager; helloManager = new HelloManager(); helloManager.run(); } } ---------------------------------------------------- Eclipse編譯運(yùn)行:出現(xiàn)如下錯(cuò)誤: 十二月 10, 2016 1:41:12 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl connect 信息: Connecting to 192.168.1.171:5038 十二月 10, 2016 1:41:12 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl setProtocolIdentifier 信息: Connected via Asterisk Call Manager/3.1.0 十二月 10, 2016 1:41:12 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl setProtocolIdentifier 警告: Unsupported protocol version 'Asterisk Call Manager/3.1.0'. Use at your own risk. 十二月 10, 2016 1:41:13 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl doLogin 信息: Successfully logged in 十二月 10, 2016 1:41:13 下午 org.asteriskjava.manager.internal.EventBuilderImpl buildEvent 信息: No event class registered for event type 'fullybooted', attributes: {lastreload=4340, privilege=system,all, event=FullyBooted, uptime=4340, status=Fully Booted} 十二月 10, 2016 1:41:13 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl doLogin 信息: Determined Asterisk version: Asterisk 1.0 Error 十二月 10, 2016 1:41:13 下午 org.asteriskjava.manager.internal.ManagerConnectionImpl disconnect 信息: Closing socket. 十二月 10, 2016 1:41:13 下午 org.asteriskjava.manager.internal.ManagerReaderImpl run 信息: Terminating reader thread: No more lines available: null 請(qǐng)各位朋友幫幫忙,感激不盡。
來源:開源中國
發(fā)布時(shí)間:2016-12-10 13:52:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 請(qǐng)教各位朋友一個(gè)問題: 為什么SIP用戶作為主叫用戶和被叫用戶時(shí),呼叫流程不一樣呢? SIP用戶作為主叫 SIP用戶作為被叫
來源:開源中國
發(fā)布時(shí)間:2016-11-28 10:46:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 我最早在三年前接觸的asterisk,那時(shí)候asterisk已經(jīng)有不小的市場(chǎng)占有率了。最早是看《asteirsk電話未來之路》慢慢了解asteirsk的。 Asterisk十分強(qiáng)大,基本上我能想到的電話系統(tǒng)功能,它都能夠提供。 我曾經(jīng)自己從安裝asterisk,zaptel開始,自己寫配置文件,自己安裝硬件接口卡,硬是給公司搭了一臺(tái)IPPBX,當(dāng)然,公司用到的都是些基本 的應(yīng)用。像內(nèi)部分機(jī)互打,呼叫轉(zhuǎn)移,截答。限制呼叫國際長(zhǎng)途啊等等。 后來試過Trixbox和Elastix Trixbox: Centos + 基于FreePBX的web配置頁面 + asterisk + TDM板卡 安裝相對(duì)簡(jiǎn)單,功能強(qiáng)大,配置比較復(fù)雜,一般需要專業(yè)的工程師才能完成配置。特別是要安裝傳統(tǒng)電話接口卡(FXO,FXS,BRI,PRI等)時(shí), 市場(chǎng)上各種各樣的接口卡,經(jīng)常有這樣那樣的問題。而且asterisk有幾個(gè)比較嚴(yán)重的bug,如網(wǎng)絡(luò)有問題時(shí),整個(gè)asteirsk會(huì)卡死在那邊,這時(shí) 候即使是內(nèi)部分機(jī)也互打不了,這個(gè)問題在公司出現(xiàn)好幾次,后面領(lǐng)導(dǎo)發(fā)話,非得換掉這個(gè)系統(tǒng)不可。后面在網(wǎng)上找了一些IPPBX廠商,國外的品牌非常貴,國 內(nèi)的很多也不知道質(zhì)量怎樣。后面聽朋友介紹,買了億群的MyPBX回來測(cè)試。買的是standard型號(hào),可以支持GSM模塊,剛好我們比較經(jīng)常用到手 機(jī),就買了兩個(gè)模塊回來試試。 MyPBX: 6 FXO(3個(gè)模塊) + 2 FXS(1個(gè)模塊) + 2 GSM(兩個(gè)模塊) 想不到MyPXB也是基于asterisk的,用的是Blackfin的CPU,內(nèi)存128MB,有512MB的flash用于存儲(chǔ)語音留言和錄 音,感覺配置還行,因?yàn)槲覀円蟛桓?,系統(tǒng)穩(wěn)定,不要?jiǎng)硬粍?dòng)需要重啟就好了。接下來就是配置了,MyPBX的用戶界面真的挺不錯(cuò),呼入路由,呼出路由,分 機(jī)界面都沒得說,還支持SRTP, SIP(TCP,TLS)。最讓我感到意外的是,居然集成了防火墻功能!!這個(gè)太需要了,之前就是被攻擊了,VoIP帳號(hào)被盜,導(dǎo)致公司損失了2萬塊錢! 還別說,這個(gè)防火墻還有模有樣,可以配置相對(duì)嚴(yán)密的防護(hù)規(guī)則。配置界面還挺友好的。我很快就完成配置了,呼入呼出路由,防火墻,改了分機(jī)密碼,注冊(cè)了 SIP trunk,用它提供的autoprovision功能,配置了公司36臺(tái)IP話機(jī)(yealink的T2系列話機(jī)),不到兩個(gè)小時(shí),一切OK了。 現(xiàn)在公司的電話系統(tǒng)已經(jīng)正常運(yùn)行兩個(gè)月了,也不見系統(tǒng)有卡住的問題,我特地問了下億群的技術(shù)支持,他們告訴我說這個(gè)問題他們已經(jīng)解決了,說這個(gè)問題 是asteirsk的bug,在解析域名的時(shí)候會(huì)卡住,他們用了主機(jī)池,在要解析的域名用一個(gè)獨(dú)立的線程解析,然后asterisk直接從池里面獲取IP 地址。不是很懂,反正卡住的問題再也沒有出現(xiàn)過了。 下面談?wù)勎沂褂眠@個(gè)設(shè)備的感受: 1,系統(tǒng)十分穩(wěn)定。這個(gè)得到包括老板在內(nèi)所有同事的認(rèn)可。現(xiàn)在系統(tǒng)運(yùn)行兩個(gè)多月都很正常就是最好的證明; 2,嵌入式平臺(tái),集成傳統(tǒng)電話接口,不用裝驅(qū)動(dòng),不用額外購買板卡;還支持GSM,方便布線; 3,功能強(qiáng)大: 基本功能就不說了,有興趣大家上他們網(wǎng)站看看。像SRTP, SIP(TCP,TLS)這些功能應(yīng)該說走在了國內(nèi)其他廠商的前面。雖然用的不多,但有這些功能讓我對(duì)他們的技術(shù)實(shí)力更加信任; 4,DDNS, VLAN, PPPoE,Qos,防火墻,這個(gè)沒得說,十分必要;等體現(xiàn)產(chǎn)品專業(yè)性; 5,基于asterisk,但是修復(fù)了不少asterisk的bug;也解決不少忙音檢測(cè),callerid檢測(cè)的兼容性問題。經(jīng)過后來跟他們技術(shù) 支持的溝通中了解到,他們之前都是多國外的市場(chǎng),做了很多國家的忙音,包括臺(tái)灣,日本,土耳其等國家的CID,忙音檢測(cè)的兼容性修改。 總之一個(gè)字:贊! 這是他們的網(wǎng)站: http://www.yeastar.cn/Products/MyPBX.asp
來源:開源中國
發(fā)布時(shí)間:2011-06-17 21:24:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 有內(nèi)部電話軟電話2003,2004。我使用asterCRM 定時(shí)撥號(hào)功能 被叫2003 ,分配給2004,制定撥號(hào)時(shí)間,到時(shí)間后 2003 會(huì)有振鈴 但來電顯示確實(shí)2003的來電,接聽電話直接自動(dòng)掛斷了
來源:開源中國
發(fā)布時(shí)間:2011-08-03 16:15:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> app通過網(wǎng)絡(luò)呼叫到電話,電話接聽后按*、#,app可以得到相應(yīng)的通知,這個(gè)該用什么sip服務(wù)器啊
來源:開源中國
發(fā)布時(shí)間:2015-06-19 12:11:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> Digium做的幾款A(yù)sterisk模擬語音卡評(píng)測(cè)Digium語音卡與眾不同 除了Digium,還有幾家做語音卡的,在北美就有加拿大的Sangoma,亞利桑那州的Rhino 等也在做 Asterisk 適用的模擬接口卡。 Digium 認(rèn)為自己提供的產(chǎn)品比其他公司的都好。后面會(huì)有證據(jù)來證明這個(gè)觀點(diǎn)。 1) Digium寫的驅(qū)動(dòng)。 簡(jiǎn)單的測(cè)試就知道,其他公司無論是模擬模塊或是模擬線路的驅(qū)動(dòng)最初都是Digium 開發(fā)的。還有誰能比 原作者提供更好的支持呢? 2) Digium是Asterisk 的原作者 Sangoma 和Rhino 的員工不是被雇來開發(fā)Asterisk 的。相反地,他們只是讓他們的卡能用在Asterisk 上。Digium 保持至少一打人全職開發(fā)Asterisk 的內(nèi)核和應(yīng)用。Digium 比其他人更有能力為電話語音卡和通信 應(yīng)用提供端到端的支持。 3) Digium提供單口模擬模塊 Sangoma 和Rhino 只生產(chǎn)雙口模塊, Digium的4 口卡和8 口卡將支持單口模塊,提供更好的間隔尺寸。 何必購買超過需要的端口呢? 4) Digium提供模塊化的硬件回聲消除 Sangoma 和Rhino 提供的硬件回聲消除模塊需要用戶提前付款,不能升級(jí)。Digium 的硬件模塊可以隨 卡采購,也可以根據(jù)需要以后再購買。Digium 更靈活。 5) Digium板卡做的更好 Sangoma 和Rhino 指責(zé)Digium 在IRQ 中斷處理和CPU 占用率高方面技術(shù)缺陷,現(xiàn)在Digium 來揭開 真相。 IRQ中斷處理 為了測(cè)試各個(gè)供應(yīng)商的板卡在惡劣的實(shí)時(shí)環(huán)境下的表現(xiàn),Digium 搭建了一個(gè)測(cè)試環(huán)境來模擬當(dāng)板卡驅(qū)動(dòng)無 法正常提供中斷的情況下——中斷處理的結(jié)果。 為了模擬這個(gè)環(huán)境,Digium 寫了一個(gè)程序來在sysfs 文件系統(tǒng)中導(dǎo)出文件,這讓用戶可以指定CPU 暫停 中斷處理的時(shí)間(多少毫秒)。當(dāng)文件寫完后,中斷會(huì)立即停止一個(gè)指定的時(shí)間長(zhǎng)度。 這樣惡劣的條件在正在運(yùn)行的系統(tǒng)里會(huì)伴隨著高負(fù)荷、其他設(shè)備比如以太網(wǎng)和RAID 控制器占用中斷周期 長(zhǎng)等問題而一起出現(xiàn)。這個(gè)很具代表性。在實(shí)時(shí)的環(huán)境下看看呼叫傳輸?shù)腻e(cuò)誤情況。 測(cè)試環(huán)境: ? Asterisk 1.4.17 tarball ? Zaptel SVN 1.4 r41114 ? Dell Dimension 3100 ? Debian “Etch” 2.6.18.5-amd64 ? Empirix Hammer 測(cè)試配置如下: [attachment=405] 在這個(gè)測(cè)試中,Empirix Hammer 用來測(cè)試語音質(zhì)量。它發(fā)起一個(gè)SIP 呼叫到運(yùn)行了Asterisk 的電腦。 一個(gè)從FXS 環(huán)回到FXO 模塊的模擬語音卡插在這個(gè)電腦上。Asterisk 把這個(gè)呼叫通過模擬模塊路由回Asterisk 然后通過SIP 傳回Hammer。 Hammer 測(cè)量Perceptual Evaluaton of Speech Quality (PESQ),電話系統(tǒng)語音質(zhì)量的客觀評(píng)價(jià)指標(biāo)。 PESQ 值低于3.5 就是不能通過的。另外一項(xiàng)常用的語音質(zhì)量測(cè)量體系是Mean Opinion Score (MOS)。Digium 選擇PESQ 是因?yàn)镻ESQ 得分是客觀的,而MOS 值是主觀評(píng)分。 2 測(cè)試用卡包括: ? Digium TDM410 ? Digium TDM800 ? Digium AEX800 ? Sangoma A400, Wanpipe 3.2.5 Driver Package ? Rhino R8FXX, Rhino 2.2.4 Driver Package PESQ 得分的結(jié)果圖標(biāo)是通過中斷阻塞處理的時(shí)長(zhǎng)得出的。 [attachment=406] Digium 的TDM410, TDM800 和AEX800 卡在中斷阻塞8ms 的情況下仍然可以維持語音質(zhì)量,對(duì)于任 何中斷長(zhǎng)度,語音質(zhì)量都是可以接受的。 Sangoma 的A400 在中斷阻塞4ms 的情況下能夠維持語音質(zhì)量得分3.5 以上。超過4ms,語音質(zhì)量就 低于3.5,屬于不能接受。 Rhino 的R8FXX 只能在阻塞1ms 的情況下才能夠維持語音質(zhì)量得分3.5 以上。超過2ms,得分就低于 3.25,語音質(zhì)量不能接受了。 Digium跟競(jìng)爭(zhēng)對(duì)手相比: ? Digium TDM410 平均PESQ 得分比Sangoma A400 高9.38%,比Rhino R8FXX 高18%。 ? Digium TDM800 平均PESQ 得分比Sangoma A400 高13.96%,比Rhino R8FXX 高22.61%。 ? Digium AEX800 平均PESQ 得分比Sangoma A400 高15.69%,比Rhino R8FXX 高24.79%。 這些結(jié)果說明如下一個(gè)事實(shí): Digium 模擬語音卡的中斷處理機(jī)制更優(yōu)越。 CPU利用率 Digium 實(shí)施了一個(gè)測(cè)試來檢測(cè)模擬卡的CPU 占用率。在這個(gè)測(cè)試中,連續(xù)不斷地從測(cè)試機(jī)器發(fā)起呼叫到 另外一臺(tái)空閑的機(jī)器,每個(gè)呼叫持續(xù)30 秒鐘,然后掛機(jī)。 CPU 利用率的圖表是從top 程序的CPU 空閑百分比數(shù)據(jù)獲取的,從一個(gè)5 分鐘的時(shí)間段來計(jì)算平均值。 測(cè)試環(huán)境 ? Asterisk 1.4.17 tarball ? Zaptel 1.4.8 tarball ? Dell Dimension 3100 ? Control Digium TDM844B ? Whitebox PC ? Debian “Etch” 2.6.18.5-amd64 [attachment=407] 這次測(cè)試?yán)昧薉ell Dimension 3100 插模擬語音卡來跑Asterisk,另外一臺(tái)白盒測(cè)試機(jī)器插的是 Digium TDM844B 卡,也跑得是Asterisk 軟件。 測(cè)試用卡包括: ? Digium TDM844E 帶硬件回聲消除,8 路并發(fā)呼叫 ? Digium AEX844E 帶硬件回聲消除,8 路并發(fā)呼叫 ? Sangoma A400, Wanpipe 3.2.3 驅(qū)動(dòng)包,帶硬件回聲消除,6 路并發(fā)呼叫 ? Rhino R8FXX, Rhino 2.2.4 驅(qū)動(dòng)包,帶硬件回聲消除,4 路并發(fā)呼叫 下圖是CPU 利用率百分比的結(jié)果圖片: Digium跟競(jìng)爭(zhēng)對(duì)手相比: ? Rhino R8FXX 在4 個(gè)通道工作的情況下比Digium TDM800 在8 個(gè)通道的情況下占用的CPU 高了 70%,比Digium AEX800 在8 個(gè)通道工作的情況下占用的CPU 資源高出54%。 ? Sangoma 的A400 在6 個(gè)通道同時(shí)工作的情況下比比Digium TDM800 的8 個(gè)通道工作狀態(tài)占用的 CPU 高了30%,比Digium AEX800 在8 個(gè)通道工作的情況下占用的CPU 資源高出17%。 這些結(jié)果說明如下一個(gè)事實(shí): Digium 模擬語音卡可以處理更多的通道,占用更少的CPU 資源。
來源:開源中國
發(fā)布時(shí)間:2012-10-26 17:33:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 中小企業(yè)需要大約5席(以后可以方便擴(kuò)展)電話客服,可以呼出,400號(hào)碼+Asterisk+?能實(shí)現(xiàn)么? 具體怎么實(shí)現(xiàn)?
來源:開源中國
發(fā)布時(shí)間:2015-03-17 15:51:09
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 最近遇到一個(gè)十分頭疼的問題,手機(jī)安裝sip電話 客戶端 后,當(dāng)用sip電話接通電話的過程中遇到普通電話來電,普通電話來電會(huì)照樣響鈴,這樣無法保障IP電話的正常使用,不知道各位有沒有遇到過這個(gè)問題,該如何處理?
來源:開源中國
發(fā)布時(shí)間:2015-01-16 07:47:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 如題,asterisk撥號(hào)方案中如何獲得外線呼入的被叫號(hào)碼?我要把它傳到AGI中使用。 外線呼入手機(jī)號(hào)撥打到asterisk系統(tǒng),手機(jī)號(hào)13××××××××跟外線通道dahdi/1都獲取到了,就差撥打的號(hào)碼,即DNID( Dialed Number Identifier ),CLI控制臺(tái)agi調(diào)試信息中看到的一直是unknown。 求高手指點(diǎn),查了一天資料了沒能搞定。。。 我asterisk版本 1.4,外線:普通電話線 pstn。
來源:開源中國
發(fā)布時(shí)間:2012-11-20 16:43:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 前言: bigbluebutton是一個(gè)萬維網(wǎng)廣播站和會(huì)議系統(tǒng),他是基于Flash的視頻會(huì)議,后臺(tái)服務(wù)器使用Red5 Server。 本篇是參考installing from source英文版,根據(jù)自己的情況有點(diǎn)改動(dòng),系統(tǒng)是基于ubuntu之上。 如果想在ubuntu上快安裝bigbluebutton請(qǐng)參見英文文檔:http://code.google.com/p /bigbluebutton/wiki/InstallationUbuntu。 如果不想安裝bigbluebutton,只想測(cè)試bigbulebutton可以參見:http://code.google.com/p /bigbluebutton/wiki/BigBlueButtonVM。 關(guān)于更多bigbluebutton的查看:http://code.google.com/p/bigbluebutton 筆記開始: 1.檢查網(wǎng)絡(luò) 2.更新與升級(jí) sudo apt-get update sudo apt-get upgrade 3.安裝JAVA 6 sudo apt-get install openjdk-6-jre-headless 安裝了下列軟件包: ca-certificates-java icedtea-6-jre-cacao java-common libaccess-bridge-java openjdk-6-jre-headless openjdk-6-jre-lib rhino tzdata-java 4.安裝MySQL sudo apt-get install mysql-server 安裝了下列軟件包: libdbd-mysql-perl libdbi-perl libhtml-template-perl libnet-daemon-perl libplrpc-perl mysql-client-5.0 mysql-server mysql-server-5.0 mysql-server-core-5.0 5.安裝Tomcat sudo apt-get install tomcat6 安裝了下列軟件包: gcj-4.3-base jsvc libcommons-collections-java libcommons-daemon-java libcommons-dbcp-java libcommons-pool-java libecj-java libecj-java-gcj libgcj-bc libgcj-common libgcj9-0 libgcj9-jar libservlet2.5-java libtomcat6-java tomcat6 tomcat6-common 測(cè)試一下: http://:8080 6.安裝swftools sudo apt-get install swftools 安裝了下列軟件包: libt1-5 swftools 7.安裝Imagemagick sudo apt-get install imagemagick 安裝了下列軟件包: imagemagick imagemagick-doc 8.安裝Nginx sudo apt-get install nginx 安裝了下列軟件包: nginx 9.安裝ActiveMQ cd /opt sudo wget http://apache.mirror.rafal.ca/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz sudo tar zxvf apache-activemq-5.2.0-bin.tar.gz sudo mv apache-activemq-5.2.0-bin.tar.gz /usr/local/activemq 啟動(dòng)ActiveMQ sudo /usr/local/activemq/bin/activemq 10.修改tomcat6帳戶 ############################ tomcat6?106:113::/usr/share/tomcat6:/bin/bash 11.安裝red5 cd /opt sudo wget http://build.xuggle.com/job/red5_jdk6_stable/131/artifact/workingcopy/red5-0.8.RC3-build-hudson-red5_jdk6_stable-131.tar.gz sudo tar zxvf red5-0.8.RC3-build-hudson-red5_jdk6_stable-131.tar.gz sudo mv red5-0.8.RC3-build-hudson-red5_jdk6_stable-131 /usr/local/red5-0.8 用戶tomcat用戶啟動(dòng)red5 sudo su -l tomcat6 ./red5.sh(需要root權(quán)限) 注:英文照考文檔中是以上兩行,而我在實(shí)際中使用tomcat用戶啟動(dòng)red5 server是有很多[Error]提示。使用root啟動(dòng)就沒那些Error,即使用sudo ./red5.sh命令啟動(dòng)。 12.安裝oflaDemo 在瀏覽器的URL輸入網(wǎng)址:http://:5080/installer/ 選擇”oflaDemo”,再點(diǎn)擊”Install” 安裝后在瀏覽器URL輸入網(wǎng)址:http://5080/demos/ofla_demo.html 編輯”rtmp://localhost/oflaDemo”并點(diǎn)擊”[connect]” 在左邊的[library]選擇一個(gè),即可以在[Video]中看到視頻。 13.安裝編譯(Asterisk)環(huán)境: sudo apt-get install build-essential linux-headers-2.6.28-15-generic libssl-dev ncurses-dev libnewt-dev zlib1g-dev bison 額外安裝了下列軟件包: dpkg-dev g++ g++-4.3 libncurses5-dev libpng12-dev libslang2-dev libstdc++6-4.3-dev m4 patch 14.安裝Dahdi(原zaptel) cd /usr/local/src sudo wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.2.0.2+2.2.0.tar.gz sudo tar zxvf dahdi-linux-complete-2.2.0.2+2.2.0.tar.gz cd dahdi-linux-complete-2.2.0.2+2.2.0 sudo make all(需要root權(quán)限) sudo make install make config 注:如果服務(wù)器沒有安裝板卡,不需要安裝Dahdi,他只是digium板卡的驅(qū)動(dòng) 15.安裝.Asterisk cd /usr/local/src sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.25.tar.gz sudo tar zxvf asterisk-1.4.25.tar.gz cd asterisk-1.4.25 sudo ./configure sudo make all sudo make install sudo make config 16.配置Asterisk 添加一個(gè)extensions sudo vi /etc/asterisk/extensions.conf ; BigBlueButton: Setup sample conference [bigbluebutton] ; ; Create an extension, 600, for evaluating echo latency. ; exten => 600,1,Answer ; Do the echo test exten => 600,n,Playback(demo-echotest) ; Let them know what’s going on exten => 600,n,Echo ; Do the echo test exten => 600,n,Playback(demo-echodone) ; Let them know it’s over exten => 600,n,Hangup() 創(chuàng)建SIP帳號(hào) sudo vi /etc/asterisk/sip.conf ; BigBlueButton: Setup sample user to connect over VoIP [user1] type=friend username=user1 insecure=very secret=secret qualify=yes nat=yes host=dynamic canreinvite=no context=bigbluebutton allow=all [user2] type=friend username=user2 insecure=very secret=secret qualify=yes nat=yes host=dynamic canreinvite=no context=bigbluebutton allow=all [user3] type=friend username=user3 insecure=very secret=secret qualify=yes nat=yes host=dynamic canreinvite=no context=bigbluebutton allow=all [user4] type=friend username=user4 insecure=very secret=secret qualify=yes nat=yes host=dynamic canreinvite=no context=bigbluebutton allow=all 創(chuàng)建AMI帳號(hào) sudo vi /etc/asterisk/manager.conf [general] enabled = yes port = 5038 bindaddr = 0.0.0.0 ; BigBlueButton: Enable Red5 to connect [bbb] secret = secret permit = 0.0.0.0/0.0.0.0 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user 17.配置nginx sudo vi /etc/nginx/sites-available/bigbluebutton 修改server_name參數(shù)為自己的IP server { listen 80; server_name demo #server_name 192.168.2.125; access_log /var/log/nginx/bigbluebutton.access.log; location ~ (/open/|/close/|/idle/|/send/) { proxy_pass http://127.0.0.1:8088; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; } location /deskshare { proxy_pass http://127.0.0.1:5080; proxy_redirect default; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; include fastcgi_params; } location /bigbluebutton { proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; include fastcgi_params; } location / { root /var/www/bigbluebutton-default; index index.html index.htm; } location /client { root /var/www/bigbluebutton; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } } sudo ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton 18.下載bigbluebutton sudo mkdir -p /home/user/temp cd /home/user/temp sudo wget http://www.bigbluebutton.org/hudson/job/BBB-Trunk-Apps/ws/dist/bigbluebutton-apps-0.5.tar.gz sudo wget http://www.bigbluebutton.org/hudson/job/BBB-Trunk-Apps-Deskshare/ws/dist/webapps/deskshare.tar.gz sudo wget http://www.bigbluebutton.org/hudson/job/BBB-Trunk-Client/ws/client.tar.gz sudo wget http://www.bigbluebutton.org/hudson/job/BBB-Trunk-Web/ws/bigbluebutton-0.1.war sudo wget http://www.bigbluebutton.org/hudson/job/BBB-Trunk-Config/ws/web//*zip*/web.zip 19.禁用Tomcat6的Security設(shè)置 sudo vi /etc/default/tomcat6 把”#TOMCAT6_SECURITY=yes”換成”TOMCAT6_SECURITY=no” 20.安裝數(shù)據(jù)庫 mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 35 Server version: 5.0.75-0ubuntu10.2 (Ubuntu) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> create database bigbluebutton_dev; Query OK, 1 row affected (0.08 sec) mysql> grant all on bigbluebutton_dev.* to ‘bbb’@'localhost’ identified by ’secret’; Query OK, 0 rows affected (0.05 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) 21.安裝BigBlueButton web cd /var/lib/tomcat6/webapps sudo cp /home/user/temp/bigbluebutton-0.1.war ./bigbluebutton.war 22.確認(rèn)DF2SWF,CONVERT和GS(GhostScript)應(yīng)用 which pdf2swf which convert which gs 23.編輯bbb-web屬性(properties) sudo vi /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties 修改下列幾個(gè): -swfToolsDir參數(shù)(pdf2swf目錄位置)”swfToolsDir=/usr/bin” -imageMagickDir參數(shù)(convet目錄位置)”imageMagickDir=/usr/bin” -ghostScriptExec參數(shù)(指向gs應(yīng)用位置)”ghostScriptExec=/usr/bin/gs” -bigbluebutton.web.serverURL參數(shù)替換成自己的IP地 址”bigbluebutton.web.serverURL=http://192.168.2.125″ 重啟tomcat6 24.生成數(shù)據(jù)庫 在瀏覽器的URL輸入:http://:8080/bigbluebutton就會(huì)自動(dòng)生成bigbluebutton_dev數(shù)據(jù)庫的所有表 測(cè)試一下: > mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.0.75-0ubuntu10.2 (Ubuntu) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> use bigbluebutton_dev; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +—————————–+ | Tables_in_bigbluebutton_dev | +—————————–+ | account | | account_conference | | account_user | | conference | | permission | | role | | role_permission_rel | | scheduled_session | | user | | user_permission_rel | | user_role_rel | | voice_conference_bridge | +—————————–+ 12 rows in set (0.00 sec) mysql> 25.創(chuàng)建Presentation上傳目錄 sudo mkdir /var/bigblue sudo chown tomcat6:adm-R /var/bigbluebutton sudo chmod 777 -R /var/bigbluebutton 26.安裝bbb-apps cd /usr/local/red5-0.8/webapps sudo cp /home/user/temp/bigbluebutton-apps-0.5.tar.gz ./ sudo tar zxvf bigbluebutton-apps-0.5.tar.gz sudo mv webapps/bigbluebutton/ ./ sudo rm -fr bigbluebutton-apps-0.5.tar.gz webapps/ 27.編輯BigBlueButton Apps properties sudo vi /usr/local/red5-0.8/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties # # Location for recordings recordingsDirectory=/var/bigbluebutton # These properties are for Asterisk Management Interface (AMI) ami.host=127.0.0.1 ami.port=5038 ami.username=bbb ami.password=secret 28.反注釋/usr/local/red5-0.8/conf/red5-core.xml中的RTMPT部分 29.安裝xuggler sudo cd /usr/local sudo wget http://com.xuggle.s3.amazonaws.com/xuggler/xuggler-3.1.FINAL/xuggle-xuggler.3.1.818-i686-pc-linux-gnu.sh sudo chmod a+x xuggle-xuggler.3.1.818-i686-pc-linux-gnu.sh sudo ./xuggle-xuggler.3.1.818-i686-pc-linux-gnu.sh 30.設(shè)置xuggler環(huán)境變量 sudo vi /etc/profile export XUGGLE_HOME=/usr/local/xuggler export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$XUGGLE_HOME/bin:$PATH 31.安裝Desk共享Apps cd /usr/local/red5-0.8/webapps sudo cp /home/user/temp/deskshare.tar.gz ./ sudo tar zxvf deskshare.tar.gz sudo rm -fr deskshare.tar.gz 32.安裝BigBlueButton客戶端 cd /var/www sudo mkdir bigbluebutton cd bigbluebutton sudo cp /home/user/temp/client.tar.gz ./ sudo tar zxvf client.tar.gz sudo rm -fr client.tar.gz 33.修改BBB客戶端配置 sudo vi /var/www/bigbluebutton/client/conf/config.xml -改變uri成你的IP address -改變host=”conf/join-mock.xml”為host=”http:///bigbluebutton/conference-session/enter” 34.安裝bbb默認(rèn)主頁 cd /var/www sudo cp /home/user/temp/web.zip ./ sudo unzip -dc web.zip sudo mv c/web ./bigbluebutton-default sudo rm -rf c 安裝結(jié)束,重啟ActiveMQ、Red5 Server、Tomcat、Asterisk服務(wù) 測(cè)試: 在瀏覽器的url輸入http;//就能開始使用bigbluebutton 參考: http://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButton
來源:開源中國
發(fā)布時(shí)間:2010-03-04 15:11:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> openfire+spark可以實(shí)現(xiàn)即時(shí)消息,再加上SIP插件和asterisk-IM插件,通過asterisk可以打電話 這里的openfire是充當(dāng)了sip服務(wù)器的功能嗎?這里的openfire實(shí)際上在SIP電話的業(yè)務(wù)上是相當(dāng)于opensips的功能? openfire和opensips是否可以結(jié)合起來使用? 在網(wǎng)上查了資料,opensips相當(dāng)于是SIP代理,類似于路由器,asterisk相當(dāng)于PC,用戶打電話。 是否可以這樣,spark+SIP插件---->openfire+asterisk-IM插件------->asterisk------>opensips---->IAD------>普通電話,這樣可以實(shí)現(xiàn)spark和電話通話? 請(qǐng)知道的朋友回答一下,謝謝。
來源:開源中國
發(fā)布時(shí)間:2012-08-17 16:34:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 我是一個(gè)新手,最近使用bigbluebutton0.71軟件來搭建一個(gè)視頻會(huì)議系統(tǒng),基本的功能如:音視頻通信,白板,即時(shí)通信,桌面共享都很正常。 但是,我苦惱的是,如何使用普通的sip軟電話(如x-lite)參與bigbuebutton視頻會(huì)議系統(tǒng)的voice conferece?我在這里是使用Asterisk來實(shí)現(xiàn)語音功能,但是如何對(duì)他設(shè)置?如何使用sip軟電話終端進(jìn)行撥號(hào)?號(hào)碼如何設(shè)置?我沒有一點(diǎn)頭緒,期望各位前輩、達(dá)人給一些建議,感激不盡...
來源:開源中國
發(fā)布時(shí)間:2010-12-17 11:35:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> chan_ooh323.c:85: error: storage size of `ooh323_rtp' isn't known make[1]: *** [chan_ooh323.o] Error 1 make[1]: Leaving directory `/usr/src/asterisk-addons-1.6.2.3/channels' make: *** [channels] Error 2
來源:開源中國
發(fā)布時(shí)間:2013-01-08 15:16:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> Servlet 2.3 ... Servlet 2.4 ... Servlet 2.5 ... 轉(zhuǎn) -------------------------------------------------------- 以上是常用web.xml的配置,但始終查不到was支持哪些版本,HELP war包,至今放不到was7上的 我的web.xml配置版本是2.4的
來源:開源中國
發(fā)布時(shí)間:2011-04-14 16:18:02
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 代碼如下 ``` package com.nineplus.cyanbird.servlet; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; import com.nineplus.cyanbird.base.constants.AlipayContants; import com.nineplus.cyanbird.base.constants.OrderStatusConstants; import com.nineplus.cyanbird.base.dao.FunOrderDao; import com.nineplus.cyanbird.base.domain.view.FunOrder; import com.nineplus.cyanbird.base.service.FunOrderService; import com.nineplus.model.InvokeResult; public class AlipayServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; private FunOrderDao funOrderDao; private FunOrderService funOrderService; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { alipayNortify(request,response); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } public void alipayNortify(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map params = new HashMap(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); params.put(name, valueStr); } boolean signVerified = false; try { signVerified = AlipaySignature.rsaCheckV1(params, AlipayContants.alipay_public_key, AlipayContants.charset, AlipayContants.sign_type); } catch (AlipayApiException e) { e.printStackTrace(); } if(signVerified) { String seller_id = new String(request.getParameter("app_id").getBytes("ISO-8859-1"),"UTF-8"); if(!seller_id.equals(AlipayContants.app_id)){ System.out.println("fail"); } String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8"); String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8"); Float totalCost = new Float(total_amount); FunOrder f = new FunOrder(); f.setId(out_trade_no); f.setTotalCost(totalCost); FunOrder exitF = funOrderDao.get(f); if(exitF==null){ System.out.println("fail"); } if(trade_status.equals("TRADE_FINISHED")){ if(!exitF.getStatus().equals(OrderStatusConstants.FINISH)){ exitF.setStatus(OrderStatusConstants.FINISH); funOrderDao.update(exitF); InvokeResult r = funOrderService.commitFunOrderSuccess(exitF); if(r.getStatus()!=1){ System.out.println("fail"); } } }else if (trade_status.equals("TRADE_SUCCESS")){ if(!exitF.getStatus().equals(OrderStatusConstants.FINISH)){ exitF.setStatus(OrderStatusConstants.FINISH); funOrderDao.update(exitF); InvokeResult r = funOrderService.commitFunOrderSuccess(exitF); if(r.getStatus()!=1){ System.out.println("fail"); } } } System.out.println("success"); }else {//驗(yàn)證失敗 System.out.println("fail"); } } } web中配置 AlipayServlet com.nineplus.cyanbird.servlet.AlipayServlet AlipayServlet /alipayServlet WeChatServlet com.nineplus.cyanbird.servlet.WeChatServlet WeChatServlet /weChatServlet ``` 瀏覽器輸入:http://localhost:8080/aaa(項(xiàng)目名)/AlipayServlet/alipayServlet 顯示如下
來源:開源中國
發(fā)布時(shí)間:2017-07-09 14:28:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 問題背景: Servlet3.1新特性——非阻塞式IO,ServletInputStream抽象類多了幾個(gè)方法isFinished()、isReady()、setReadListener(ReadListener listener)。這些在之前的Servlet3.0里是沒有的。 Tomcat7.x是Servlet3.0,Tomcat8.x是Servlet3.1。 之前是基于Tomcat7.x開發(fā)的程序,有個(gè)功能是做了個(gè)Request包裝類,過濾ajax提交內(nèi)容。里面把Request的getInputStream()方法重新實(shí)現(xiàn)。 @Override public ServletInputStream getInputStream() throws IOException { if (bais == null) { bais = new ByteArrayInputStream(body); } else { bais.reset(); } return new ServletInputStream() { @Override public int read() throws IOException { return bais.read(); } }; } 由于在Tomcat7.x環(huán)境下實(shí)現(xiàn)的,所以ServletInputStream沒有上面說的那幾個(gè)方法。 工程編譯打包好后發(fā)布到服務(wù)器是Tomcat8.x上,跑了許多天,居然沒有報(bào)錯(cuò)。為什么? 大神們,我的問題就是,像這種情況,有沒有隱患?或者Servlet3.1是否向下兼容Servlet3.0?我怎么也想不明白這樣的兼容是怎么做的,抽象類都改了,實(shí)現(xiàn)類不改居然不報(bào)錯(cuò)。 而且更疑惑的是,我用的Spring4.3.5,看了里面ContentCachingRequestWrapper類用的ContentCachingInputStream居然也是沒有實(shí)現(xiàn)Servlet3.1新增的那幾個(gè)方法。還有DelegatingServletInputStream也是一樣沒實(shí)現(xiàn)。由此應(yīng)該確定Spring4.3也是基于Servlet3.0的,沒有實(shí)現(xiàn)Servlet3.1。 大神們,第二個(gè)問題,如標(biāo)題,你們用Servlet3.1了嗎?用了的話來討論討論,上面那幾個(gè)方法有沒有參考實(shí)現(xiàn),給參考參考。
來源:開源中國
發(fā)布時(shí)間:2017-01-10 23:46:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 用Eclipse Mar2版本和tomcat7: 在用Eclipse自動(dòng)生成Servlet類之后會(huì)生成一個(gè)注解,但是我還在web.xml文件中又配制了一遍,那么為什么在啟動(dòng)tomcat的時(shí)候會(huì)報(bào):Server Tomcat v7.0 Server at localhost failed to start. 錯(cuò)誤呢? 感覺得,以前也是這樣子做的,沒有報(bào)錯(cuò)呀
來源:開源中國
發(fā)布時(shí)間:2016-08-12 11:33:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 下載 Servlet 3.0 規(guī)范 Java servlets 是一項(xiàng)被普遍接受的技術(shù),用于構(gòu)建基于 web 應(yīng)用程序的動(dòng)態(tài)內(nèi)容;Servlet 3.0 規(guī)范早期草案版本的發(fā)行讓該技術(shù)在特性和應(yīng)用程序接口(Application Program Interface,API)方面得到了極大增強(qiáng)。Java Specification Request(JSR)已經(jīng)以 JSR 315 的形式得到了批準(zhǔn),并計(jì)劃成為 Java Enterprise Edition 6(JSR 316)或更高版本的組成部分。與之前僅僅是維護(hù)發(fā)行版(maintenance releases)的一些版本規(guī)范不同,Servlet 3.0 規(guī)范隨帶了許多 web 開發(fā)新時(shí)代所需的最令人興奮的特性。在本文中,我們將研究新版 Java servlets 中引入的主要特性。值得注意的是,本規(guī)范仍處于草案版本階段,因此在本文中所討論的技術(shù)細(xì)節(jié)可能會(huì)發(fā)生變化。 新規(guī)范主要交付了以下新特性: 開發(fā)的簡(jiǎn)易性 可插拔性和可擴(kuò)展性 異步支持 安全性增強(qiáng) 其他雜項(xiàng)變化 很明顯,與其他技術(shù)相比,servlets 在 Java Enterprise Edition 家族中有著更廣泛的應(yīng)用。Servlets 保留了其簡(jiǎn)潔性和能夠處理 HTTP 請(qǐng)求并向 web 客戶機(jī)傳回響應(yīng)的優(yōu)點(diǎn)。Servlets 可以用于實(shí)現(xiàn)簡(jiǎn)單和小型應(yīng)用程序的業(yè)務(wù)邏輯。在 web 框架中,servlets 作為所有傳入請(qǐng)求的入口點(diǎn)(即 controller servlet);因此,所有流行框架都是在原始的 servlets 上建立的。Servlet 3.0 中的新增特性旨簡(jiǎn)化 servlet 應(yīng)用程序的開發(fā),并讓 servlet 開發(fā)人員和框架開發(fā)人員從中受益。在以下章節(jié)中,我們將詳細(xì)介紹每個(gè)新增特性,并討論如何使用它們來開發(fā)更優(yōu)秀的應(yīng)用程序。 開發(fā)的簡(jiǎn)易性 開發(fā)的簡(jiǎn)易性是任何技術(shù)成功的關(guān)鍵因素。Servlet 3.0 API 通過使用 JSR 175 注釋 集中解決開發(fā)簡(jiǎn)易性問題,允許開發(fā)人員采用聲明式的編程方式。這意味著您可以通過使用像 @Servlet 或者 @ServletFilter 這樣的適當(dāng)注釋對(duì)類進(jìn)行注釋來快速開發(fā)一個(gè) servlet 或者過濾器類。注釋不僅使 servlet、過濾器和偵聽器類的編碼更容易,而且,即使應(yīng)用程序存檔可能有 servlet、過濾器或者上下文偵聽器類也可以選擇用于 web 應(yīng)用程序的開發(fā)部署描述符。Web 容器負(fù)責(zé)處理各種注釋,其位置在 WEB-INF/classes 目錄下的各個(gè)類中、WEB-INF/lib 目錄下的 .jar 文件中、或者應(yīng)用程序類路徑中任何可以找到的類中。 注釋與部署描述符 值得注意的是,部署描述符優(yōu)先于注釋。換句話說,部署描述符覆蓋通過注釋機(jī)制所規(guī)定的配置信息。Web 部署描述符的 3.0 版本在 web-app 元素上包含一種名為 metadata-complete 的新屬性。該屬性定義了 web 描述符是否完整,或者 web 應(yīng)用程序的類文件是否針對(duì)指定部署信息的注釋而進(jìn)行檢查。如果該屬性被設(shè)置為 true,則部署工具必須忽略類文件中所存在的任何 servlet 注釋,并只使用描述符中所提及的配置細(xì)節(jié)。否則,如果沒有指定該值或者該值被設(shè)置為 false,容器必須針對(duì)注釋而掃描應(yīng)用程序的所有類文件。這個(gè)屬性提供了在應(yīng)用程序啟動(dòng)階段啟用或者禁用注釋掃描以及對(duì)注釋的處理。 在 Servlet 3.0 中所引入的所有注釋都可以在 javax.servlet.http.annotation 和 javax.servlet.http.annotation.jaxrs 軟件包中找到。以下章節(jié)闡述 Servlet 3.0 中注釋的完整集合: @Servlet:javax.servlet.http.annotation.Servlet 是一個(gè)類級(jí)別的注釋,確認(rèn)經(jīng)過注釋的類為一個(gè) servlet 并保存關(guān)于所聲明的 servlet 的元數(shù)據(jù)。urlMappings 屬性是指定 URL 模式(調(diào)用該 servlet)的 @Servlet 的強(qiáng)制屬性。當(dāng)接收到了一個(gè)請(qǐng)求時(shí),容器將請(qǐng)求中的 URL 與 servlet 的 urlMappings 進(jìn)行匹配,且如果 URL 模式匹配,則調(diào)用相應(yīng)的 servlet 以響應(yīng)該項(xiàng)請(qǐng)求。該注釋的所有其他屬性都是可選的,并帶有合理的默認(rèn)值。Servlet 類中必須有一種使用像 GET、PUT、POST、HEAD 或者 DELETE 這樣的 HttpMethod 注釋進(jìn)行注釋的方法。這些方法應(yīng)將 HttpServletRequest 和 HttpServletResponse 作為方法參數(shù)。與以前的版本相反,servlets 3.0 的版本可以作為簡(jiǎn)單傳統(tǒng) Java 對(duì)象(Plain Old Java Objects,POJOs)而實(shí)現(xiàn);也就是 servlets 不必再擴(kuò)展像 HTTPServlet 或者 GenericServlet 這樣的基礎(chǔ) servlet 實(shí)現(xiàn)類。 為了進(jìn)行比較,在此給出了使用傳統(tǒng) Servlet 2.5 API 編寫的 Java servlet 代碼片段,如下所示。在 Servlet 2.5 中,只要在部署描述符中配置了 servlet 的詳細(xì)信息,web 容器就將初始化 servlet。 public class MyServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) { .... } } Deployment descriptor (web.xml) MyServlet samples.MyServlet MyServlet /MyApp ... 這里給出的是使用 Servlet 3.0 API 編寫的較為簡(jiǎn)化的版本。當(dāng) MyServlet 使用 @Servlet 注釋而被注釋為一個(gè) servlet 時(shí),則在 web 容器的啟動(dòng)期間對(duì)其初始化。注意,在這種情況下部署描述符是可選的。 @Servlet(urlMappings={"/MyApp"}) public class MyServlet { @GET public void handleGet(HttpServletRequest req, HttpServletResponse res) { .... } } Deployment descriptor (web.xml) optional @ServletFilter 和 @FilterMapping:您可以使用 javax.servlet.http.annotation.ServletFilter 注釋來注釋過濾器類,從而輕松創(chuàng)建一個(gè) servlet 過濾器。該注釋封裝正被聲明的過濾器的有關(guān)元數(shù)據(jù)。在過濾器類上具有 @FilterMapping 注釋也是強(qiáng)制性的。@FilterMapping 注釋定義用于過濾器的 URL 模式。@ServletFilter 的所有其他屬性都是可選的,并帶有合理的默認(rèn)值。V3.0 過濾器類現(xiàn)在類似 POJO 類,并且沒有用于這些類所需的 Filter 接口或者非參數(shù)公用構(gòu)造器。以下給出了使用 Servlet v2.5 API 的過濾器類的代碼片段: public class MyFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { ...... } } Deployment descriptor (web.xml) My Filter samples.MyFilter My Filter /foo ... 使用 Servlet 3.0 編寫的一個(gè)示例過濾器類如下所示。因?yàn)樵擃愂褂?ServletFilter 注釋,所以容器將 MyFilter 標(biāo)記為一個(gè)過濾器類。MyFilter 截取所有收到的請(qǐng)求,其中該請(qǐng)求的 URL 匹配模式 /foo。Servlet 3.0 為過濾器配置提供了可選的部署描述符。 @ServletFilter @FilterMapping("/foo") public class MyFilter { public void doFilter(HttpServletRequest req, HttpServletResponse res) { ..... } } Deployment descriptor (web.xml) optional @InitParam:該注釋可以用來定義必須傳遞給 servlet 或者過濾器類的任意初始化參數(shù)。它是 @Servlet 和 @ServletFilter 注釋的一個(gè)屬性。以下代碼示例解釋了如何將具有 english 值、稱作 lang 的初始化參數(shù)傳遞給一個(gè) servlet 類。 @Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang", value="english")}) public class MyServlet { @GET public void handleGet(HttpServletRequest req, HttpServletResponse res) { .... } } @ServletContextListener:javax.servlet.http.annotation.ServletContextListener 注釋將該類聲明為一個(gè) servlet 上下文偵聽器。當(dāng) web 容器創(chuàng)建或者銷毀 ServletContext 時(shí),該上下文偵聽器接收注釋。上下文偵聽器是一個(gè) POJO 類,且不必實(shí)現(xiàn) ServletContextListener 接口。使用 Servlet 2.5 API 編寫的偵聽器類如下所示。當(dāng)且僅當(dāng)您在部署描述符中配置了該偵聽器類,容器才識(shí)別它。 public class MyListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { } ..... } Deployment Descriptor (web.xml) samples.MyListener .... 使用 Servlet 3.0 API 編寫的一個(gè)得到極大簡(jiǎn)化的偵聽器類,如下所示。 @ServletContextListener public class MyListener { public void contextInitialized (ServletContextEvent sce) { } ..... } Deployment Descriptor (web.xml) optional 如今,像 Struts、JSF 和 Springweb 這樣的 web 框架已經(jīng)被普遍接受,并已經(jīng)確立成為構(gòu)建 web 應(yīng)用程序的技術(shù)。將這些框架集成為一個(gè) web 應(yīng)用程序并不是那么容易,因?yàn)檫@一過程涉及將不同的片段同化在一起,之后編輯一個(gè)描述如何將所有這些片段配合在一起的單獨(dú)描述符文件。絕大多數(shù)框架強(qiáng)制您 在應(yīng)用程序的部署描述符文件中配置像 servlet 類(通常為 控制器 Servlet)、過濾器類或者偵聽器類這樣的框架細(xì)節(jié)。這種必備配置的主要原因是當(dāng)今的 web 應(yīng)用程序只支持一個(gè)單獨(dú)的整體部署描述符,其中定義了所有的部署信息。當(dāng)應(yīng)用程序的大小增加時(shí),外部框架的依賴關(guān)系可能也增加,從而生成復(fù)雜的部署描述符 文件。正如您可能知道的,復(fù)雜描述的維護(hù)始終存在爭(zhēng)議。 為了解決這些問題,Servlet 3.0 最為顯著的概念之一是 web 片段 或者 模塊 web.xml 的思想。Web 片段是將 web 應(yīng)用程序邏輯分區(qū)為 servlet、servlet-mapping、servlet-filter、filter-mapping、servlet-listener 之類的元素及其子元素??蚣荛_發(fā)人員可以利用該功能以定義存在于框架內(nèi)自己的 web 片段,開發(fā)人員可以在不修改現(xiàn)有的部署描述符的情況下僅僅通過將庫文件包含到應(yīng)用程序的類路徑中來插入越來越多的框架。簡(jiǎn)言之,該功能旨在當(dāng)用框架或者庫 進(jìn)行工作時(shí)進(jìn)行零配置。 對(duì)該部署描述符已經(jīng)進(jìn)行了更改以包含保存 web 片段細(xì)節(jié)的 這一新元素。如果該片段被打包為一個(gè) .jar 文件且以部署描述符的形式具備元數(shù)據(jù)信息,則 web.xml 文件必須包含在 .jar 文件的 META-INF 目錄下。在部署時(shí),器掃描應(yīng)用程序的類路徑,查找所有 web 片段并加以處理。前面討論過的 metadata-complete 標(biāo)志在應(yīng)用程序啟動(dòng)期間控制 web 片段的掃描。以下顯示了一個(gè)示例 web 片段: myservlet samples.MyServlet samples.MyListener 為了提供增強(qiáng)的可插拔性,Servlet 3.0 借助添加到 ServletContext 的 API 為增加 servlets 和過濾器類的編程提供了非常需要的支持。這些新的 API 使您能通過編程來聲明 servlets、過濾器類及其 URL 映射。這些類在應(yīng)用程序啟動(dòng)或者運(yùn)行期間進(jìn)行初始化。最重要的是,您只能通過 ServletContext 的 contextInitialized 方調(diào)用這些 API。有關(guān)這些 API 的更多信息,請(qǐng)參閱 Servlet 3.0 API 文檔。通過編程添加 servlet 和過濾器類的代碼示例如下所示: @ServletContextListener public class MyListener { public void contextInitialized (ServletContextEvent sce) { ServletContext sc = sce.getServletContext(); //Declare servlet and servlet mapping sc.addServlet("myServlet", "Sample servlet", "samples.MyServlet", null, -1); sc.addServletMapping("myServlet", new String [] {"/urlpattern/*"}); //Declare filter and filter mapping sc.addFilter("myFilter", "Sample Filter", " samples.MyFilter", null); sc.addFilterMapping("myFilter", new String[] {"/urlpattern/*"}, "myServlet", DispatcherType.REQUEST, false); } } 異步支持 大家應(yīng)該都遇到過 servlets 運(yùn)行緩慢的問題,特別是 servlets 必須等待來自 web 服務(wù)、JDBC 連接、JMS 消息等的響應(yīng)。在當(dāng)前情況下,servlet 在生成響應(yīng)前需要等待進(jìn)程完成,這會(huì)導(dǎo)致低效率阻塞操作消耗容器的線程或者其他有限的資源。在采用 JDBC 連接時(shí)的另一個(gè)不利影響是,數(shù)據(jù)庫可能存在許多等待訪問的阻塞線程。這種情況最終將導(dǎo)致整個(gè) web 容器的線程不足和服務(wù) 質(zhì)量下降。 為了克服上述缺點(diǎn),Servlet 3.0 添加了對(duì)掛起和恢復(fù)請(qǐng)求處理的支持,使 servlet 以異步、非阻塞的方式響應(yīng)請(qǐng)求(這就是編程的 Comet 樣式)。當(dāng)一項(xiàng)請(qǐng)求被掛起時(shí),處理請(qǐng)求的線程將在不生成任何響應(yīng)的情況下返回給容器并準(zhǔn)備執(zhí)行其他任務(wù)。處理請(qǐng)求的 resume 方法恢復(fù)請(qǐng)求處理。只要當(dāng)所請(qǐng)求的資源可用時(shí),處理事件的線程才恢復(fù)被掛起的請(qǐng)并進(jìn)行處理以生成響應(yīng)。以下列舉的是異步 servlets 的一些功能: 即使數(shù)據(jù)到達(dá)緩慢(非阻塞輸入),也能在沒有阻塞事件的情況下從客戶機(jī)接收數(shù)據(jù)。 即使客戶機(jī)或者網(wǎng)絡(luò)運(yùn)行緩慢(非阻塞輸出),也能在不發(fā)生阻塞的情況下向客戶機(jī)發(fā)送數(shù)據(jù)。 能處理被延遲的請(qǐng)求。如果在響應(yīng)請(qǐng)求前必須獲得遠(yuǎn)程/緩慢的資源,或者如果需要抑制訪問特定的資源以防止過多的同步訪問,對(duì)被延遲事件的處理是 非常有用的。 能處理被延遲的響應(yīng)關(guān)閉;也就是響應(yīng)將保持打開以允許在發(fā)生異步事件時(shí)發(fā)送其他數(shù)據(jù)。 能通知阻塞或者非阻塞事件。 將新的 API 添加到 ServletRequest 和 ServletResponse,用于掛起、恢復(fù)和查詢請(qǐng)求的狀況、啟用禁用和查詢響應(yīng)的狀況。開發(fā)人員可以分別通過 requestSuspended(), requestResumed() 和 requestCompleted() 方法使用請(qǐng)求的 resume、suspend 和 complete 方法通知事件。有關(guān)這些方法的詳細(xì)信息請(qǐng)參閱 Servlet 3.0 API。涉及使用異步 servlets 從遠(yuǎn)程 web 服務(wù)獲取數(shù)據(jù)的事件順序在圖 1 中進(jìn)行了圖解說明。 圖 1. 使用異步 servlet 處理請(qǐng)求 安全性 在 3.0 規(guī)范的早期草案中沒有考慮安全性問題,因?yàn)閷<覉F(tuán)仍未就此問題達(dá)成一致。不過,方案建議提供通過編程實(shí)現(xiàn)登錄和注銷功能。 HTTPServletRequest 中添加的新 API 可以啟用這項(xiàng)功能。HTTPServletRequest 的 login 方法使應(yīng)用程序或者框架強(qiáng)制進(jìn)行以容器為中介的驗(yàn)證。HTTPServletRequest 和 HTTPSession 的 logout 方法允許應(yīng)用程序重置請(qǐng)求的驗(yàn)證狀態(tài)。 其他雜項(xiàng)變化 下面列舉了一些為簡(jiǎn)化數(shù)據(jù)檢索和簡(jiǎn)化應(yīng)用程序開發(fā)而進(jìn)行的功能增強(qiáng)。 HttpOnly Cookie:Servlet 3.0 規(guī)范允許將 cookie 標(biāo)記為 HttpOnly cookie。由于向客戶端腳本代碼公開了 HttpOnly cookie,因而防止了某些種類的跨站點(diǎn)腳本攻擊。 大多數(shù)現(xiàn)代瀏覽器支持該項(xiàng)功能。以下列舉了添加到 Cookie 類中以支持 HTTPOnly cookie 的方法: void setHttpOnly(boolean isHttpOnly) boolean isHttpOnly() API 的變化: 將以下新增方法添加到 ServletRequest 中,以便輕松獲得與請(qǐng)求對(duì)象相關(guān)的 ServletResponse 和 ServletContext 實(shí)例。 ServletResponse getServletResponse() ServletContext getServletContext() 路線圖 3.0 規(guī)范的早期草案于 2008 年 6 月完成了審查。由于 Servlet 3.0 的目標(biāo)是用于 Java EE 6 平臺(tái)或者更高版本,因此該規(guī)范推薦的最終發(fā)行版也與 Java EE 6 的發(fā)行版匹配。但是,規(guī)范的早期測(cè)試版本將通過 GlassFish 來提供,后者是 Java EE 的參考實(shí)現(xiàn)。預(yù)計(jì) Servlet 3.0 的參考實(shí)現(xiàn)將被整合到 GlassFish 的版本 3 中。 JSR 草案在審查過程中確定了一些變化,正在編制的新方案將處理來自社區(qū)的建議和反饋意見。新方案中的主要變化如下: @Servlet 被重新命名為 @WebServlet,而 @ServletContextListener 被重新命名為 @WebServletContextListener. 新方案建議 @WebServlet 必須擴(kuò)展 HTTPServlet 類。因此,如前所述,servlet 類可以不是 POJO 類。 類似地,@ServletFilter 類和 @WebServletContextListener 類需要分別實(shí)現(xiàn) Filter 和 ServletContextListener 接口。 為啟用和禁用 Servlet 提供選項(xiàng)。 要了解更多詳細(xì)信息,請(qǐng)參見在本文 參考資料 章節(jié)中提供的 更新方案。還需注意,這些新增特性會(huì)因本方案的最終批準(zhǔn)而發(fā)生變更。 結(jié)束語 在本文中,我們討論了在 Servlet 3.0 的早期草案規(guī)范中提出的激動(dòng)人心的特性。該規(guī)范已經(jīng)開始在社區(qū)引起強(qiáng)烈反響。通過注釋機(jī)制而實(shí)現(xiàn)的開發(fā)簡(jiǎn)易性、零配置使用框架和庫、異步 servlets、可插拔性、安全性以及更多新增功能都是 Java Servlets 期待已久的特性。這說明,一些已經(jīng)閱讀了該規(guī)范的人表達(dá)了對(duì)注釋過度使用、在掃描 web 片段時(shí)的安全威脅等問題的關(guān)注。但是,毫無疑問,Java Servlet 3.0 將使 servlet 開發(fā)人員的工作更輕松,并為開發(fā)下一代 web 應(yīng)用程序提供了更多的支持。
來源:開源中國
發(fā)布時(shí)間:2010-05-27 12:26:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 前臺(tái)js之前用jquery ajax請(qǐng)求servlet測(cè)試好半天才反應(yīng)過來根本不行所以就用 window.location.href這種方式請(qǐng)求后臺(tái) 一下后臺(tái)處理的servlet 頁面點(diǎn)擊下載按鈕觸發(fā),界面是用easyui做的,不成功跟easyui有關(guān)系? 結(jié)果就是一片空白
來源:開源中國
發(fā)布時(shí)間:2014-11-06 17:37:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 服務(wù)端的同步模式:客戶端請(qǐng)求 -> servlet容器創(chuàng)建線程 -> 線程中IO(可能是長(zhǎng)時(shí)間的) -> 響應(yīng)客戶端 服務(wù)端異步模式:客戶端請(qǐng)求 -> servlet容器創(chuàng)建線程A -> 將長(zhǎng)IO操作封裝到新線程B中 -> A線程釋放(客戶端繼續(xù)掛起) -> B線程完成IO -> 響應(yīng)客戶端 以上理解是否正確?? 異步模式有啥好處?
來源:開源中國
發(fā)布時(shí)間:2014-11-04 16:09:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> //(1)創(chuàng)建DiskFileItemFactory對(duì)象,該對(duì)象為解析器提供解析時(shí)的缺省的配置 DiskFileItemFactory factory=new DiskFileItemFactory(); //(2)創(chuàng)建解析器 ServletFileUpload sfu=new ServletFileUpload(factory); /**(3)使用解析器解析(InputStream) *解析器會(huì)將一個(gè)表單域(比如,一個(gè)文件輸入框)中的數(shù)據(jù)封裝到一個(gè) *FileItem對(duì)象上。FileItem對(duì)象上提供了相應(yīng)的方法獲取表單域中的數(shù)據(jù) * */ try { List items=sfu.parseRequest(request); for(int i=0;i
來源:開源中國
發(fā)布時(shí)間:2014-04-04 11:49:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 發(fā)布在service上的單純的的一個(gè)servlet用來處理入庫數(shù)據(jù)操作,但是現(xiàn)在捕捉到的異常都打印在控制臺(tái),查看異常還得看后臺(tái)日志,有沒有辦法把后臺(tái)日志的內(nèi)容打印到訪問servlet的頁面?重寫一個(gè)輸出頁面除外。
來源:開源中國
發(fā)布時(shí)間:2014-02-13 11:04:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 執(zhí)行的時(shí)候出現(xiàn)如下的錯(cuò)誤信息: 嚴(yán)重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:819) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)
來源:開源中國
發(fā)布時(shí)間:2011-11-09 17:22:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> word文件禮拜內(nèi)容為表格形式,怎么解析后能存入兩張關(guān)聯(lián)表中包括編號(hào)都存入 以下是文檔內(nèi)容和數(shù)據(jù)庫表類型 數(shù)據(jù)庫主表存入表名 表頭和編號(hào) 從表存入表格內(nèi)容
來源:開源中國
發(fā)布時(shí)間:2016-10-11 16:10:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> eova支持?jǐn)?shù)據(jù)權(quán)限嗎,多級(jí)組織機(jī)構(gòu),同一個(gè)功能看的數(shù)據(jù)權(quán)限是不一樣的
來源:開源中國
發(fā)布時(shí)間:2016-08-22 10:47:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> @Jieven 你好,想跟你請(qǐng)教個(gè)問題:你好,我在練習(xí)中遇到如圖,在有多張圖片的表中,當(dāng)添加一張圖片時(shí),這幾張圖片框都顯示剛添加的那張圖片。而且在修改和查看時(shí),圖片并不顯示!
來源:開源中國
發(fā)布時(shí)間:2016-03-12 11:30:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 挨踢人員,一定要有全局觀。做事之前,先行的是規(guī)劃,也就是所謂的架構(gòu)吧。否則做成之后再來重構(gòu),其間的痛苦指數(shù),呵呵,你會(huì)明白了。 上傳eova官網(wǎng)大作,eova開發(fā)DML圖,相信看過之后就對(duì)eova怎么開發(fā)一目了然了。
來源:開源中國
發(fā)布時(shí)間:2016-06-23 11:32:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> 作為一個(gè)易上手、開發(fā)快的框架,EOVA確實(shí)不錯(cuò)。但對(duì)于剛?cè)腴T又懶得讀源碼和數(shù)據(jù)庫的蟲蟲們來說,有沒有更加懶的辦法呢? 思維導(dǎo)圖來了,一張圖就如把脈一樣把eova看得一清二楚,開發(fā)起來也就不會(huì)云里霧里了。 作為一個(gè)“挨踢”人士,為了不成了“挨罵”人群,有了思維導(dǎo)圖,一覽眾山小,分分鐘鐘就能把整個(gè)框架理解得八九不離十,希望大家喜歡。用百度腦圖制作,正在完善中,歡迎提意見和建議。
來源:開源中國
發(fā)布時(shí)間:2016-06-22 17:38:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> @Jieven 你好,想跟你請(qǐng)教個(gè)問題: 比如我的controller 為 A,里面有 act1() act2()等。 我試了LoginInterceptor.excludes("/A");LoginInterceptor.excludes("/A/act*");,似乎不支持*通配符,只能一個(gè)個(gè)的controller方法過濾LoginInterceptor.excludes("/A/act1"),不太方便。
來源:開源中國
發(fā)布時(shí)間:2016-06-16 11:50:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> @Jieven 你好,想跟你請(qǐng)教個(gè)問題: eova自帶的多表視圖能夠?qū)崿F(xiàn)修改視圖,同時(shí)修改對(duì)應(yīng)的表的值。 我自定義的表,視圖,無法修改和增加。每次提示成功,但是看日志,少了update語句。 請(qǐng)問,如果想實(shí)現(xiàn)修改視圖數(shù)據(jù)的同時(shí),修改表數(shù)據(jù),應(yīng)該注意哪些?
來源:開源中國
發(fā)布時(shí)間:2016-06-14 14:57:00
HDC調(diào)試需求開發(fā)(15萬預(yù)算),能者速來!>>> @Jieven 你好,想跟你請(qǐng)教個(gè)問題: 其實(shí)是兩個(gè)問題: 1. 比如我有個(gè)按鈕,名字叫 button1,自定義了action。我再新增一個(gè)按鈕button2的時(shí)候,自定義的action總是調(diào)到button1的action中。 2. 感覺button有問題,實(shí)在沒法子,就數(shù)據(jù)庫刪除了eova_button表的相對(duì)應(yīng)數(shù)據(jù),再次新增按鈕,總是會(huì)顯示button2的按鈕名,新增的按鈕根本就不顯示了。 求大神指點(diǎn)。 新增按鈕操作的截圖: 彈出框:
來源:開源中國
發(fā)布時(shí)間:2016-06-08 10:20:00