当前位置: 首页 > news >正文

tomcat发布web service教程

这几天一直在准备找工作,自学了关于web service的一些基本的内容,也遇到了不少问题。现在就把我自己学到的知识和大家分享一下,由于是初学,所以有什么错误的地方请大家帮忙指正,感激不尽~~!!大笑

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/

 

 

相关文章:

  • Scala学习 - 基础类型
  • Skype for Business Server 2015-02-Office Web Apps-部署
  • Skype for Business Server 2015-03-后端服务器-3-验证
  • VNC服务安装配置
  • 设计模式C++实现(12)——备忘录模式
  • itunes connect 沙盒帐号地区的问题导致无法进行充值
  • Spark streaming的执行流程
  • tpcc-mysql 系列一:安装使用
  • 一个动画 Label (走马观花)
  • 携程网瘫痪超8小时,可能故障原因分析
  • phpcms v9修改栏目描述的多行文本为编辑器方法
  • 黎活明给程序员的忠告(转)
  • C# 添加.DLL 出错的解决方法
  • HihoCoder第十周:后序遍历
  • NPM vs Bower 的区别
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • ESLint简单操作
  • Flannel解读
  • java第三方包学习之lombok
  • magento2项目上线注意事项
  • mongo索引构建
  • PermissionScope Swift4 兼容问题
  • python学习笔记 - ThreadLocal
  • Solarized Scheme
  • uni-app项目数字滚动
  • windows下mongoDB的环境配置
  • 开发基于以太坊智能合约的DApp
  • 跨域
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何优雅地使用 Sublime Text
  • 收藏好这篇,别再只说“数据劫持”了
  • 数据科学 第 3 章 11 字符串处理
  • 移动端解决方案学习记录
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 如何在招聘中考核.NET架构师
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ‌JavaScript 数据类型转换
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (3) cmake编译多个cpp文件
  • (9)STL算法之逆转旋转
  • (day 12)JavaScript学习笔记(数组3)
  • (Java)【深基9.例1】选举学生会
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (回溯) LeetCode 78. 子集
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (力扣)1314.矩阵区域和
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (源码分析)springsecurity认证授权