許大衛,吳 舜,孟 德,鄭曉琳
(國網冀北電力有限公司信息通信分公司 信息通信運檢中心,北京 100053)
SG-APS應用服務器中間件的設計與實現
許大衛,吳 舜,孟 德,鄭曉琳
(國網冀北電力有限公司信息通信分公司 信息通信運檢中心,北京 100053)
應用服務器中間件在電力信息化系統中占有舉足輕重的地位,研發具有自主知識產權的應用服務器是實現電力系統信息安全戰略的關鍵。SG-APS應用服務器中間件項目主要基于開源技術研發中間件軟件,構建公司基礎軟件平臺,提升基礎軟件安全自主可控能力,擺脫廠商依賴。介紹了國家電網公司SG-APS應用服務器的設計與實現,分析了該應用服務器在電力信息系統環境下的應用需求,描述了該應用服務器的系統架構、設計思想和關鍵技術。目前,SG-APS應用服務器中間件1.0版本的開發工作現已基本完成,并將在國家電網信息化系統中逐步替換國外產品。
中間件;應用服務器;國家電網;SG-APS
隨著我國電力行業信息化水平的不斷提升,電力信息化系統的應用范圍越來越廣,復雜程度也越來越高。國家電網公司的大部分信息系統均采用J2EE標準[1],其中應用服務器中間件作為J2EE標準的核心中間件,在電力信息化系統中占有舉足輕重的地位[2]。以往國家電網公司通常都是采購國外商用應用服務器中間件產品,如WebLogic等[3]。隨著電力信息化建設要求不斷提高,這種方式逐漸顯現出越來越多的弊端。
首先,電力行業是國民經濟中具有舉足輕重地位的核心領域,長期依賴國外產品無法保障“自主可控、安全可信”的國家信息安全戰略目標。其次,隨著應用部署節點的不斷增加,采購與升級成本越來越高。第三,商用應用服務器安裝與部署時對IT基礎條件要求相對較高、補丁升級流程較長、售后服務響應不及時。第四,商用應用服務器雖然均基于J2EE標準,但各自的配置、管理方式千差萬別,每個系統都需要獨立采購,難以統一管理和維護[4]。
為了確保電力系統的信息安全,防范信息泄露,擺脫對國外廠商的依賴,掌握核心技術,國家電網公司亟需研發適用于國內電力信息化建設需求,擁有自主知識產權的應用服務器中間件[5]。通過應用服務器中間件的研發,提高國家電網信息化運維效率,減少運維投入,降低運維難度,配合應用服務資源池的建設,實現應用按需分配和自主運維。
文中介紹了國家電網公司研發的標準、安全、可控、高可用并具有豐富功能的SG-APS企業級應用服務器,分析了該應用服務器在電力信息系統環境下的需求,描述了該應用服務器的系統架構、設計和關鍵技術。
國家電網公司SG-APS應用服務器中間件在定位上主要考慮兩個因素。
(1)應用服務器中間件在國際上已經形成了標準。國家電網多年來也在這些標準下建設了大量的信息系統。從延續性和兼容性上來說都要求國家電網應用服務器遵循國際標準。
(2)國家電網公司已將云計算作為未來信息化發展的方向。從云平臺的角度來看,能夠承載服務化的云應用是對應用服務器的根本要求。這就要求應用服務器在國家電網云平臺環境下能夠按照云平臺的要求實現應用支持。此外,應用服務器研發還必須考慮在當前國家電網的云平臺環境尚未完全建成的前提下,如何在開發中與云平臺的建設保持同步,甚至適當超前于云平臺建設的要求。
1.1 功能需求
應用服務器需要把不同業務應用作為構件整合到一個協同工作的環境里,并為應用提供名字、事務、安全、消息、數據訪問等服務,包括:
(1)標準和規范。包括Java EE 5的相關13種技術規范[6]、主流的Web服務標準和互操作標準。
(2)容器和組件。包括Web容器、EJB容器、RMI服務容器、Web服務容器、JCA服務、數據庫連接池、事務控制組件、緩存組件、高級消息傳輸、Rest服務[7-14]等,并支持各種成熟開發框架。
(3)集群和動態擴展。實現集群部署的動態管理,支持動態加載新業務;提供跨多種平臺服務器的集群部署配置以及故障切換功能,從而快速適應企業現有軟硬件環境并可確保關鍵應用和服務高效可用。
(4)管理配置。具備標準的B/S模式管理控制臺,可對遠程的應用服務器環境進行應用部署、管理維護和監控;支持對系統運行狀態、Web應用、數據庫連接池、事務服務、JMS服務及其他服務端組件與服務進行動態監控與管理;提供應用移植工具,實現應用程序包從其他應用服務器到本應用服務器環境的移植。
1.2 非功能需求
(1)安全。提供基于容器的安全策略,限制對應用的訪問,保障企業數據的安全,防止惡意攻擊。通過使用應用服務器提供的監控管理工具對服務的運行情況進行實時跟蹤監控,并提供方便的日志管理功能以便用戶進行審計。支持JAAS協議,支持用戶采用第三方的安全策略集成企業級應用,以增強應用安全性。
(2)可靠性。應用服務器應對應用提供自我恢復的能力管控,即知道在應用是否有問題,以及支撐的Java容器是否出現故障時,對出現問題的應用進程、組件提供分析、恢復、重啟的能力。如出現死鎖或者其他原因崩潰的操作系統虛擬機(節點),應用服務器可以根據不同的定制策略,選擇性重新啟動恢復。
(3)性能。性能指標為:URL訪問應答時間<5 ms,瞬間最大并發訪問請求>2 000,大于1k文件JSP文件編譯時間>10 ms,大于1k文件class文件加載時間>10 ms,URI路徑解析時間<0.1 ms,同時需要:
·滿足系統7×24小時業務無間斷,穩定可靠運行。
·日常平均CPU占用率<40%,忙時<75%,內存占用率<50%,最大并發時<75%。
·系統應滿足易理解、易分析、易配置、易修改、易測試的要求。
·系統從用戶體驗維度出發,滿足頁面布局合理,通用操作規范,出錯處理、反饋與提示人性化等要求。
·具備開發架構和動態擴展能力。
此外,應用服務器還要綜合考慮數據庫、操作系統、硬件環境、安全防護和節點冗余等問題。
2.1 系統架構
應用服務器中間件要實現Java EE 5規范規定的各種標準組件和標準服務,包括Web容器、EJB容器、RMI服務容器、Web服務平臺、JCA服務、數據庫連接池、事物控制組件等,并支持各種成熟開發框架,如圖1所示。SG-APS應用服務器中間件主要實現了以下核心組件和服務。
1)安全。
基于Java EE標準的安全服務[15],是動態可擴展的安全體系結構,包括基于JMAC的驗證和基于JACC(Java Authorization Contract for Containers,Java容器授權合同)的授權,使得服務器能夠接入第三方認證、授權模塊。
消息安全性使服務器可以在消息層執行Web服務調用和響應的端對端驗證。消息安全性提供者提供了請求和響應消息所需的驗證類型等信息。支持的驗證類型包括發件人驗證(用戶名和密碼驗證)和內容驗證(XML數字簽名)。
2)事務。
事務按照JTA1.0.1B規范實現,并且支持如下功能:
(1)本地事務優化。對于使用同一個資源管理器的操作,事務管理器使用本地事務機制,本地事務只存在于一個事務過程中,采用一階段提交;只有涉及到多個資源管理器的操作才使用全局事務,全局事務可參與多個事務過程。
(2)事務恢復功能。在服務器啟動時從故障中恢復并完成被擱置的事務。
(3)事務超時控制。自動回滾超時的事務。

圖1 系統架構
3)日志。
基于Java Logging API(JSR-047)實現日志管理。
4)Web容器。
Web容器提供了Web應用的運行時環境,包括生命周期管理、安全、請求轉發等。同時Web容器為Web應用提供訪問其他API的能力,如命名服務。
5)EJB容器。
EJB容器實現了EJB3.0的規范,提供了EJB運行的環境。它負責EJB Bean實例的生命周期管理,Bean實例狀態管理,并發(線程)管理,事務服務,安全服務,命名服務,資源(數據源等)管理,使得EJB客戶端程序能進行遠程調用或本地調用。EJB容器支持EJB3.0規范和JPA,提供定時服務、依賴注入、攔截器、基于EJB的Web Service等功能。
6)Web Service容器。
Web服務定義了應用程序如何在Web上實現互操作性,它使用XML(可擴展標記語言)表示數據的基本格式,使用DTD(Document Type Definition)或XSD(XML Schema)定義數據類型及擴展這套數據類型,通過XML文件(如Web服務定義語言:WSDL)描述Web服務應用程序及其函數、參數和返回值,并通過基于XML的協議(如簡單對象訪問協議:SOAP)向客戶機提供標準的RPC方法來調用該Web服務應用程序。
7)資源管理器。
資源管理器負責管理SG-APS應用服務器中間件的各種資源,主要包括:
(1)JDBC數據源。主要實體為JDBC資源和JDBC連接池。JDBC資源為應用程序提供了連接數據庫的方法。要創建JDBC資源,需要指定與其關聯的連接池。多個JDBC資源可以指定一個連接池。JDBC連接池維護特定數據庫的一組可重復使用的連接。應用程序請求連接時可以從池中獲取一個連接。應用程序關閉連接時,連接將返回到池中。
(2)JMS消息服務資源。有四個組成部分:JMS服務提供者、消息管理對象、消息的生產者、消費者和消息本身。
(3)JavaMail資源。通過調用JavaMail API實現從Java應用程序訪問網絡或Internet上支持Internet消息訪問協議(Internet Message Access Protocol,IMAP)和簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)的郵件服務器。它本身不提供郵件服務器功能,必須有權訪問郵件服務器,才能使用JavaMail。
(4)Connector連接器資源。通過JCA(Java Connector Architecture)提供了一個應用服務器和企業信息系統(EIS)連接的標準Java解決方案,以及把這些系統整合起來的方法。JCA簡化了異構系統的集成,用戶只要構造一個基于JCA規范的連接器應用,并將該連接器應用部署到J2EE服務器上,這樣不用編寫任何代碼就可以實現EIS與J2EE應用服務器的集成。
2.2 系統設計與實現
為縮短開發周期,降低開發風險,SG-APS應用服務器中間件參考了開源應用服務器軟件JBoss Application Server。
JBoss Application Server[16]是開源社區著名的應用服務器項目,遵循LGPL 2.1許可協議。JBoss Application Server(現已更名為WildFly)以其架構清晰、高效、穩定、易用等優勢,先后為眾多大型應用系統所采用。
SG-APS應用服務器中間件沿用了JBoss Application Server的核心容器和核心服務,重點對其中的服務器參數配置和服務器運行監控兩個客戶端工具進行了漢化、消缺、界面美化和易用性改造,新增了集群日志、自動運維工具接口和安裝工具三個組件。
(1)服務器參數配置客戶端。
服務器參數配置客戶端的核心類主要有3個,其中Constants接口以字符串常量的形式定義了請求方法(Request Methods)、協議(Protocols)、標題頭(Headers)、類型(Content Types)、字符集(Charsets)、狀態碼(Status Codes)。
ConsoleMode是一個枚舉類,用于定義展現不同的管理控制臺的操作模式,如CONSOLE(展示正常的控制臺);SLAVE_HC(如果企圖訪問控制臺,提示錯誤主機是從屬的);ADMIN_ONLY(試圖訪問控制臺,顯示服務器/主機處于管理模式錯誤);NO_CONSOLE(試圖訪問控制臺,顯示404錯誤碼),同時生成對應的資源頁面文件句柄。
資源句柄類ResourceHandler實現了ManagementHttpHandler接口。它通過調用ModuleIdentifier()方法獲得Modules(是指JBoos7.1的所有功能模塊)的名稱和ID,提供給界面進行展示和管理。
用戶管理員登錄進入服務器參數配置界面如圖2所示。

圖2 服務器參數配置界面
(2)服務器運行監控客戶端。
服務器運行監控客戶端運行過程中同樣通過前述DomainApiHandler接口讀取Constants、ConsoleMode屬性獲得域管理模式、操作模式和請求參數并構造監控頁面,核心方法主要有:
getOperation(String realOperation)//獲取操作模式
processRequest(final HttpExchange http)//處理封裝自http客戶端的操作請求
start(HttpServer httpServer,SecurityRealm securityRealm)//啟動指定服務器的域服務
stop(HttpServer httpServer)//停止指定服務器
服務器運行監控界面如圖3所示。

圖3 服務器運行監控界面
(3)集群日志。
集群日志模塊是SG-APS應用服務器中間件新增的模塊,實現了對運行于云平臺之上的SG-APS應用服務器中間件集群的日志進行統一管理,并由獨立運行的日志服務器進行日志收集和分析的功能。集群日志模塊由客戶端和服務端組成,它們和應用服務器集群之間的關系如圖4所示。

圖4 集群日志
日志服務客戶端與SG-APS應用服務器主服務運行于同一進程空間,通過預設的日志發送策略向日志服務器發送日志,主要方法包括:
客戶端:
getConfig(String tag)//獲取給定標識下的配置,包括日志文件路徑、讀取策略等
readLogFile(File logFile)//讀取配置文件
send(Url url, File file)//發送指定日志文件到指定服務器地址
服務端:
saveLog(File logFile)//保存接收到的日志文件
getConfig(String tag)//獲取給定標識的配置,如日志文件存放路徑、處理策略等
(4)自動運維接口。
以接口的形式提供獲取SG-APS中JVM和內核服務信息的方法,JVM信息包括:堆內存、非堆內存、垃圾收集、線程、類加載等信息;內核服務信息包括Web線程池、EJB線程、事務處理情況、http請求應答情況等信息。核心方法包括:
getJVMInfo()//獲取Java虛擬機信息
getHeapSpace()//獲取堆內存空間大小
getJVMGCInfo()//獲取垃圾回收信息
getJVMThreadInfo()//獲取Java虛擬機當前線程信息
getDeployInfo()//獲取部署包信息
getEJBThreadPoolInfo()//獲取EJB線程池信息
getSourceConnectPoolInfo()//獲取數據庫連接池信息
(5)安裝工具。
安裝工具用于在Windows系統下安裝SG-APS,界面如圖5所示。

圖5 安裝工具
2.3 關鍵技術
(1)HTTP請求分發處理。
HTTP請求分發處理流程如圖6所示。

圖6 HTTP請求處理流程
(2)JSP編譯。
JSP文件首先被JSP引擎(JSP Engine)轉換成為一個Servlet。如果在轉換過程中發現JSP文件有語法錯誤則過程中斷,并向客戶端發出出錯信息;如果轉換成功,生成的Servlet代碼被編譯為class文件并隨即被JSP引擎加載到內存中。如果JSP文件被修改了,應用服務器將自動地對文件重新轉換并編譯,并用新產生的class字節碼取代內存中的Servlet。
(3)線程池。
線程池是一種多線程處理形式。應用服務器維護一組可重復使用的線程。在任務處理過程中,應用服務器首先將任務添加到隊列,然后在線程池中選擇一個線程啟動任務。如果線程池中所有線程都未結束,新進任務將被掛起以等待其他任務結束。
(4)對象序列化。
對象序列化反序列化是將對象實例的狀態存儲到存儲媒體的過程。在隨后對對象進行反序列化時,將創建出與原對象完全相同的副本。
中國已將信息安全上升為國家戰略。為確保作為國民經濟要害部門的電力信息系統的“自主可控、安全可信”,在充分了解和掌握國際標準并參考開源應用服務器軟件的基礎上,國家電網公司開發了適用于電力信息化的企業級應用服務器SG-APS。SG-APS應用服務器中間件共包括一級模塊11個,二級模塊50個,三級模塊1 400余個,涵蓋了服務容器、J2EE核心組件、線程池、數據庫連接池、集群管理、安全管理、日志管理、事務服務、監視服務、快照服務和部署服務等核心服務。
SG-APS應用服務器中間件1.0版本的開發工作現已基本完成,正在進行緊密測試,后期將在國家電網信息化系統中逐步替換國外產品。文中介紹了國家電網應用服務器的設計與開發,應用推廣效果及后續改進還有待進一步的研究和探討。
[1] 劉振亞,張啟平.國家電網發展模式研究[J].中國電機工程學報,2013,33(7):1-10.
[2] 孫丕石,曹占峰,王亞玲,等.國家電網公司數據交換平臺研發與應用[J].電網技術,2008,32(22):62-67.
[3] 韓小濤,尹項根,張 哲,等.嵌入式Web服務器技術及其在電力系統中的應用綜述[J].電網技術,2003,27(5):58-62.
[4] 趙子巖,張大偉.國家電網公司“十二五”電力通信業務需求分析[J].電力系統通信,2011,32(5):56-60.
[5] 2015年信息化建設實施意見[EB/OL].2015.http://www.sgcc.com.cn/kjcx/xxhgzdt/322390.shtml.
[6] Kassem N.J2EE權威指南[M].北京:中國電力出版社,2002.
[7] Implementing enterprise web services[EB/OL].2013.https: //jcp.org/en/jsr/detail?id=109.
[8] Enterprise JavaBeansTM 3.0[EB/OL].2007.https://jcp.org/en/jsr/detail?id=220.
[9] Web services metadata for the JavaTM platform[EB/OL].2013.https://jcp.org/en/jsr/detail?id=181.
[10] XML parsing specification[EB/OL].2000.https://jcp.org/en/jsr/detail?id=5.
[11] JDBCTM 3.0 specification[EB/OL].2002.https://jcp.org/en/jsr/detail?id=54.
[12] JavaTM Message Service (JMS) API[EB/OL].2003.https://jcp.org/en/jsr/detail?id=914.
[13] JavaMailTM specification[EB/OL].2000.https://jcp.org/en/jsr/detail?id=904.
[14] J2EETM connector architecture[EB/OL].2001.https://jcp.org/en/jsr/detail?id=16.
[15] Steel C,Nagappan R.Core security patterns:best practices and strategies for J2EE,web services,and identity management[M].[s.l.]:Pearson Education,2006.
Design and Implementation of SG-APS Application Server Middleware
XU Da-wei,WU Shun,MENG De,ZHENG Xiao-lin
(Information and Communication Center,State Grid Jibei Information & Telecommunication Company,Beijing 100053,China)
Application server middleware possesses an extremely important position in electric power information systems.Developing application server with independent intellectual property is essential to the information security strategy of the electric power systems.The project of SG-APS application server middleware mainly bases on open source technology research and development middleware software,and builds the company’s basic software platform to enhance the ability to independently control the basic software security capabilities,getting rid of manufacturers rely on.It introduces the SG-APS application server middleware developed by State Grid Corporation,and analyzes its application requirements under the environment of the electric power information systems,and describes its architecture,design,implementation and key technologies.At present,the development of the 1.0 version of SG-APS application server middleware has been basically completed,and it will gradually replace foreign products in the national grid information system.
middleware;application server;State Grid;SG-APS
2015-11-06
2016-03-04
時間:2016-09-19
中央高校基本科研業務費(JB150407);數據(災備)中心-中間件軟件-一期項目(7199001402MO)
許大衛(1984-),男,工程師,從事信息技術及管理的工作。
http://www.cnki.net/kcms/detail/61.1450.TP.20160919.0839.002.html
TP39
A
1673-629X(2016)10-0127-06
10.3969/j.issn.1673-629X.2016.10.028