国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 詳解java開(kāi)發(fā)webservice的幾種方式

詳解java開(kāi)發(fā)webservice的幾種方式

2020-07-06 14:29haoxingfeng JAVA教程

webservice的應(yīng)用已經(jīng)越來(lái)越廣泛了,下面介紹幾種在Java體系中開(kāi)發(fā)webservice的方式,有興趣的可以了解一下。

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

1.Axis2

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

(1)下載eclipse的Java EE版本

(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)在任意目錄下新建一個(gè)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,點(diǎn)擊·file-new-other,如果看到Axis2 Wizards,則表明插件安裝成功。

(5)安裝axis2

下載Axis2的WAR Distribution并解壓,把a(bǔ)xis2.war包放置到%TOMCAT_HOME%/webapps下,啟動(dòng)tomcat,訪(fǎng)問(wèn)http://localhost:port/axis2,Axis2安裝成功。

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

(7)發(fā)布webservice

1)點(diǎn)擊eclipse的File-New-other,打開(kāi)Axis2 Wizards,選擇Axis2 Service Archiver,然后Next;

2)選擇Class File Location,也就是類(lèi)文件存放路徑,注意:只選到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-填寫(xiě)你的service名稱(chēng),Class Name-填寫(xiě)類(lèi)名稱(chēng),要包括包名,然后點(diǎn)擊load,然后點(diǎn)擊Finish,這時(shí)webservice就發(fā)布成功了;

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

7)訪(fǎng)問(wèn)http://localhost:8085/axis2/services/類(lèi)名?wsdl 就可看到生成的wsdl文件了。
注意:以上的方式是發(fā)布到axis2.war包中,你也可以把生成.aar文件copy到你的實(shí)際應(yīng)用中,同時(shí),你也可以使用eclipse的create webservice功能發(fā)布你的webservice,選擇axis2生成你的webservice,這樣webservice就會(huì)部署到你的應(yīng)用中了。

2.Apche CXF

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

1)在eclipse中新建一個(gè)web工程,導(dǎo)入依賴(lài)包。

2)編寫(xiě)一個(gè)接口,如:

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

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

3)編寫(xiě)一個(gè)實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)接口的方法;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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>

 這個(gè)文件比較容易理解,就不解釋了。

5)配置CXFServlet

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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,就可以訪(fǎng)問(wèn)該webservice了。 

3.JDK開(kāi)發(fā)webservice

1)編寫(xiě)一個(gè)Java類(lèi),如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)運(yùn)行該java類(lèi),在瀏覽器上就可以訪(fǎng)問(wèn)該webservice了。

注意:開(kāi)發(fā)web工程的時(shí)候,這種方法不太友好。我們可以編寫(xiě)一個(gè)servlet類(lèi),在servlet類(lèi)的初始化方法中發(fā)布webservice,這樣我們的中間件服務(wù)器啟動(dòng)的時(shí)候就會(huì)幫我們自動(dòng)webservice了。

3)  xfire

開(kāi)發(fā)WebService的框架不少,每個(gè)框架都有各自的有點(diǎn),最近我用xfire練習(xí)開(kāi)發(fā)WebService,下面是開(kāi)發(fā)WebService的小例子,希望對(duì)入門(mén)的人有些小幫助

1.新建一個(gè)java web project命名為T(mén)estWebService,將xfire相關(guān)的jar包添加到lib目錄中,寫(xiě)接口類(lèi)和實(shí)現(xiàn)類(lèi)

?
1
2
3
4
5
package com.lamp.service; 
 
public interface MessageService { 
  public String getName(String name); 
}
?
1
2
3
4
5
package com.lamp.service;
 
public interface MessageService {
  public String getName(String name);
}

實(shí)現(xiàn)類(lèi)

?
1
2
3
4
5
6
7
8
9
10
11
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"
  
 
}
?
1
2
3
4
5
6
7
8
9
10
11
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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 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 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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>
<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>

 項(xiàng)目部署后在瀏覽器中通過(guò)http://localhost:8080/TestWebService/services訪(fǎng)問(wèn)看到遠(yuǎn)程訪(fǎng)問(wèn)的接口,并得到wsdl為http://localhost:8080/TestWebService/services/MessageService?wsdl

這樣服務(wù)器端開(kāi)發(fā)完畢,現(xiàn)在開(kāi)始客戶(hù)端的開(kāi)發(fā)

新建一個(gè)java project也將xfire相關(guān)的jar引入,我用ant在客戶(hù)端生成代理對(duì)象,在項(xiàng)目路徑下新建build.xml,代碼為 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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文件也在項(xiàng)目路徑下
 

?
1
2
3
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的路徑,運(yùn)行ant得到代理對(duì)象

編寫(xiě)一個(gè)測(cè)試類(lèi)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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); 
  
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
  }
 
}

運(yùn)行在控制臺(tái)看到了hellow 張三, welcome to WebService world至此一個(gè)簡(jiǎn)單的WebService開(kāi)發(fā)完畢

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/haoxingfeng/article/details/9167757

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产亚洲精品美女久久久久久久久久 | 日韩欧美二区 | 日韩av免费在线播放 | 国产成人小视频 | 精品一区二区三区在线观看 | 韩日一区二区 | 欧美一级播放 | 欧美成人激情 | 国产日| 一级毛片免费看 | 久久久久久免费 | 另类sb东北妇女av | 精品午夜久久 | 精品国产乱码久久久久久久软件 | 欧美视频在线观看免费 | 亚洲视频久久久 | 久久国产亚洲 | 在线视频中文字幕 | 日韩一区二区三区在线观看 | 亚洲福利一区 | 亚洲国产精品99久久久久久久久 | 亚洲美女久久久 | 日日操夜夜操天天操 | 欧美精品一区二区三区在线 | 国产精品久久久久久久岛一牛影视 | 日韩一区电影 | 欧美区在线 | 亚洲香蕉视频 | 国产日韩欧美高清 | 国产精品免费看 | 亚洲欧美综合精品久久成人 | 999精品视频 | 欧美久久久久久久久久久久久久 | 中文字幕日韩欧美一区二区三区 | 国产一区二区三区欧美 | 精品毛片 | 久久综合久久综合久久综合 | 亚洲精品一区 | 国产免费一区二区三区最新6 | 成人免费一区二区三区视频网站 | 国产三级在线观看 |