公司老項目的后臺,均是基于sPRing框架搭建,其中還用到了log4j.jar等開源架包。在新項目中,則是spring和hibernate框架均有使用,利用了hibernate框架,來實現持久化,簡化sql操作等。Hibernate配置文件可以有兩種格式,一種是 hibernate.properties,另一種是 hibernate.cfg.xml。后者稍微方便一些,當增加hbm映射文件的時候,可以直接在 hibernate.cfg.xml 里面增加,不必像 hibernate.properties 必須在初始化代碼中加入。我們新項目中使用的是hibernate.cfg.xml格式。不過在本文中不將細述,后續有機會再補上。
公司項目中,中間件主要有tomcat,webshpere,WebLogic。以下,將對項目中spring基本配置,log4j的配置,還有中間件的相關參數配置做一個初步的介紹。
GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz方面的配置。配置的實現是通過注記配置和XML配置來合作實現。這里,我將按照Spring的配置流程,將其他幾個方面的配置融合其中,來進行全面解析。
Web程序中,當中間件啟動時,中間件會首先讀取web.xml中的配置。在web.xml中可以配置監聽器,過濾器,servlet映射等等。在Spring框架中,我們主要需配置容器初始化時讀取的spring容器配置文件的路徑以及springMVC中的分發器DispatcherServlet。
在GISV13的web.xml中,我們定義了如下內容:
InitGISConfigServlet定義了容器啟動時,首先要運行這個方法。然后servletname為MVC的這部分便是定義了springMVC的分發器以及此servlet所對應的加載配置文件的路徑。在web.xml中可以配置多個這樣的servlet。截圖中這段xml的配置是指,當后綴名為.htm時,則觸動springMVC的分發器。關于此servlet的配置在/WEB-INF/classes/applicationContext-servlet.xml地址下。Servlet的配置文件有其默認的地址,此處為顯示表示。
首先,在配置文件中需要定義springMVC的引用空間以及配置格式兩項。
為了支持注解格式,添加了如下配置:
此配置會在配置文件被容器加載時,掃面添加了注解的代碼,完成MVC的相關配置。在GISV13中,運用了@Controller, @Service來定義控制層以及DAO中的實現層,通過@RequestMapping來進行URL與Controller之間的關聯。
在SpringMVC中通過Controller返回的數據會被包裝在ModelAndView這個類里。此類中包含有返回的具體數據以及返回的數據指向的URL。
在GISV13中與此相關的配置為:
此配置中為ModelAndView中的url默認添加了一個前綴,以及為url所指向的文件名后面添加了文件格式,即將返回的url轉換成/home/url/file.jsp的樣式。
同時此配置中也定義了視圖和視圖解譯器:視圖為org.springframework.web.servlet.view.JstlView,視圖解譯器為:org.springframework.web.servlet.view.InternalResourceViewResolver。
其實InternalResourceViewResolver默認的視圖便是JstlView。此處不配置也可以。
視圖解譯器有很多種,根據不同的視圖以及用途而定。SpringMVC中支持對PDF,XML還有上傳下載文件等視圖的支持。
在GISV13中,IOC相關的配置也是通過注解和XML共同完成的。與容器相關的配置地址在web.xml中已經配成,在容器啟動時便會進行加裝。這里我們針對利用了IOC的ORM來進行講解。
此處主要有兩項:
即數據庫驅動以及數據庫地址。
對于不同的數據庫,spring配置數據庫時會引用不同的類,GISV13支持的數據庫是Oracle,所以此處引用的類是BasicDataSource。具體配置如下:
此配置為容器啟動時,實例化BasicDataSource類,property中的每一個對象均為對象初始化時的屬性配置,這些屬性包含了驅動類型,連接地址,最大連接數等。在之前配置的jdbc.properties中的類容,可在此處直接使用。
在系統代碼中,通過@Autowired,將實例化后的對象,在容器初始化時注入到注解所對應的對象中。
便可以將spring中包含了數據庫配置而自動實例化好后的jdbc對象注入到注解對象中。我們一般使用的是JdbcTemplate類,此類將數據庫操作進行了淺包裝,至此增刪查改以及存儲過程的調用等,避免了代碼中多次使用容錯機制等重復代碼。
AOP是Spring的一大亮點,其涉及到的概念非常多,比如切入點,增強,橫切面等等。在使用驗證等功能中常需使用該配置。在GISV13里也使用了此功能,主要是為了數據庫事務管理而使用的。在Spring中,AOP的實現可以通過一般性XML配置,aspectJ的配置還有注解配置等來實現。結合系統,我將AspectJ的配置來大致講解下。
此類中主要定義了事務管理所關聯的數據庫。DataSource的配置在上一章已描述。
此類中定義了增強的類容,即織入到目標對象(Target)代碼中的內容。Attributes里定義了該增強所對應的操作。比如當方法名以find開頭是,事務管理的類型為只讀。事務管理的屬性中還能設置傳播特性,以及事物隔離性等。如果不設置,此處的轉播特性為::PROPGATION_REQUIRED。這個配置項的意思是說當我調用service層的方法的時候開啟一個事務(具體調用那一層的方法開始創建事務,要看aop的配置),那么在調用這個service層里面的其他的方法的時候,如果當前方法產生了事務就用當前方法產生的事務,否則就創建一個新的事務。這個工作使由Spring來幫助我們完成的。
首先定義織入點,該配置中的意思是當在cn.com.*包下以一直到dao包中以Manager結束的類中的所有方法。
然后定義了切面,該切面首先關聯了織入點,其次關聯了增強類。即,在滿足織入條件下的方法中加上增強的類容,該增強的類容在4.2中已經描述。
Spring3.0以后自帶的task,可以將它看成一個輕量級的Quartz,而且使用起來比Quartz簡單許多,能夠完成任務的定時觸發。
定義一個作業類。Value中為需要觸發的類的引用地址。
觸發條件分為兩種,簡單條件和復雜的條件。
可以配置觸發延遲時間和觸發間隔時間。其中ref為需要觸發的類的配置(bean)名。
復雜配置中可以配置具體觸發的時間等。
常見的支持日志的開源項目比較多,主要有:Log4j,Jul,Jcl,Slf4j,Logback等。但是,log4j以其悠久的歷史,廣泛的應用,支持多種語言及平臺,強大的功能,占據了主導的地位。
一般需要log4j-1.2.13.jar和commons-logging-1.1.1.jar兩個架包。但是,log4j-1.2.13.jar是必須的,commons-logging-1.1.1.jar并不是必須的。
Commons-loggin的目的是為“所有的java日志實現”提供一個統一的接口,它自身的日志功能平常弱(只有一個簡單的SimpleLog), 所以一般不會單獨使用它。但是,幾乎所有用到Log4j的項目一般也同時會用到commons-loggin。這樣做主要是為了避免自身項目與Log4j綁定的太緊密。另外, “同時使用commons- logging和Log4j”,可以提供一個統一的日志接口,簡單了操作,同時避免項目與某個日志實現系統緊密耦合,如此可以自動選擇適當的日志實現系統。
在web.xml中需要配置log4j的配置文件地址,以及監聽啟動項。
Log4j中可以配置日志的輸出級別,輸出格式,日志路徑日志名,時間格式等。
日志等級:
ERROR:雖然發生錯誤事件,但仍然不影響系統的繼續運行。
WARN:會出現潛在錯誤的情形。
INFO:消息在粗粒度級別上突出強調應用程序的運行過程。
DEBUG:細粒度信息事件對調試應用程序是非常有幫助的。
其中:
org.apache.log4j.ConsoleAppender(控制臺)。
org.apache.log4j.FileAppender(文件)。
org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)。
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)。
org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)。
Layout:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)。
org.apache.log4j.PatternLayout(可以靈活地指定布局模式)。
org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串)。
org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)。
Log4J采用的是類似C語言中的printf函數的打印格式格式化日志信息的
%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啟動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產生該日志事件的線程名
%n 輸出一個回車換行符,Windows平臺為“/r/n”,Unix平臺為“/n”,也就是一跳消息占用一行
%d 輸出日志時間點的日期或時間,緊跟一對花括號進行自定義格式
%c 輸出所屬的類目,通常就是所在類的全名
%l 精確到行
%x 輸出對齊
在web.xml中,定義了項目名:
在log4j.properties中定義了輸入日志路徑:
首先引用:
然后實例化:
最后使用:
Tomcat中我們一般進行的配置有:端口,回話連接數,線程數,編碼格式,文件壓縮,內存大小等。
在catalina.bat文件中可以增加tomcat的內存數,避免space heap問題。
——歡迎轉載,但保留版權,請于明顯處標明出處:http://www.companysz.com/naaoveGIS/
新聞熱點
疑難解答