日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 开发Web Service的几种方式

發(fā)布時間:2023/12/4 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 开发Web Service的几种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

webservice的應用已經(jīng)越來越廣泛了,下面介紹幾種在Java體系中開發(fā)webservice的方式,相當于做個記錄。

1.Axis2

Axis是apache下一個開源的webservice開發(fā)組件,出現(xiàn)的算是比較早了,也比較成熟。這里主要介紹Axis+eclipse開發(fā)webservice,當然不用eclipse也可以開發(fā)和發(fā)布webservice,只是用eclipse會比較方便。

?

(1)下載eclipse的Java EE版本

http://www.eclipse.org/downloads/

?

(2)下載axis2

http://axis.apache.org/axis2/java/core/download.cgi

?

(3)下載eclipse的axis2插件

Axis2_Codegen_Wizard

Axis2_Service_Archiver

http://axis.apache.org/axis2/java/core/tools/index.html

推薦使用1.3的版本

?

(4)eclipse安裝axis2插件

1)在任意目錄下新建一個Axis2文件夾,在該文件夾下新建eclipse目錄,在eclipse目錄中新建plugins目錄和features目錄,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;

2)把下載的axis2插件解壓,并把解壓的文件放到新建的eclipse的plugins目錄下;

3)在%eclipse_home%的目錄下新建links目錄,并在links目錄下新建axis2.link文件,內(nèi)容為:path=D:\programSoftware\eclipse-SVN\Axis2;

4)重啟eclipse,點擊·file-new-other,如果看到Axis2 Wizards,則表明插件安裝成功。

?

(5)安裝axis2

下載Axis2的WAR Distribution并解壓,把axis2.war包放置到%TOMCAT_HOME%/webapps下,啟動tomcat,訪問http://localhost:port/axis2,Axis2安裝成功。

?

(6)使用eclipse新建web工程,創(chuàng)建一個普通java類,至少包含一個方法。

?

(7)發(fā)布webservice

1)點擊eclipse的File-New-other,打開Axis2 Wizards,選擇Axis2 Service Archiver,然后Next;

2)選擇Class File Location,也就是類文件存放路徑,注意:只選到classes目錄,不要包括包文件夾,然后Next;

3)選擇Skip WSDL,然后Next

4)一路Next到Select the Service XML file to be included in the Service archive,勾選Generate theservice xml automatically;

5)Service Name-填寫你的service名稱,Class Name-填寫類名稱,要包括包名,然后點擊load,然后點擊Finish,這時webservice就發(fā)布成功了;

6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了一個.aar的文件;

7)訪問http://localhost:8085/axis2/services/類名?wsdl 就可看到生成的wsdl文件了。

注意:以上的方式是發(fā)布到axis2.war包中,你也可以把生成.aar文件copy到你的實際應用中,同時,你也可以使用eclipse的create webservice功能發(fā)布你的webservice,選擇axis2生成你的webservice,這樣webservice就會部署到你的應用中了。

?

2.Apche CXF

CXF開發(fā)webservice也是比較方便和簡單的,它和spring的集成可以說是非常地好。舉一個CXF開發(fā)webservice的例子吧。

1)在eclipse中新建一個web工程,導入依賴包,如圖:

?

2)編寫一個接口,如:

public String test(@WebParam(name="value", targetNamespace = "http://service.cxf.zcl.com/", mode = WebParam.Mode.IN)String value);

注意:CXF開發(fā)的webservice,接口中的方法的參數(shù)一定要以這種方式,否則客戶端調(diào)用的時候CXF服務端會接收不到參數(shù)的值,name:參數(shù)名稱,可不寫(建議寫上),targetNamespace:命名空間,一定要填寫上,默認是包名反過來的順序,mode:參數(shù)類型,IN表示輸入。

3)編寫一個實現(xiàn)類,實現(xiàn)接口的方法;

4)和spring的集成,編寫一個bean文件,如:cxf-beans.xml,內(nèi)容如下:

?

Cxf-beans.xml代碼??
  • <?xml?version="1.0"?encoding="UTF-8"??> ??
  • <beans?xmlns="http://www.springframework.org/schema/beans"??
  • ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ????xmlns:jaxws="http://cxf.apache.org/jaxws"??
  • ????xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd ??
  • ????????????????????????http://cxf.apache.org/jaxws?http://cxf.apache.org/schemas/jaxws.xsd"> ??
  • ??
  • ????<import?resource="classpath:META-INF/cxf/cxf.xml"?/> ??
  • ????<import?resource="classpath:META-INF/cxf/cxf-extension-soap.xml"?/> ??
  • ????<import?resource="classpath:META-INF/cxf/cxf-servlet.xml"?/> ??
  • ???? ??
  • ????<jaxws:endpoint?id="vote"?implementor="com.zcl.cxf.service.VoteImpl"?address="/Vote"?/> ??
  • </beans>??
  • ?這個文件比較容易理解,就不解釋了。

    5)配置CXFServlet

    在web.xml文件中配置CXFServlet,加載cxf-beans.xml文件,內(nèi)容如下:

    ?

    Web.xml代碼??
  • <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ????xmlns="http://java.sun.com/xml/ns/javaee"?xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"??
  • ????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"??
  • ????id="WebApp_ID"?version="2.5"> ??
  • ??
  • ????<context-param> ??
  • ????????<param-name>contextConfigLocation</param-name> ??
  • ????????<param-value>WEB-INF/cxf-beans.xml</param-value> ??
  • ????</context-param> ??
  • ???? ??
  • ????<listener> ??
  • ????????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> ??
  • ????</listener> ??
  • ???? ??
  • ????<servlet> ??
  • ????????<servlet-name>cxf</servlet-name> ??
  • ????????<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> ??
  • ????????<load-on-startup>1</load-on-startup> ??
  • ????</servlet> ??
  • ????<servlet-mapping> ??
  • ????????<servlet-name>cxf</servlet-name> ??
  • ????????<url-pattern>/services/*</url-pattern> ??
  • ????</servlet-mapping> ??
  • </web-app>??
  • ?把工程部署到中間件,如tomcat,就可以訪問該webservice了。

    ?

    3.JDK開發(fā)webservice

    1)編寫一個Java類,如下:

    ?

    Jdkwebservice.java代碼??
  • package?demo; ??
  • ??
  • import?javax.jws.WebParam; ??
  • import?javax.jws.WebService; ??
  • import?javax.xml.ws.Endpoint; ??
  • ??
  • @WebService ??
  • public?class?JdkWebService?{ ??
  • ??
  • ????public?String?doSomething(@WebParam(name="value",?targetNamespace?=?"http://demo/",?mode?=?WebParam.Mode.IN)String?value)?{ ??
  • ????????return?"Just?do?it,"?+?value?+?"!"; ??
  • ????} ??
  • ???? ??
  • ????public?static?void?main(String[]?args)?{ ??
  • ????????Endpoint.publish("http://localhost:8080/jdkwsdemo/demo.JdkWebService",?new?JdkWebService()); ??
  • ????} ??
  • }??
  • ?2)運行該java類,在瀏覽器上就可以訪問該webservice了。

    注意:開發(fā)web工程的時候,這種方法不太友好。我們可以編寫一個servlet類,在servlet類的初始化方法中發(fā)布webservice,這樣我們的中間件服務器啟動的時候就會幫我們自動webservice了。

    ?

    ?4)? xfire

    開發(fā)WebService的框架不少,每個框架都有各自的有點,最近我用xfire練習開發(fā)WebService,下面是開發(fā)WebService的小例子,希望對入門的人有些小幫助?
    1.新建一個java web project命名為TestWebService,將xfire相關(guān)的jar包添加到lib目錄中,寫接口類和實現(xiàn)類?
    Java代碼??
  • package?com.lamp.service; ??
  • ??
  • public?interface?MessageService?{ ??
  • ????public?String?getName(String?name); ??
  • }??
  • [java]?view plain?copy ?print?
  • package?com.lamp.service;??
  • ??
  • public?interface?MessageService?{??
  • ????public?String?getName(String?name);??
  • }??

  • 實現(xiàn)類?
    Java代碼??
  • package?com.lamp.service.impl; ??
  • ??
  • import?com.lamp.service.MessageService; ??
  • ??
  • public?class?MessageServiceImpl?implements?MessageService?{ ??
  • ??
  • ????public?String?getName(String?name)?{ ??
  • ????????return?"hellow?"?+?name?+?",?welcome?to?WebService?world"; ??
  • ????} ??
  • ??
  • }??
  • [java]?view plain?copy ?print?
  • package?com.lamp.service.impl;??
  • ??
  • import?com.lamp.service.MessageService;??
  • ??
  • public?class?MessageServiceImpl?implements?MessageService?{??
  • ??
  • ????public?String?getName(String?name)?{??
  • ????????return?"hellow?"?+?name?+?",?welcome?to?WebService?world";??
  • ????}??
  • ??
  • }??


  • 在src目錄下新建文件夾META-INF,然后再在其下新建文件夾xfire,在xfire目錄下新建配置文件services.xml?
    Xml代碼??
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <beans?xmlns="http://xfire.codehaus.org/config/1.0">??
  • ??<service>??
  • ????<name>MessageService</name>??
  • ????<serviceClass>com.lamp.service.MessageService</serviceClass>??
  • ????<implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass>??
  • ??</service>??
  • </beans>??
  • [xml]?view plain?copy ?print?
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <beans?xmlns="http://xfire.codehaus.org/config/1.0">??
  • ??<service>??
  • ????<name>MessageService</name>??
  • ????<serviceClass>com.lamp.service.MessageService</serviceClass>??
  • ????<implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass>??
  • ??</service>??
  • </beans>??

  • 最后在web.xml中配置xfire的servlet?
    Xml代碼??
  • <servlet>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<servlet-class>??
  • ????????????org.codehaus.xfire.transport.http.XFireConfigurableServlet ??
  • ????????</servlet-class>??
  • ????</servlet>??
  • ??
  • ????<servlet-mapping>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<url-pattern>/servlet/XFireServlet/*</url-pattern>??
  • ????</servlet-mapping>??
  • ??
  • ????<servlet-mapping>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<url-pattern>/services/*</url-pattern>??
  • ????</servlet-mapping>??
  • [xml]?view plain?copy ?print?
  • <servlet>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<servlet-class>??
  • ????????????org.codehaus.xfire.transport.http.XFireConfigurableServlet??
  • ????????</servlet-class>??
  • ????</servlet>??
  • ??
  • ????<servlet-mapping>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<url-pattern>/servlet/XFireServlet/*</url-pattern>??
  • ????</servlet-mapping>??
  • ??
  • ????<servlet-mapping>??
  • ????????<servlet-name>XFireServlet</servlet-name>??
  • ????????<url-pattern>/services/*</url-pattern>??
  • ????</servlet-mapping>??

  • 項目部署后在瀏覽器中通過http://localhost:8080/TestWebService/services訪問看到遠程訪問的接口,并得到wsdl為http://localhost:8080/TestWebService/services/MessageService?wsdl?

    這樣服務器端開發(fā)完畢,現(xiàn)在開始客戶端的開發(fā)?
    新建一個java project也將xfire相關(guān)的jar引入,我用ant在客戶端生成代理對象,在項目路徑下新建build.xml,代碼為?
    Xml代碼??
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • ??
  • <project?name="WebService"?basedir="."?default="gen-webservice">??
  • ??
  • ????<property?file="build.properties">??
  • ????</property>??
  • ??
  • ????<path?id="project-classpath">??
  • ????????<fileset?dir="${lib.dir}">??
  • ????????????<include?name="**/*.jar"?/>? ??
  • ????????</fileset>??
  • ????</path>??
  • ??
  • ????<target?name="gen-webservice">??
  • ????????<taskdef?name="wsgen"?classname="org.codehaus.xfire.gen.WsGenTask"?classpathref="project-classpath"?/>??
  • ??
  • ????????<wsgen?outputDirectory="${src.dir}"??
  • ??????????wsdl="${wsdl.dir}"?package="com.lamp.ws.client"?overwrite="true"/>??
  • ???????? ??
  • ????</target>??
  • ??
  • </project>??
  • [xml]?view plain?copy ?print?
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • ??
  • <project?name="WebService"?basedir="."?default="gen-webservice">??
  • ??
  • ????<property?file="build.properties">??
  • ????</property>??
  • ??
  • ????<path?id="project-classpath">??
  • ????????<fileset?dir="${lib.dir}">??
  • ????????????<include?name="**/*.jar"?/>???
  • ????????</fileset>??
  • ????</path>??
  • ??
  • ????<target?name="gen-webservice">??
  • ????????<taskdef?name="wsgen"?classname="org.codehaus.xfire.gen.WsGenTask"?classpathref="project-classpath"?/>??
  • ??
  • ????????<wsgen?outputDirectory="${src.dir}"??
  • ??????????wsdl="${wsdl.dir}"?package="com.lamp.ws.client"?overwrite="true"/>??
  • ??????????
  • ????</target>??
  • ??
  • </project>??

  • 其引入的build.properties文件也在項目路徑下?
    src.dir=${basedir}/src?
    lib.dir=F:/WebService/xfire-1.2.6/lib?
    wsdl.dir=http://localhost:8080/TestWebService/services/MessageService?wsdl?
    其中l(wèi)ib.jar為我存放xfire的路徑,運行ant得到代理對象?
    編寫一個測試類?
    Java代碼??
  • package?com.lamp.test; ??
  • ??
  • import?com.lamp.ws.client.MessageServiceClient; ??
  • import?com.lamp.ws.client.MessageServicePortType; ??
  • ??
  • public?class?TestGetName?{ ??
  • ??
  • ????public?static?void?main(String[]?args)?{ ??
  • ????????MessageServiceClient?msg?=?new?MessageServiceClient(); ??
  • ????????MessageServicePortType?portType?=?msg.getMessageServiceHttpPort(); ??
  • ????????String?result?=?portType.getName("張三"); ??
  • ????????System.out.println(result); ??
  • ????} ??
  • ??
  • }??
  • [java]?view plain?copy ?print?
  • package?com.lamp.test;??
  • ??
  • import?com.lamp.ws.client.MessageServiceClient;??
  • import?com.lamp.ws.client.MessageServicePortType;??
  • ??
  • public?class?TestGetName?{??
  • ??
  • ????public?static?void?main(String[]?args)?{??
  • ????????MessageServiceClient?msg?=?new?MessageServiceClient();??
  • ????????MessageServicePortType?portType?=?msg.getMessageServiceHttpPort();??
  • ????????String?result?=?portType.getName("張三");??
  • ????????System.out.println(result);??
  • ????}??
  • ??
  • }??

  • 運行在控制臺看到了hellow 張三, welcome to WebService world至此一個簡單的WebService開發(fā)完畢

    總結(jié)

    以上是生活随笔為你收集整理的Java 开发Web Service的几种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲天堂一区 | 国产日韩在线观看一区 | 污污在线看 | 日韩一级伦理片 | 一级做a爱片久久 | 亚洲同性gay激情无套 | 亚洲欧美在线视频 | 中国吞精videos露脸 | 国产在成人精品线拍偷自揄拍 | 国产精品.www | 麻豆激情视频 | www.伊人| 亚洲第一色网站 | 国产精品av一区二区 | 在线观看免费福利 | 中文字幕在线播放视频 | 欧美日韩一区在线观看 | 精品乱人伦一区二区三区 | www.在线观看麻豆 | 黄色一级视频免费 | 国产av无码专区亚洲av毛片搜 | 九九久视频 | 亚洲国产精品久久久久久 | 亚洲国产精品久久久久久6q | 亚洲国产成人一区二区 | 潘金莲一级淫片aaaaa武则天 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品日韩电影 | 国产又粗又长 | 91精品久久久久久 | 久久精品中文 | 老女人毛片50一60岁 | 久久久精品国产sm调教网站 | 国产精品二区三区 | 精品国产99 | 99视屏| 欧美在线色图 | 丰满少妇乱子伦精品看片 | 男人天堂999| 亚洲欧美日韩国产一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 久久九九久精品国产免费直播 | 国模大尺度视频 | av手机天堂 | 国产成人av一区二区三区在线观看 | 成人区视频 | 国产精品刘玥久久一区 | 无码国产精品一区二区高潮 | 国产精品视频免费在线观看 | 麻豆视频在线播放 | 久久久久99精品成人片试看 | 加勒比在线免费视频 | 国产精品污www在线观看 | 亚洲天堂av中文字幕 | 91亚瑟视频 | 欧美图片一区二区 | 伦理av在线 | 少妇高潮大叫好爽喷水 | 天天操天天添 | 亚洲黄av| 欧美男同又粗又长又大 | 美女被草视频 | 黄色片在线免费观看 | 午夜天堂视频 | 亚洲激情免费视频 | 亚洲二区在线播放视频 | 色啪网站 | 偷拍欧美另类 | gai视频在线观看资源 | 国产精品欧美大片 | 一卡二卡在线 | 中文字幕91爱爱 | xxx性视频 | 欧美巨乳在线 | 亚洲一区二区三区人妻 | 亚洲一区不卡在线 | 精品影片一区二区入口 | 嫩草视频在线看 | 国产午夜精品一区二区理论影院 | jizzjizzjizz亚洲| 青青草逼 | a级片黄色| 天堂av一区 | 福利在线国产 | 婷婷色一区二区三区 | 男女h网站 | 国产91免费在线观看 | 国产欧美一区二区三区在线看蜜臀 | 中文国产视频 | 色婷婷一区二区三区 | 午夜大片网| 日本wwwxx| 午夜剧场免费观看 | 欧美成人性色 | 操亚洲美女 | 日韩欧美一区二区在线 | www.xxx.日本 | 99久久久无码国产精品6 | xxxx日本黄色 |