服務端常規知識詳解

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/web

1.前言

公司老項目的後臺,均是基於spring框架搭建,其中還用到了log4j.jar等開源架包。在新項目中,則是spring和hibernate框架均有使用,利用了hibernate框架,來實現持久化,簡化sql操做等。Hibernate配置文件能夠有兩種格式,一種是 hibernate.properties,另外一種是 hibernate.cfg.xml。後者稍微方便一些,當增長hbm映射文件的時候,能夠直接在 hibernate.cfg.xml 裏面增長,沒必要像 hibernate.properties 必須在初始化代碼中加入。咱們新項目中使用的是hibernate.cfg.xml格式。不過在本文中不將細述,後續有機會再補上。spring

公司項目中,中間件主要有tomcat,webshpere,WebLogic。如下,將對項目中spring基本配置,log4j的配置,還有中間件的相關參數配置作一個初步的介紹。sql

2.spring配置——以老GIS項目爲例子

GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz方面的配置。配置的實現是經過註記配置和XML配置來合做實現。這裏,我將按照Spring的配置流程,將其餘幾個方面的配置融合其中,來進行全面解析。數據庫

2.1SpringMVC的配置

2.1.1.web.xml的配置

   Web程序中,當中間件啓動時,中間件會首先讀取web.xml中的配置。在web.xml中能夠配置監聽器,過濾器,servlet映射等等。在Spring框架中,咱們主要需配置容器初始化時讀取的spring容器配置文件的路徑以及springMVC中的分發器DispatcherServlet。apache

在GISV13的web.xml中,咱們定義了以下內容:tomcat

         

              

InitGISConfigServlet定義了容器啓動時,首先要運行這個方法。而後servletname爲MVC的這部分即是定義了springMVC的分發器以及此servlet所對應的加載配置文件的路徑。在web.xml中能夠配置多個這樣的servlet。截圖中這段xml的配置是指,當後綴名爲.htm時,則觸動springMVC的分發器。關於此servlet的配置在/WEB-INF/classes/applicationContext-servlet.xml地址下。Servlet的配置文件有其默認的地址,此處爲顯示錶示。app

2.1.2.servlet的配置文件

 

首先,在配置文件中須要定義springMVC的引用空間以及配置格式兩項。框架

2.1.2.1配置Controller

爲了支持註解格式,添加了以下配置:jsp

 

此配置會在配置文件被容器加載時,掃面添加了註解的代碼,完成MVC的相關配置。在GISV13中,運用了@Controller, @Service來定義控制層以及DAO中的實現層,經過@RequestMapping來進行URL與Controller之間的關聯。函數

2.1.2.2配置Model和View

在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還有上傳下載文件等視圖的支持。

2.2.IOC的配置

在GISV13中,IOC相關的配置也是經過註解和XML共同完成的。與容器相關的配置地址在web.xml中已經配成,在容器啓動時便會進行加裝。這裏咱們針對利用了IOC的ORM來進行講解。

2.2.1.定義JDBC.properties文件

此處主要有兩項:

 

即數據庫驅動以及數據庫地址。

2.2.2配置數據庫鏈接

對於不一樣的數據庫,spring配置數據庫時會引用不一樣的類,GISV13支持的數據庫是Oracle,因此此處引用的類是BasicDataSource。具體配置以下:

 

此配置爲容器啓動時,實例化BasicDataSource類,property中的每個對象均爲對象初始化時的屬性配置,這些屬性包含了驅動類型,鏈接地址,最大鏈接數等。在以前配置的jdbc.properties中的類容,可在此處直接使用。

2.2.3.使用數據庫

在系統代碼中,經過@Autowired,將實例化後的對象,在容器初始化時注入到註解所對應的對象中。

 

即可以將spring中包含了數據庫配置而自動實例化好後的jdbc對象注入到註解對象中。咱們通常使用的是JdbcTemplate類,此類將數據庫操做進行了淺包裝,至此增刪查改以及存儲過程的調用等,避免了代碼中屢次使用容錯機制等重複代碼。

2.3.AOP的配置

AOP是Spring的一大亮點,其涉及到的概念很是多,好比切入點,加強,橫切面等等。在使用驗證等功能中常需使用該配置。在GISV13裏也使用了此功能,主要是爲了數據庫事務管理而使用的。在Spring中,AOP的實現能夠經過通常性XML配置,AspectJ的配置還有註解配置等來實現。結合系統,我將AspectJ的配置來大體講解下。

2.3.1.配置事物管理類

 

此類中主要定義了事務管理所關聯的數據庫。DataSource的配置在上一章已描述。

2.3.2配置加強類容

 

此類中定義了加強的類容,即織入到目標對象(Target)代碼中的內容。Attributes裏定義了該加強所對應的操做。好比當方法名以find開頭是,事務管理的類型爲只讀。事務管理的屬性中還能設置傳播特性,以及事物隔離性等。若是不設置,此處的轉播特性爲::PROPGATION_REQUIRED。這個配置項的意思是說當我調用service層的方法的時候開啓一個事務(具體調用那一層的方法開始建立事務,要看aop的配置),那麼在調用這個service層裏面的其餘的方法的時候,若是當前方法產生了事務就用當前方法產生的事務,不然就建立一個新的事務。這個工做使由Spring來幫助咱們完成的。

2.3.3.定義織入點和切面

 

首先定義織入點,該配置中的意思是當在cn.com.*包下以一直到dao包中以Manager結束的類中的全部方法。

而後定義了切面,該切面首先關聯了織入點,其次關聯了加強類。即,在知足織入條件下的方法中加上加強的類容,該加強的類容在4.2中已經描述。

2.4.SpringQuartz的配置

Spring3.0之後自帶的task,能夠將它當作一個輕量級的Quartz,並且使用起來比Quartz簡單許多,可以完成任務的定時觸發。

2.4.1做業類配置

 

定義一個做業類。Value中爲須要觸發的類的引用地址。

2.4.2 觸發配置

觸發條件分爲兩種,簡單條件和複雜的條件。

2.4.2.1 簡單觸發配置

 

能夠配置觸發延遲時間和觸發間隔時間。其中ref爲須要觸發的類的配置(bean)名。

2.4.2.2 複雜觸發配置

 

複雜配置中能夠配置具體觸發的時間等。

3.Log4j的配置

常見的支持日誌的開源項目比較多,主要有:Log4j,Jul,Jcl,Slf4j,Logback等。可是,log4j以其悠久的歷史,普遍的應用,支持多種語言及平臺,強大的功能,佔據了主導的地位。

3.1依賴的包

通常須要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」,能夠提供一個統一的日誌接口,簡單了操做,同時避免項目與某個日誌實現系統緊密耦合,如此能夠自動選擇適當的日誌實現系統。

3.2 web.xml中配置

在web.xml中須要配置log4j的配置文件地址,以及監聽啓動項。

 

 

3.3 log4j.properties配置

Log4j中能夠配置日誌的輸出級別,輸出格式,日誌路徑日誌名,時間格式等。

3.3.1日誌等級

日誌等級:

ERROR:雖然發生錯誤事件,但仍然不影響系統的繼續運行。

WARN:會出現潛在錯誤的情形。

INFO:消息在粗粒度級別上突出強調應用程序的運行過程。

DEBUG:細粒度信息事件對調試應用程序是很是有幫助的。

3.3.2 appender配置

 

 其中:
org.apache.log4j.ConsoleAppender(控制檯)。
org.apache.log4j.FileAppender(文件)。
org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)。
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)。
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)。

3.3.3 Threshold配置

Layout:
  org.apache.log4j.HTMLLayout(以HTML表格形式佈局)。
  org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式)。
  org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)。
  org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)。

3.3.4 打印格式

Log4J採用的是相似C語言中的printf函數的打印格式格式化日誌信息的

%m 輸出代碼中指定的消息

%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL

%r 輸出自應用啓動到輸出該log信息耗費的毫秒數

%c 輸出所屬的類目,一般就是所在類的全名

%t 輸出產生該日誌事件的線程名

%n 輸出一個回車換行符,Windows平臺爲「\r\n」,Unix平臺爲「\n」,也就是一跳消息佔用一行

%d 輸出日誌時間點的日期或時間,緊跟一對花括號進行自定義格式

 %c 輸出所屬的類目,一般就是所在類的全名

 %l 精確到行

%x 輸出對齊

3.3.5輸出的路徑地址

在web.xml中,定義了項目名:

 

在log4j.properties中定義了輸入日誌路徑:

 

3.4代碼中使用

首先引用:

 

而後實例化:

最後使用:

4.中間件配置——以tomcat爲例

Tomcat中咱們通常進行的配置有:端口,回話鏈接數,線程數,編碼格式,文件壓縮,內存大小等。

4.1 server.xml的配置

 

4.2 內存設置

在catalina.bat文件中能夠增長tomcat的內存數,避免space heap問題。

 

                                                             ——歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

相關文章
相關標籤/搜索