1.Axis2
Axis是apache的下壹個開源webservice開發組件,它出現得更早,也更成熟。本文主要介紹Axis+eclipse開發Web服務。當然,Web服務可以在沒有eclipse的情況下開發和發布,但是使用eclipse會更方便。
(1)下載eclipse的Java EE版本。
②下載axis2。
(3)下載eclipse的axis2插件。
Axis2_Codegen_Wizard
Axis2 _服務_歸檔程序
建議使用1.3版本。
eclipse安裝axis2插件。
1)在任意目錄下新建壹個Axis2文件夾,在該文件夾下創建壹個eclipse目錄,並在eclipse目錄下創建壹個plugins目錄和壹個features目錄,例如:d:\ program software \ Eclipse-SVN \ axis 2 \ Eclipse;
2)對下載的axis2插件進行解壓縮,並將解壓縮後的文件放入新建的eclipse插件目錄中;
3)在%eclipse_home%目錄下新建壹個links目錄,並在links目錄下新建壹個axis2.link文件,內容如下:path = d:\ program software \ eclipse-SVN \ axis 2;
4)重啟eclipse並單擊文件-新建-其他。如果您看到Axis2向導,則意味著插件安裝成功。
(5)安裝軸2。
(6)使用eclipse構建壹個新的web項目並創建壹個普通的java類,至少包括壹個方法。
發布網絡服務
1)點擊eclipse的文件-新建-其他,打開Axis2向導,選擇Axis2服務歸檔程序,然後選擇下壹步;
2)選擇類文件位置,即類文件的存儲路徑。註意:只選擇類目錄,不包括包文件夾,然後選擇Next
3)選擇跳過WSDL,然後選擇下壹步。
4)從下壹步開始選擇要包含在服務存檔中的服務XML文件,並選中自動生成服務XML;
5)服務名稱-填寫您的服務名稱,類名-填寫類名,包括包名,然後單擊加載,再單擊完成,webservice將成功發布;
6)然後轉到% Tomcat _ home %/Web apps/axis 2/we B- INF/Services查看是否有附加的。aar文件;
註意:以上方法是發布到axis2.war包,也可以復制生成的。aar文件到您的實際應用程序中。同時,您還可以使用eclipse的create webservice功能發布您的webservice,並選擇axis2來生成您的webservice,這樣webservice將部署在您的應用程序中。
2.Apche CXF
CXF開發webservice也很方便簡單,它與spring的集成可以說非常好。舉壹個CXF開發webservice的例子。
1)在eclipse中創建新的web項目並導入依賴包,如下圖所示:
2)編寫壹個接口,例如:
註意:CXF開發的webservice的接口中的方法的參數必須是這樣的,否則當客戶端調用時CXF服務器將不會接收到參數的值。name:參數名可選(建議寫),targetNamespace:命名空間必須填寫,默認為包名的逆序,mode:參數類型,in表示輸入。
3)編寫實現類來實現接口的方法;
4)與spring集成並編寫壹個bean文件,如cxf-beans.xml,內容如下:
Cxf-beans.xml代碼
& lt?xml版本=“1.0“編碼=“UTF-8“?& gt
& lt導入資源=“class path:META-INF/cxf/cxf . XML“/& gt;
& lt導入資源=“class path:META-INF/cxf/cxf-extension-soap . XML“/& gt;
& lt導入資源=“class path:META-INF/cxf/cxf-servlet . XML“/& gt;
& ltjaxws:endpoint id =“Vote“implementor =“com . zcl . cxf . service . Vote impl“address =“/Vote“/& gt;
& lt/beans & gt;
這個文檔比較容易理解,所以我就不解釋了。
5)配置CXFServlet
在web.xml文件中配置CXFServlet並加載cxf-beans.xml文件,內容如下:
Web.xml代碼
ID =“web app _ ID“version =“2.5“& gt。
& lt上下文參數& gt
& ltparam-name & gt;contextConfigLocation & lt/param-name & gt;
& lt參數值& gtwe B- INF/cxf-beans . XML & lt;/param-value & gt;
& lt/context-param & gt;
& lt監聽器& gt
& lt偵聽器類& gtorg . spring framework . web . context . context loader listener & lt;/listener-class & gt;
& lt/listener & gt;
& ltservlet & gt
& ltservlet-name & gt;cxf & lt/servlet-name & gt;
& ltservlet-class & gt;org . Apache . cxf . transport . servlet . cxf servlet & lt;/servlet-class & gt;
& lt啟動時加載& gt1 & lt;/load-on-startup》
& lt/servlet & gt;
& ltservlet映射& gt
& ltservlet-name & gt;cxf & lt/servlet-name & gt;
& lturl模式& gt/services/* & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
& lt/we B- app & gt;
將項目部署到中間件,比如tomcat,然後就可以訪問webservice了。
3.JDK發展網絡服務
1)編寫如下Java類:
Jdkwebservice.java電碼
軟件包演示;
導入javax . jws . web param;
導入javax . jws . web service;
導入javax . XML . ws . endpoint;
@網絡服務
公共類JdkWebService {
return“照做就是了,“+ value +“!“;
}
公共靜態void main(String[] args) {
}
}
2)運行java類,可以在瀏覽器上訪問webservice。
註意:這種方法在開發web項目時不太友好。我們可以編寫壹個servlet類,並在servlet類的初始化方法中發布壹個webservice,這樣我們的中間件服務器將在webservice啟動時幫助我們自動啟動它。
4)xfire
開發web服務有許多框架,每個框架都有自己的優勢。最近,我練習用xfire開發web服務。下面是壹個開發web服務的小例子,希望對初學者有所幫助。
1.創建壹個名為TestWebService的新java web項目,將xfire相關的jar包添加到lib目錄中,並編寫接口類和實現類。
Java代碼
包com . lamp . service;
公共接口消息服務{
公共字符串getName(字符串名稱);
}
【java】查看plaincopyprint?
包com . lamp . service;
公共接口消息服務{
公共字符串getName(字符串名稱);
}
實現類
Java代碼
包com . lamp . service . impl;
導入com . lamp . service . messageservice;
公共類MessageServiceImpl實現MessageService {
公共字符串getName(字符串名稱){
返回“hellow“+name+“,歡迎來到web service world“;
}
}
【java】查看plaincopyprint?
包com . lamp . service . impl;
導入com . lamp . service . messageservice;
公共類MessageServiceImpl實現MessageService {
公共字符串getName(字符串名稱){
返回“hellow“+name+“,歡迎來到web service world“;
}
}
在src目錄下新建壹個文件夾META-INF,然後在其下新建壹個文件夾xfire,在xfire目錄下新建壹個配置文件services.xml。
Xml代碼
& lt?xml版本=“1.0“編碼=“UTF-8“?& gt
& lt服務& gt
& ltname & gt消息服務& lt/name & gt;
& ltserviceClass & gtcom . lamp . service . messageservice & lt;/service class & gt;
& lt實現類& gtcom . lamp . service . impl . messageservice impl & lt;/implementation class & gt;
& lt/service & gt;
& lt/beans & gt;
【xml】查看plaincopyprint?
& lt?xml版本=“1.0“編碼=“UTF-8“?& gt
& lt服務& gt
& ltname & gt消息服務& lt/name & gt;
& ltserviceClass & gtcom . lamp . service . messageservice & lt;/service class & gt;
& lt實現類& gtcom . lamp . service . impl . messageservice impl & lt;/implementation class & gt;
& lt/service & gt;
& lt/beans & gt;
最後,在web.xml中配置xfire的servlet。
Xml代碼
& ltservlet & gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& ltservlet-class & gt;
& lt/servlet-class & gt;
& lt/servlet & gt;
& ltservlet映射& gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& lturl模式& gt/servlet/XFireServlet/* & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
& ltservlet映射& gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& lturl模式& gt/services/* & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
【xml】查看plaincopyprint?
& ltservlet & gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& ltservlet-class & gt;
& lt/servlet-class & gt;
& lt/servlet & gt;
& ltservlet映射& gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& lturl模式& gt/servlet/XFireServlet/* & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
& ltservlet映射& gt
& ltservlet-name & gt;XFireServlet & lt/servlet-name & gt;
& lturl模式& gt/services/* & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
這樣服務器端開發就完成了,現在開始客戶端開發。
創建新的java項目還引入了xfire相關的jar。我使用ant在客戶端生成代理對象,並在項目路徑下創建壹個新的build.xml。密碼是
Xml代碼
& lt?xml版本=“1.0“編碼=“UTF-8“?& gt
& lt項目名稱=“web service“basedir =“,“default =“gen-web service“& gt;
& lt屬性文件=“build . properties“& gt;
& lt/property & gt;
& ltpath id =“project-class path“& gt;
& lt文件集目錄=“$ { lib . dir }“& gt;
& lt包括名稱=“* */*。jar“/》;
& lt/fileset & gt;
& lt/path & gt;
& lttarget name =“gen-web service“& gt。
& lttaskdef name =“wsgen“class name =“org . codehaus . xfire . gen . wsgentask“class pathref =“project-class path“/& gt。
& ltwsgen輸出目錄=“$ { src . dir }“
wsdl =“$ { wsdl . dir }“package =“com . lamp . ws . client“overwrite =“true“/& gt;
& lt/target & gt;
& lt/project & gt;
【xml】查看plaincopyprint?
& lt?xml版本=“1.0“編碼=“UTF-8“?& gt
& lt項目名稱=“web service“basedir =“,“default =“gen-web service“& gt;
& lt屬性文件=“build . properties“& gt;
& lt/property & gt;
& ltpath id =“project-class path“& gt;
& lt文件集目錄=“$ { lib . dir }“& gt;
& lt包括名稱=“* */*。jar“/》;
& lt/fileset & gt;
& lt/path & gt;
& lttarget name =“gen-web service“& gt。
& lttaskdef name =“wsgen“class name =“org . codehaus . xfire . gen . wsgentask“class pathref =“project-class path“/& gt。
& ltwsgen輸出目錄=“$ { src . dir }“
wsdl =“$ { wsdl . dir }“package =“com . lamp . ws . client“overwrite =“true“/& gt;
& lt/target & gt;
& lt/project & gt;