源碼簡(jiǎn)介1.1簡(jiǎn)介 在Exam++考試系統(tǒng)第一版的基礎(chǔ)上,我們對(duì)ExamStack V2.0進(jìn)行了大量代碼重構(gòu),同時(shí)也對(duì)數(shù)據(jù)模型做了部分調(diào)整。為了減小學(xué)員考試交卷時(shí)大量并發(fā)帶來(lái)的系統(tǒng)風(fēng)險(xiǎn),我們嘗試采用成熟的消息隊(duì)列框架RabbitMQ來(lái)解決這一問(wèn)題,因此我們的數(shù)據(jù)庫(kù)以及系統(tǒng)的架構(gòu)同第一版相比,發(fā)生了不小的變化。 1.2 部署要點(diǎn) Management.war和Portal.war需要部署在同一個(gè)目錄下。 ExamStack V2.0增加了培訓(xùn)功能,因?yàn)樾枰4媾嘤?xùn)材料,所以請(qǐng)留出足夠的磁盤(pán)空間(以實(shí)際需要為準(zhǔn))。 要保證RabbitMQ服務(wù)狀態(tài)為運(yùn)行狀態(tài)。 要保證ScoreMarker狀態(tài)為運(yùn)行狀態(tài),同時(shí)ScoreMarker調(diào)用服務(wù)地址要配置正確。 應(yīng)用服務(wù)器安裝配置2.1 服務(wù)器安裝部署 2.1.1 服務(wù)器配置 操作系統(tǒng):Linux、Windows 內(nèi)存:最低2G,推薦8G 2.1.2 java運(yùn)行環(huán)境 Java 8 2.1.3 服務(wù)器 Tomcat 8 RabbitMQ MySql 5.0以上 2.2 應(yīng)用部署 2.2.1 數(shù)據(jù)庫(kù) 在MySql中新建一個(gè)數(shù)據(jù)庫(kù)examstack,字符集使用utf8 — UTF-8 Unicode 使用我們提供的examstack.sql還原examstack 設(shè)置好對(duì)應(yīng)的訪(fǎng)問(wèn)權(quán)限 2.2.2 RabbitMQ 安裝最新版本的RabbitMQ,具體安裝方法,在網(wǎng)絡(luò)上可以找到很多。 2.2.3 應(yīng)用 將Management.war和Portal.war放到Tomcat應(yīng)用程序目錄(webapps)下。 啟動(dòng)Tomcat,webapps目錄下會(huì)生成兩個(gè)文件夾(Management和Portal)。 分別進(jìn)入到Management/WEB-INF/Spring和Portal/WEB-INF/Spring下修改root-context.xml文件,將數(shù)據(jù)庫(kù)地址、用戶(hù)名和密碼修改成正確的內(nèi)容。修改完成后重啟tomcat服務(wù)器。 需要修改的內(nèi)容如下: | <property name="jdbcUrl" value="jdbc:mysql:/*.*.*.*:3306/examstack?useUnicode=true&characterEncoding=UTF-8" /> <property name="user" value="root" /> <property name="password" value="***" /> |
訪(fǎng)問(wèn)http://localhost:8080/Management和http://localhost:8080/Portal可以進(jìn)入到管理后臺(tái)頁(yè)面和學(xué)員頁(yè)面,并可以正常登陸,則應(yīng)用配置成功。 注意:*在完成這一步后學(xué)員考試交卷無(wú)法完成,需要部署ScoreMarker。* 部署ScoreMarker Linux下-解壓scoreMarker到/opt/目錄。 確認(rèn)config/scoremarker.properties文件配置正確。 拷貝scoremarker 執(zhí)行腳本到init.d目錄下并檢查腳本中的配置。 Windows下-解壓scoreMarker到任意目錄。 確認(rèn)config/scoremarker.properties文件配置正確。 修改installService.bat中APP_HOME為scoreMarker目錄。 運(yùn)行installService.bat后啟動(dòng)服務(wù)ScoreMarkerService服務(wù)。 更新說(shuō)明系統(tǒng)架構(gòu):管理后臺(tái)現(xiàn)在獨(dú)立成一個(gè)新項(xiàng)目,不再和第一版一樣和前臺(tái)合在一起。 引入RabbitMq,用于接受用戶(hù)提交的答題卡,通過(guò)ScoreMarker從消息隊(duì)列獲取答題卡并交卷,減小大量用戶(hù)提交導(dǎo)致的服務(wù)器故障幾率。 試題內(nèi)容存儲(chǔ)格式由xml改為json 增加教師角色,現(xiàn)在教師用戶(hù)可以正確地使用自己的權(quán)限管理學(xué)員、試題、試卷、考試以及培訓(xùn)。 優(yōu)化系統(tǒng)界面,新的界面看起來(lái)更加清爽、專(zhuān)業(yè)。 新增了DashBoard,管理界面看起來(lái)會(huì)更專(zhuān)業(yè)。 練習(xí)歷史現(xiàn)在專(zhuān)門(mén)用一張表記錄,使開(kāi)發(fā)相關(guān)統(tǒng)計(jì)變得更容易。 考試和練習(xí):考試現(xiàn)在分為正式考試和模擬考試兩種,正式考試需要教師或管理員審核,而模擬考試不需要審核。正式考試又分為公有和私有兩種類(lèi)型,公有考試是可以申請(qǐng)的考試,私有考試則需要教師或管理員指定學(xué)員(這里由管理員指定也被我們認(rèn)為是審核的一種方式)。 新增審核功能,現(xiàn)在教師創(chuàng)建的試卷、考試都需要超級(jí)管理員審核。超級(jí)管理員自己創(chuàng)建的不需要審核。同時(shí),超級(jí)管理員和教師也可以審核學(xué)員的考試申請(qǐng)。 新增人工閱卷功能。包含主觀題的考試試卷,教師或超級(jí)管理員通過(guò)人工閱卷后可以確定最終分?jǐn)?shù)。全部是客觀題的試卷不需要閱卷。 新增考試成績(jī)統(tǒng)計(jì)功能,可以查看特定考試下學(xué)員的分?jǐn)?shù),同時(shí)可以對(duì)分?jǐn)?shù)進(jìn)行排序。 新增學(xué)習(xí)記錄查詢(xún)功能,教師和管理員現(xiàn)在可以方便地查看學(xué)員的練習(xí)記錄、培訓(xùn)記錄和考試記錄。 新增快速考試模式,通過(guò)輸入準(zhǔn)考證號(hào)即可直接進(jìn)入到對(duì)應(yīng)的考試頁(yè)面。 新增繼續(xù)考試功能,現(xiàn)在學(xué)員在考試過(guò)程中中斷考試后,繼續(xù)進(jìn)入考試后,學(xué)員的答題記錄會(huì)恢復(fù)到中斷前的狀態(tài)。 題庫(kù)管理:優(yōu)化試題修改功能,現(xiàn)在可以正確地修改試題的基本信息。 新增培訓(xùn)功能,教師或超級(jí)管理員可以發(fā)布培訓(xùn)資料(視頻和pdf文檔)。學(xué)員可以選擇自己需要參加的培訓(xùn)進(jìn)行學(xué)習(xí),培訓(xùn)分為視頻和pdf格式的文檔兩種。 新增虛擬班級(jí)功能,教師或管理員現(xiàn)在可以通過(guò)虛擬班組很方便地管理學(xué)員。 系統(tǒng)問(wèn)題處理1.不能獲得數(shù)據(jù)庫(kù)連接; ' | Cause:org.springframework.jdbc.CannotGetJdbcConnectionException:Could not get JDBC Connection;nested exception is java.sql.SQLException:Access denied for user 'root'@'localhost |
請(qǐng)檢查數(shù)據(jù)庫(kù)連接字符串是否正確,同時(shí)檢查數(shù)據(jù)庫(kù)名、用戶(hù)名和密碼是否設(shè)置正確。 2.交卷失敗; | RabbitMQ沒(méi)有啟動(dòng)會(huì)導(dǎo)致應(yīng)用程序連接RabbitMQ失敗 |
復(fù)制代碼請(qǐng)檢查RabbitMQ服務(wù)是否啟動(dòng)。 3.學(xué)員交卷后,管理界面學(xué)員對(duì)應(yīng)的狀態(tài)沒(méi)有改變; | 交卷成功后,學(xué)員考試狀態(tài)會(huì)修改成已交卷或者已閱卷,如果在提示“交卷成功”后沒(méi)有發(fā)生任何變化,證明ScoreMarker沒(méi)有正常啟動(dòng)或者ScoreMarker調(diào)用接口失敗。 |
復(fù)制代碼請(qǐng)檢查ScoreMarker是否啟動(dòng)。同時(shí)請(qǐng)保證ScoreMarker能調(diào)用到Management提供的接口,這一點(diǎn)在ScoreMarker部署中已經(jīng)說(shuō)明。 4.RabbitMQ、MySql、ScoreMarker無(wú)法啟動(dòng)或經(jīng)常被Kill掉 | 我們?cè)跍y(cè)試過(guò)程中發(fā)現(xiàn),內(nèi)存不足的情況下(我們使用的是1G內(nèi)存),RabbitMQ、MySql、ScoreMarker經(jīng)常被Kill,而且無(wú)法啟動(dòng),查看日志會(huì)發(fā)現(xiàn)提示內(nèi)存不夠。 |
復(fù)制代碼查看下日志,如果是內(nèi)存不夠的原因,那就趕緊加內(nèi)存吧。為了保證系統(tǒng)正常運(yùn)行,內(nèi)存不能低于2G。 5.bug更新日志 2016-2-15 解決試題導(dǎo)入報(bào)錯(cuò)的bug 2016-3-15 解決考試用戶(hù)列表不能正常分頁(yè)的bug 測(cè)試截圖 
|