這陣子實在是懶到翻掉,一點都不想上班,這幾張圖片還是被我老闆逼出來的。 我承認我真的很懶,懶得囉嗦,我就直接就說明一下。 看圖說故事 ↓這是OpenNMS的架構,基本上OpenNMS的發展一直都是依這樣的架構發展,增加的只是一些模組跟功能,可見這用Maven搭建的架構還算穩定。 我拿到手的版本是1.8.x版,這時候已經是改用Jetty當作Web Server。整個SNMP的功能主要是藏在Dependencies中「snmp*」的module中,opennms/dependencies下的東西大都是用來作Library用,所以很多都是只有pom.xml的檔案,再透過Maven的repository到指定的Server download。當然你也可以自己手動增加一個module,按照其他的pom.xml的架構去搭建就ok了。 接下來OpenNMS的真正核心是在core/snmp/*下面,他會呼叫到Dependencies中的snmp*.tar,所以大家就清楚當初弄Dependencies/snmp*的目的了。當然在core/snmp中只提供大部分的snmp api,而後再依照各個功能需求去初始化Daemon/Service,由此取得SNMP的服務/功能。 ↓剛剛提到的SNMP程式架構的大概。最下面的那幾個是我目前查到有用到SNMP api的幾隻模組。 ↓這其實是整個OpenNMS的Boot up 流程。很多東西都被我省略了,但是剛開始Study OpenNMS的人應該還是有點幫助。 最初的程式其實是「target/openms-1.8x/bin/opennms」這是隻可執行的pl。它平常就被藏在「opennms-base-assembly\src\main\filtered\bin」下。 從中可以看到它會去呼叫opennms-bootstrap.tar,程式就是這樣開始的。 緊接著bootstrap會用classloader的方式去喚起opennms-daemon中的程式,然後就是一連串的初始化,像Spring, JMX, Dao...之類的東西都是在這階段初始化,你也可以從每個module中看到有onInit()或Init的function,這個Function就是在各個資源初始完之後,切入每個Service/mod
留言
張貼留言