java程序員的業務場景基礎知識,JBPM,ANT,FreeMarker

用來描述發佈的接口(服務)

soap(simple object access protocol)

是xml和http的結合,是webservice數據通信的協議

uddi 用來管理,查詢webService的服務

(沒必要主動說)

webservice的具體三種實現方式(框架)或者三種實現框架的區別

1. Axis2:可以用多種語言開發,

是一個重量級框架,功能非常強大,

但是它的性能比較低。

2. Xfire:它相比Axis2來說是一個輕量級框架,

它的性能要比Axis2高。

3. cxf:是Xfire的升級版,就好比是,

struts2是webwork的升級,

然後cxf和spring集成起來非常方便,簡易,

性能方面也要比Xfire高。

【注】jdk6 自帶的webservice jws

(主動說)

業務場景

我在以前做項目的時候,其中遇到一個功能,

需要進行兩個項目之間的數據的傳輸,

項目經理讓我去完成這個任務,我根據以往的項目經驗,

想到兩種解決方案,第一種

就是開放另外一個項目的數據庫的權限給我,

然後我直接通過訪問另外一個項目的數據

庫,來得到需要的信息,但後來我分析了下,覺的這種方式不安全,

而且因為當時

這個項目是另外一家公司負責在做,所以數據庫裡面的表結構,

以及以後牽涉

到的責任問題都很多,所以我就採用了第二種方案,

即通過webservices的方式,進行

異構系統之間數據信息的傳遞,webservices的具體實現,

有xfire,cxf,axis2,

我根據以往的項目經驗,瞭解到cxf是xfire的升級版本,適用於java語言,

xfire/cxf 性能比axis2要高,並且和spring整合起來也比較方便,

而axis2支持更多的語言,

性能相對於cxf要低,通過上面分析,

結合我們目前的兩個項目都是基於java

語言的,所以我採用cxf這種方式實現了兩個項目之間數據的傳遞,

我們為了保證

webservice的安全性我們採用了基於

WS-Security標準的安全驗證(使用CXF回調函數)。

(沒必要主動說)

webservice服務端配置流程

首先在web.xml中引入cxfServlet核心類,

指定對以/cxf開頭的url路徑提供webservice服務,

之後我們在要發佈成webservice接口上添加@Webservice 註解,

而且還要在實現類上添加同樣的webservice註解並且要說明實現了哪個接口,

之後在spring-webservice.xml中發佈webservice服務,

通過jaxws:endpoint這個標籤,

並且在標籤配置implementor和address來表明實現服務的類,

以及發佈的地址,

最後在瀏覽器中輸入相關的webservice地址?wsdl來驗證服務是否發佈成功。

(沒必要主動說)

webservice客戶端的配置

首先通過wsdl2java根據發佈的webservice服務端地址的wsdl

生成客戶端調用的中間橋樑java類,

將生成的java類拷貝到客戶端項目中,

配置spring-client.xml文件,

通過jaxws:client定義一個bean,

並通過address屬性指明要訪問的webservice的服務地址,

通過serviceClass指明充當中間橋樑的服務類,之後獲取該bean,

就可以通過它來訪問發佈的webservice接口中的方法。

十八、oracle索引概述

索引呢 是與表相關的一個可選結構,可以提高sql語句的檢索效率,相當於我們的字典目錄 ,可以快速進行定位 ,所以可以減少磁盤I/O, 但是因為索引在物理與邏輯上都是獨立於表的數據 它會佔用一定的物理空間(額外磁盤空間) 所以並不是索引越多越好,而我們應該根據業務需求去創建索引,而且進行增刪改操作時 oracle又要自動維護索引 所以在一定程度上也降低了維護速度,而且我們在創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加,我們一般創建索引呢 是這樣創建的 create index 索引名 on 表名(字段),索引又分為普通索引 唯一索引(unique) 單個索引 複合索引(又叫組合索引,在索引建立語句中同時可包含多個字段名),順序索引,散列索引,位圖索引。

十九、oracle存儲過程

存儲過程就是封裝一些sql的集合,也就是一條條的sql語句,過程的優點就是簡化了sql命令加上它是預編譯的,所以它的執行效率和性能較高,再者,如果不調用過程的話就要和數據庫發生多次交互,調用過程只需傳一個命令所有的那些執行邏輯都在數據庫端執行,所以說它降低了網絡的通信量,其次,存儲過程大大提高了安全性,這就是優點

缺點呢,就是不同的數據庫對過程支持的關鍵字支持的關鍵字都是不一樣的,所以它的移植性是非常差的,再者,它的維護性難度也比較大,因為它沒有專業的調試和維護工具,所以說它維護起來比較麻煩,這就是存儲過程的基本概述.

二十、Junit 業務場景

在我們開發項目的時候為了提高代碼的性能和保證邏輯正確性,在我們編寫代碼後往往都要進行單元測試,來驗證代碼,當時我們公司開發人員全部使用的main方法來進行驗證,但是使用mian的最大缺點就是不能將多個類同時進行驗證,驗證的結果不直觀,測試複雜(每個類都要寫main方法,單個運行),一定程度上浪費時間,所有我和項目經理提議使用專業測試工具Junit來進行測試,因為Junit是一個Java語言的單元測試框架 ,測試簡單,不僅可以提供工作效率和代碼的質量,也提高團隊的合作能力,我提議後我們進行了Junit的培訓使用Junit4加註解的方式來測試。

二十一、Apache+Tomcat 實現負載均衡及seesion複製

當我們tomcat訪問量大,線程連接數不夠時,我們考慮到了tomcat的負載均衡來分擔過多的訪問.性能方面負載均衡也能利用多臺tomcat來增大內存量,

流程,準備工作apache,Jk_mod,tomcat,在apache的conf/httpd.conf文件中 使用include 標籤引入我們自定義的一個mood_jl.conf,在modules中引入下載的k_mod-apache-X.X.XX.so文件,在其中引入我們的.so,及work.properties文件,及指定負載分配控制器controller,在work.properties文件中worker.list=controller,tomcat1,tomcat2指定service,worker.tomcat1.port Ajp端口號,type 是ajp,host為指定ip,lbfactor 指定分配權重值越大分擔請求越多,worker.controller.type=lbworker.controller.balanced_workers=tomcat1,tomcat2 指定分擔請求的tomcat Session的複製在tomcat中service.xml中Engine標籤加入 jvmRoute 值為work,properties中指定的tomcat名稱,然後打開

我們在做這個項目時,我們考慮到服務器性能的問題,我們最開始想到使用縱向擴展,來增加硬件的配置提高其性能,但這樣做比較耗費資金,而且服務器內存空間也是有限的;所以後來就想到使用橫向擴展來達到這一目的

當時我們的apache是通過jk藉助於ajp協議與tomcat進行通信的,在我們不進行負載均衡之前,那所有的請求都由一臺tomcat進行處理,這樣會使我們的tomcat所承受的壓力增大,而我們進行負載均衡之後,同樣數量的請求經過apache和jk將其分發到多臺tomcat進行處理,從而降低每臺tomcat所承受的壓力,而且當其中一臺機器宕機時,其他機器還可以繼續提供服務,保證服務不間斷。

在這個過程中,我們遇到了session問題,然後我此昂到用session複製來解決這個問題;

在apache的配置文件中增加session粘帶特性:

worker.lb.sticky_session=1

worker.lb.sticky_session_force=0

Tomcat的配置

修改server.xml文件:

增加jvmRoute=”tomcat2” *. jvmRoute賦的值為worker.properties中配置的相應的server名一致

將此配置的註釋去掉

修改應用的web.xml文件

在應用中的web.xml文件中增加

如果這樣做,當第一次訪問的時候,會把所以數據全部緩存到第一臺服務器上,通過web配置文件,會把第一臺緩存的數據全部複製到第二胎服務器上,這樣做就加大網路通信量,導致阻塞,所以我們就想到了可以通過memcached分佈式緩存來存取session從而解決上述問題。

二十二、Ant業務場景

Ant是基於java語言編寫的,因此具有跨平臺的特性,此外還具有簡潔方便,靈活

配置的特性,因此我就在XX項目中使用ant進行項目的編譯,打包,部署操作。使用ant

之後,如果我們在客戶那裡修改代碼後,就可以直接使用ant進行編譯,打包,部署,而不需要為了編譯,打包,部署專門在客戶那裡安裝eclipse.此外使用ant也可以直接和svn進行交互,下載源碼的同時進行編譯,打包,部署。

二十三、maven業務場景

maven業務場景

前段時間在研究maven,知道maven是一個項目管理工具,其核心特點就是通過

maven可以進行包的依賴管理,保證jar包版本的一致性,以及可以使多個項目共享

jar包,從而能夠在開發大型j2ee應用的時候,減小項目的大小,並且和ant

比起來,maven根據“約定優於配置”的特性,可以對其項目的編譯打包部署進行了

更為抽象的封裝,使得自己不需要像ant那樣進行詳細配置文件的編寫,直接使用

系統預定好的mvn clean,compile,test,package等命令進行項目的操作。於是我就

在XX項目中採用了maven,為了保證團隊中的成員能夠節省下載jar包所需要的時間,

於是我就採用nexus搭建了在局域網內的maven私服,然後通過配置settings.xml中

建立mirror鏡像,將所有下載jar包的請求都轉發到maven私服上,之後通過在pom.xml

即(project object model)中配置項目所依賴的jar包,從而達到在構建項目的時候,

先從本地倉庫中查找,如果不存在從內部私服查找,如果不存在最後再從外網central

服務器查找的機制,達到了節省下載帶寬,提高開發效率,以及jar包重用的目的。

ant業務場景

ant是基於java語言編寫的,因此具有跨平臺的特性,此外還具有簡潔方便,靈活

配置的特性,因此我就在XX項目中使用ant進行項目的編譯,打包,部署操作。使用ant

之後,如果我們在客戶那裡修改代碼後,就可以直接使用ant進行編譯,打包,部署,

而不需要為了編譯,打包,部署專門在客戶那裡安裝eclipse.此外使用ant也可以

直接和svn進行交互,下載源碼的同時進行編譯,打包,部署。

maven的常用命令

mvn eclipse:clean eclipse:eclipse -Dwtpversion=2.0

mvn clean package

maven的生命週期是獨立的,但是生命週期下的階段是相互關聯並且延續的。

maven的生命週期

clean(清理):clean;default(默認):compile,test,packageinstall;site(站點)

二十四、Servlet的概述:

Servlet是一個web容器,我們通常用的servlet是httpservlet,而httpservlet又是繼承於genericservlet,而genericservlet又實現了servlet接口

servlet的生命週期是 :先進行實例化,然後是初始化,然後是提高服務,然後銷燬,最後不可用,在這五個生命週期,其中,初始化是調用的init方法,這個方法只有一個,而提高服務的時候調用的是service方法,而我們具體在我們所寫的這個方法中,因為我們繼承了httpservlet,其實就是對應了doGet(),doPost(),這種方法,然後據我瞭解,servlet是單例的。非線程安全的,我們通常有一下幾種方案來解決:

第一種,繼承SingleThreadModel但是這樣每次都會創建一個新的servlet實例,但這樣消耗服務器的內存,降低了性能,並且這個接口現在已經過時了,不推薦使用。

第二種:我們儘量避免使用全局變量,就我個人而言,我比較喜歡使用這種方法。

第三種,我們可以通過使用ThreadLocal, 內部結構是一個Map結構,用當前線程作為key,他會創建多個副本。get,set方法

第四種,我們當然還可以來加鎖,進行解決線程問題。

而且我還知道,向我們這種常用的MVC框架,struts1,spring這些MVC框架,都是基於servlet發展而來的,就比如struts1 的核心總控制器是ActionServlet,而springMVC的前端總控制器是dispatchServlet,在項目我們曾經用serlet來生成 圖片驗證碼的,防止用戶進行暴力破解

servlet的配置文件 web.xml

ImageCodeServlet

org.leopard.code.ImageCodeServlet

ImageCodeServlet

/d

描述:

我在web.xml中,我首先需要寫一個servlet標籤,servlet標籤中有兩個子標籤,一個叫servlet-name,這個name可以隨便起,但是要保證唯一性,除此之外,在這個servlet-name下有一個servlet-class,這個servlet-class對應的就是我後臺提高服務的servlet,除此之外還有一個servlet-mapping,這個裡邊首先有一個servl-name。,這個servl-name首先要保證和上邊的servlet-name保持一致,除此之外還有一個url-pattern,這是一個虛擬路徑,是用來發送請求的url地址

java程序員的業務場景基礎知識,JBPM,ANT,FreeMarker

業務場景篇未完待續,敬請關注期待


分享到:


相關文章: