一種基于SSH框架集成Axis開發(fā)并發(fā)布Web Service的方法
【專利說明】一種基于SSH框架集成Ax i s開發(fā)并發(fā)布Web Serv i ce的方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及Java Web中的Web Service技術(shù)開發(fā)領(lǐng)域,具體的說是在SSH框架基礎(chǔ)上集成Axis開發(fā)并且發(fā)布Web Service服務(wù)的方法。
【背景技術(shù)】
[0002]Web Service技術(shù)的出現(xiàn),使得運行在不同機器上的不同應(yīng)用無須借助附加的、專門的第三方軟件或硬件,就可相互交換數(shù)據(jù)或集成。依據(jù)Web Service規(guī)范實施的應(yīng)用之間,無論它們所使用的語言、平臺或內(nèi)部協(xié)議是什么,都可以相互交換數(shù)據(jù)。Web Service為整個企業(yè)甚至多個組織之間的業(yè)務(wù)流程的集成提供了一個通用機制。
[0003]Web Service主要涉及的技術(shù)有1、XML (標(biāo)準(zhǔn)通用標(biāo)記語言下的一個子集);2、SOAP (Simple Object Access Protocol,簡單對象訪問協(xié)議);3、WSDL (Web ServicesDescript1n Language, Web Service 描述語言)。
[0004]Web Service可以看成是遠程函數(shù)。WSDL可以理解成函數(shù)的聲明,它詳細的定義了函數(shù)的原型,包括函數(shù)名、入口參數(shù)、出口參數(shù)、以及與遠程地址的綁定。SOAP是WebService的訪問協(xié)議,SOAP建立在XML之上,不同的就是對XML原本沒有限制的格式加上了一些限制,需要有envelop,在envelope中,還要分header和body。如果利用SOAP開發(fā)Web Service的程序,那就需要根據(jù)WSDL的定義來自行組裝SOAP包。除了要配置SOAP請求頭文件信息,還要根據(jù)SOAP定義的消息格式組裝消息數(shù)據(jù)。這種手工組裝SOAP消息的方式,工作量較大,而且日后的系統(tǒng)維護、升級、部署都有較高的復(fù)雜度。
[0005]Web Service的接口業(yè)務(wù)實現(xiàn)層,進行具體的業(yè)務(wù)實現(xiàn)處理,在Web Service接口中調(diào)用各種業(yè)務(wù)需求的實現(xiàn)方法。由于業(yè)務(wù)的復(fù)雜性,Web Service接口中對業(yè)務(wù)實現(xiàn)方法不可避免的會存在多重依賴性,對象之間的耦合度越高,業(yè)務(wù)變更時的維護成本就越高,因此對象的設(shè)計應(yīng)使類和構(gòu)件之間的耦合最小。
[0006]SSH為Struts + Spring + Hibernate的一個集成框架,是目前較流行的一種Web應(yīng)用程序開源框架。使用該框架,將對象之間的依賴關(guān)系交給Spring,降低組件之間的耦合性,開發(fā)者可以更專注于應(yīng)用邏輯;降低了業(yè)務(wù)對象替換時所帶來的復(fù)雜性和維護成本。
[0007]Axis 全稱 Apache Extensible Interact1n System,即阿帕奇可擴展交互系統(tǒng)。Axis本質(zhì)上就是一個SOAP引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提供了一種基于SSH框架集成Axis開發(fā)并發(fā)布Web Service的方法,所述方法通過將組裝SOAP消息的工作托管給AXIS來處理,通過SSH框架降低Web Service業(yè)務(wù)邏輯層的耦合度,能夠在應(yīng)用生產(chǎn)過程中快速的架設(shè)Web Service服務(wù),降低系統(tǒng)復(fù)雜度,從而簡化維護和部署。
[0009]為了實現(xiàn)上述的目的,本發(fā)明采用了以下的技術(shù)方案: 一種基于SSH框架集成Axis開發(fā)并發(fā)布Web Service的方法,該方法包括以下的步驟:
步驟1,搭建SSH框架基礎(chǔ)開發(fā)平臺,導(dǎo)入SSH框架所依賴的Jar包到工程中,修改web-1nfo下的web.xml文件,增加struts2的配置;并在WEB-1NF/classes目錄下添加struts, xml配置文件;
步驟2,整合并且在SSH框架基礎(chǔ)上配置Axis,修改web.xml增加Axis的配置描述,并在web.xml文件下加入AxisServlet配置后,系統(tǒng)就會對以后綴為*.jws及路徑為/services/*的請求進行監(jiān)聽,遇到此類請求時將把信息交由org.apache,axis, transport, http.AdminServlet 類進行處理;Axis 和 struts2 在整合過程中,在struts, xml 增加〈constant name=〃struts.act1n, excIudePattern^ value=///servlet/AxisServlet, /services/.*〃/>配置,將Web Service的訪問路徑從struts2中攔截器中排除;
步驟3,編寫Web Service實現(xiàn)類,采用基于spring的Web Service實現(xiàn),WebService 月艮務(wù)類需要繼承 spring 提供的 org.springframework.remoting.jaxrpc.ServletEndpointSupport 類,Spring 使用該類來暴露 WebService ;
步驟 4,編寫 Web Service Deployment Descriptor 文件;
步驟5,發(fā)布Web Service服務(wù),在瀏覽器訪問在web.xml里配置好的Axis處理地址AxisServlet,打開已配置并且發(fā)布好的Web Service,單擊發(fā)布成功的接口名稱打開其對應(yīng)的WSDL文件,將WSDL文件保存后,根據(jù)該文件信息進行客戶端的Web Service調(diào)用。
[0010]本方法將組裝SOAP消息的工作托管給AXIS來處理,相較于手工實現(xiàn)SOAP協(xié)議,實現(xiàn)更快捷,如果有新的接口業(yè)務(wù)要實現(xiàn)時,只需將所要發(fā)布的Web Service方法配置到WSDD文件中即可,不需額外手工編寫WSDL文件。
[0011]本方法實現(xiàn)了資源的可配置和易管理,降低了使用資源雙方的依賴程度。通過Spring提供的1C將Web Service接口與具體業(yè)務(wù)實現(xiàn)進行分離,將對象之間的依賴關(guān)系交給Spring,降低Web Service接口與接口業(yè)務(wù)實現(xiàn)層之間的親合性。在接口業(yè)務(wù)需求變更時只需要將新的業(yè)務(wù)實現(xiàn)通過Spring注入到接口中即可,降低了業(yè)務(wù)對象變更或替換時所帶來的復(fù)雜性和維護成本。
【附圖說明】
[0012]圖1為本發(fā)明方法的流圖。
[0013]圖2為發(fā)布成功的接口的示意圖。
【具體實施方式】
[0014]如圖1所示的一種基于SSH框架集成Axis開發(fā)并發(fā)布Web Service的方法,本方法共包含5個步驟。
[0015]步驟1,搭建SSH框架基礎(chǔ)開發(fā)平臺,【具體實施方式】如下:
導(dǎo)入SSH框架所依賴的Jar包到工程中,修改web-1nfο下的web.xml文件,增加struts2的配置:
<filter> <fiIter_name>struts2〈/fiIter_name>
<filter-class>
org.apache, s t r u t s 2.dispatcher, n g.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<fiIter_mapping>
<fiIter_name>struts2〈/fiIter_name>
<url_pattern>/氺</url_pattern>
</fiIter_mapping>
StrutsPrepareAndExecuteFilter過濾器的主要功能是對request請求轉(zhuǎn)發(fā)到對應(yīng)的act1n去處理,是struts2的核心過濾器。
[0016]在WEB-1NF/classes 目錄下添加 struts, xml 配置文件:
<struts>
〈constant name=,,struts, convent1n, act1n, suffix,, value=,,Controller,,/〉〈constant name=,,struts, convent1n, default, parent, package,, value=〃nbol〃/>〈!一搜索此配置下的所有包中的類一>
〈constant name = ,, strut s.convent1n, package, locators.basePackage,,value=,,net.nbol〃/>
〈! 一 act1n 存放的根包,如果不配,默認為 struts、struts2、act1n、act1ns
—>
〈constant name=,,struts, convent1n, package, locators,, value=,,controller,,
/>
〈!一返回頁面的根路徑一>
〈constant name=,,struts, convent1n, result, path,, value=〃/WEB_INF/〃/>
</struts)
配置Spring,修改web-1nfo下的web.xml文件增加對spring的配置:
〈listener〉
<listener_class>
org.springframework.web.context.ContextLoaderListener </listener_class>
〈/listener〉
<context-param>
〈param_name>contextConfigLocat1n〈/param_name>
<param_value>classpath氺:spring/氺.xml</param-value>
</context-param>
ContextLoaderListener監(jiān)聽器的作用就是啟動Web容器時,自動裝配Applicat1nContext 的配置信息。
[0017]在WEB-1NF/classes 目錄下添加 spring 配置文件 applicat1nContext.xml:<aop: aspectj-autoproxy />
〈context:annotat1n-config />
〈context:component-scan base_package=〃net.nbol〃 />
<tx: annotat1n-driven />
配置hibernate,由于hibernate在SSH框架中負責(zé)數(shù)據(jù)持久化,在Web Service開發(fā)中并不是必須的,所以這里不具體描述如何配置hibernate。
[0018]步驟2,整合并且在SSH框架基礎(chǔ)上配置Axis:
修改web.xml增加Axis的配置描述:
<display-name>Apache-Axis</display-name>
〈listener〉
<listener-class>org.apache, axis, transport, http.AxisHTTPSess1nListener</listener_class>
〈/listener〉
〈!一服務(wù)管理—>
<servlet>
<servlet-name>AdminServlet</servlet_name>
<servlet-class>
or