tomcat發布web service教程


http://blog.csdn.net/fengqiuzhihua/article/details/8783878

1、下載jax-ws依賴包

因tomcat沒有jax-ws所需的依賴環境,所以第一步先下載Jax-ws RI,即jax-ws reference implemantation, 地址:http://jax-ws.java.net

 
 

2、安裝jax-ws RI到tomcat服務器

先下載ant與tomcat,設置環境變量ANT_HOME與CATALINA_HOME,然后在path下引入各自的bin目錄打開命令提示符,在jax-ws ri包的目錄下運行ant install。

此命令會直接把需要的包導入到${tomcat}\shared\lib目錄下,其實也就是把jaxws RI lib下的包復制到了tomcat安裝目錄下shared\lib里面。

3、設置Eclipse中的tomcat

由於eclipse是自己定義的tomcat配置文件,所以需要加些東西,把shared\lib加入進來,打開ctalina.properties文件。

 

打開后為(節選):

[html]  view plain  copy
 
  1. # Licensed to the Apache Software Foundation (ASF) under one or more  
  2. # contributor license agreements.  See the NOTICE file distributed with  
  3. # this work for additional information regarding copyright ownership.  
  4. # The ASF licenses this file to You under the Apache License, Version 2.0  
  5. # (the "License"); you may not use this file except in compliance with  
  6. # the License.  You may obtain a copy of the License at  
  7. #  
  8. #     http://www.apache.org/licenses/LICENSE-2.0  
  9. #  
  10. # Unless required by applicable law or agreed to in writing, software  
  11. # distributed under the License is distributed on an "AS IS" BASIS,  
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  13. # See the License for the specific language governing permissions and  
  14. # limitations under the License.  
  15.   
  16. #  
  17. # List of comma-separated packages that start with or equal this string  
  18. # will cause a security exception to be thrown when  
  19. # passed to checkPackageAccess unless the  
  20. # corresponding RuntimePermission ("accessClassInPackage."+package) has  
  21. # been granted.  
  22. package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.  
  23. #  
  24. # List of comma-separated packages that start with or equal this string  
  25. # will cause a security exception to be thrown when  
  26. # passed to checkPackageDefinition unless the  
  27. # corresponding RuntimePermission ("defineClassInPackage."+package) has  
  28. # been granted.  
  29. #  
  30. # by default, no packages are restricted for definition, and none of  
  31. # the class loaders supplied with the JDK call checkPackageDefinition.  
  32. #  
  33. package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.  
  34.   
  35. #  
  36. #  
  37. # List of comma-separated paths defining the contents of the "common"  
  38. # classloader. Prefixes should be used to define what is the repository type.  
  39. # Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.  
  40. # If left as blank,the JVM system loader will be used as Catalina's "common"  
  41. # loader.  
  42. # Examples:  
  43. #     "foo": Add this folder as a class repository  
  44. #     "foo/*.jar": Add all the JARs of the specified folder as class  
  45. #                  repositories  
  46. #     "foo/bar.jar": Add bar.jar as a class repository  
  47. common.loader=${catalina.home}/shared/lib/*.jar,${catalina.home}/shared/lib,${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar  

 

找到common.loader配置項增加${catalina.home}/shared/lib/*.jar,${catalina.home}/shared/lib 這兩個路徑即可

4、建立項目

新建一個web項目,webservice_web,目錄結構如下

 

HelloService.java是提供web service的一個接口,代碼如下:

[java]  view plain  copy
 
  1. package com.zxuqian.webservice;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5.   
  6. @WebService  
  7. public interface HelloService {  
  8.        
  9.       @WebMethod  
  10.      String greetings (String name);  
  11.   
  12. }  

HelloServiceImpl.java是實現類,代碼如下:

[java]  view plain  copy
 
  1. package com.zxuqian.webservice.impl;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. import com.zxuqian.webservice.HelloService;  
  6.   
  7. @WebService (endpointInterface = "com.zxuqian.webservice.HelloService" )  
  8. public class HelloServiceImpl implements HelloService {  
  9.   
  10.       @Override  
  11.       public String greetings(String name) {  
  12.             return "Hello: " + name;  
  13.      }  
  14.   
  15. }  

5、添加sun-jaxws.xml

sun-jaxws.xml是通過web方式發布web service應用的描述文件,內容如下:

 

[html]  view plain  copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">  
  3.     <endpoint name="HelloWorld" implementation="com.zxuqian.webservice.impl.HelloServiceImpl"   
  4.         url-pattern="/hello" />  
  5. </endpoints>  

 

各個節點的具體說明請參考下載的jaxws ri包里面的docs文檔,在這里簡單說明一下,endpoint需要指定
web service服務的接口和實現類,以及它的url相對路徑

6、配置web.xml

內容如下:

[html]  view plain  copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <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">  
  3.   <display-name>webservice_web</display-name>  
  4.     
  5.   <listener>  
  6.     <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>  
  7.   </listener>  
  8.   <servlet>  
  9.     <servlet-name>hello</servlet-name>  
  10.     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>  
  11.     <load-on-startup>1</load-on-startup>  
  12.   </servlet>  
  13.     
  14.   <servlet-mapping>  
  15.     <servlet-name>hello</servlet-name>  
  16.     <url-pattern>/hello</url-pattern>  
  17.   </servlet-mapping>  
  18. </web-app>  

7、測試

啟動tomcat,在瀏覽器中輸入web service地址 http://localhost:8088/webservice_web/hello我的tomcat的端口號是8088,大家根據自己的端口號進行相應的修改。

8、參考文獻

http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM