一個java產生與使用WebService的簡單例子

來源:互聯網
上載者:User

java用Metro產生WebService,在Tomcat中發布WebService和如何使用WebService

一個簡單的例子:

 

下載metro,並安裝。(本例使用1.5)
http://java.net/projects/metro
下載完metro-1.5.jar的包後,運行java -jar metro-1.5.jar
在metro.jar所在的目錄下面會產生一個metro檔案夾,裡麵包含了我們要使用的包等。

導包:如下5個包。
/metro1_5Core/webservices-api.jar   
/metro/webservices-extra.jar
/metro/webservices-extra-api.jar
/metro/webservices-rt.jar
/metro/webservices-tools.jar
(可以將該包複製到Tomcat的servers/lib下面,保證webservice的不出錯)

 

實體類:User
package com.you.me.web.entity;</p><p>public class User {</p><p> private String userId="";<br /> private String userName="";<br /> private String nickName="";<br /> private String email="";<br /> private String password="";<br /> private String registTime="";<br /> private String statusId="";<br />}</p><p>

寫要發布的WebService。
如使用者服務類UserService,可以根據使用者ID得到使用者物件
package com.you.me.ws;</p><p>import javax.jws.WebMethod;<br />import javax.jws.WebService;</p><p>import com.you.me.web.entity.User;</p><p>/**<br /> * @author you.me.2011-4-23<br /> *<br /> */<br />@WebService( serviceName="UserServiceWS",<br /> portName="UserServiceInstance",<br /> name="UserService",<br /> targetNamespace="http://www.mylitboy.com/youme")<br />public class UserServiceImpl {<br /> @WebMethod<br /> public User getUserById(String id){<br /> return new User("1", "abc","abcd","abc@abc.com");<br /> }<br />}</p><p>

註:
 serviceName不寫,預設為類名+Service,如UserServiceImplService
 name不寫,預設為類名,如UserServiceImpl
 portName不寫,預設為類名+Port,如UserServiceImplPort
 targetNamespace不寫預設為包名,如(http://ws.me.you.com)

配置:web.xml
在web.xml中添加如下語句。

<listener><br /> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class><br /></listener></p><p><servlet><br /> <servlet-name>HelloService</servlet-name><br /> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class><br /></servlet><br /><servlet-mapping><br /> <servlet-name>HelloService</servlet-name><br /> <url-pattern>/ws/*</url-pattern><br /></servlet-mapping></p><p>

註:
 url-pattern:為你需要listener監聽的訪問地址。

 

配置sun-jaxws.xml
在WEB-INF中建立sun-jaxws.xml檔案。

<?xml version="1.0" encoding="UTF-8"?><br /><endpoints version="2.0"<br /> xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br /> xsi:schemaLocation="http://java.sun.com/xml/ns/jax-ws/ri/runtime http://java.sun.com/xml/ns/jax-ws/ri/runtime/sun-jaxws.xsd "><br /> <endpoint implementation="com.you.me.ws.UserServiceImpl"<br /> url-pattern="/ws/a" name="UserService"></endpoint><br /> <endpoint implementation="com.you.me.ws.UserServiceImpl2"<br /> url-pattern="/ws/ab" name="UserService2"></endpoint><br /></endpoints></p><p> 註:
 如果有多個WebService,寫多個endpoint即可。
 implementation:WebService類
 url-pattern:訪問的地址,要輸入web.xml中url-pattern的範圍內。
 name:隨便寫

 

然後把工程部署到Tomcat中去。
訪問如下地址可以查看相應的WebService資訊:
http://localhost:8116/youme/ws/a
http://localhost:8116/youme/ws/a?wsdl

 

使用wsimport產生WebService代碼

然後在cmd中輸入:wsimport命令產生webService相關代碼。
C:/Users/you.me>wsimport -s d://temp http://localhost:8116/youme/ws/a?wsdl
出現如下語句表示成功。
parsing WSDL...
generating code...
compiling code...

此時在D:/temp下面可以看到一些java類:
D:/temp/com/mylitboy/youme
GetUserById.java
GetUserByIdResponse.java
ObjectFactory.java
User.java
UserService.java
UserServiceWS.java

如此伺服器端WebService算是完成了。

下面開始使用產生的WebService。

我們可以把這些java類打包成一個jar檔案。也可以直接複製到其他工程中使用。

使用方法:
將該檔案夾複製到建立的工程中(即你要用WebService的工程)。
/youmews_test/com/mylitboy/youme/GetUserById.java
/youmews_test/com/mylitboy/youme/GetUserByIdResponse.java
......

寫測試代碼:
Test.java
package ss;</p><p>import com.mylitboy.youme.UserService;<br />import com.mylitboy.youme.UserServiceWS;</p><p>/**<br /> * @author you.me.2011-4-23<br /> *<br /> */<br />public class Test {<br /> public static void main(String[] args) {<br /> UserService us = new UserServiceWS().getUserServiceInstance();<br /> System.out.println(us.getUserById("1"));<br /> }<br />}</p><p>

註:

 這裡面的UserService 就是前面@WebService裡面的name屬性值。

 UserServiceWS就是@WebService裡面的serviceName屬性值。

 
如此整個過程就完成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.