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文件。

打开后为(节选):
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- # List of comma-separated packages that start with or equal this string
- # will cause a security exception to be thrown when
- # passed to checkPackageAccess unless the
- # corresponding RuntimePermission ("accessClassInPackage."+package) has
- # been granted.
- package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
- #
- # List of comma-separated packages that start with or equal this string
- # will cause a security exception to be thrown when
- # passed to checkPackageDefinition unless the
- # corresponding RuntimePermission ("defineClassInPackage."+package) has
- # been granted.
- #
- # by default, no packages are restricted for definition, and none of
- # the class loaders supplied with the JDK call checkPackageDefinition.
- #
- package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
- #
- #
- # List of comma-separated paths defining the contents of the "common"
- # classloader. Prefixes should be used to define what is the repository type.
- # Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
- # If left as blank,the JVM system loader will be used as Catalina's "common"
- # loader.
- # Examples:
- # "foo": Add this folder as a class repository
- # "foo/*.jar": Add all the JARs of the specified folder as class
- # repositories
- # "foo/bar.jar": Add bar.jar as a class repository
- 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的一个接口,代码如下:
- package com.zxuqian.webservice;
- import javax.jws.WebMethod;
- import javax.jws.WebService;
- @WebService
- public interface HelloService {
- @WebMethod
- String greetings (String name);
- }
HelloServiceImpl.java是实现类,代码如下:
- package com.zxuqian.webservice.impl;
- import javax.jws.WebService;
- import com.zxuqian.webservice.HelloService;
- @WebService (endpointInterface = "com.zxuqian.webservice.HelloService" )
- public class HelloServiceImpl implements HelloService {
- @Override
- public String greetings(String name) {
- return "Hello: " + name;
- }
- }
5、添加sun-jaxws.xml
sun-jaxws.xml是通过web方式发布web service应用的描述文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
- <endpoint name="HelloWorld" implementation="com.zxuqian.webservice.impl.HelloServiceImpl"
- url-pattern="/hello" />
- </endpoints>
各个节点的具体说明请参考下载的jaxws ri包里面的docs文档,在这里简单说明一下,endpoint需要指定
web service服务的接口和实现类,以及它的url相对路径
6、配置web.xml
内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <display-name>webservice_web</display-name>
- <listener>
- <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>hello</servlet-name>
- <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>hello</servlet-name>
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
- </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/
tomcat发布web service教程的更多相关文章
- 新手Axis2 发布Web Service之路
由于公司的需求,需要写几个银行接口写模拟器(Mock Server),此次接口需要发布成一个WEB Service. 一开始,我以为只要负责写接口的业务层就行了,具体的框架或是环境搭建可以不用管.在与 ...
- tomcat发布web项目的三种方式
tomcat发布web项目的三种方式 方式一: 配置tomcat 安装目录下的conf/server.xml <Host name="loaclhost">标签里面添加 ...
- 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法
问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http:// ...
- tomcat发布web项目,支持域名
首先需要安装JDK,不是Linux自带的OpenJDK,参考下面的文章: centos下 安装jdk 设置java环境变量:编辑这个/etc/profile文件: export JAVA_HOME=/ ...
- 修改tomcat编码格式 & tomcat发布WEB项目供外网访问
1.修改tomcat默认编码格式: 修改tomcat下的conf/server.xml文件,找到如下代码: <Connector port="8080" prot ...
- CXF之三 Tomcat中发布Web Service
服务接口及实现类请参考CXF之一 创建Maven Web项目,在pom.xml中添加CXF和spring Web的引用,由于CXFServlet需要Spring Web的支持. <project ...
- 【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?
啥叫Tomcat?有道词典是这么说的. 这个我们姑且不管,实际上呢,Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务器呢,又分为硬件服务器和软件服务器. ...
- servlet小型应用服务器搭建通过tomcat发布web项目
1.servlet简介:Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序 2.servlet的生命周期图解: 3.各阶段: 4.基本的servlet代码: pub ...
- tomcat发布web项目
转:https://www.cnblogs.com/skyblue-li/p/7888951.html Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务 ...
随机推荐
- iOS刷新第三方MJRefresh的基本使用
iOS开发中最好用的刷新第三方框架 MJRefresh GitHub : https://github.com/CoderMJLee/MJRefresh UIRefreshControl的介绍 1,U ...
- Java工程转换为Maven工程-b
1. 前言 在开发中经常要建立一个Maven的子工程,对于没有模板的同学来说从Java工程来转换也是一个不错的选择.本文就如何从一个Java工程创建一个Maven工程做了一个介绍,相信对于将一个Jav ...
- python 获取文件大小,创建时间和访问时间
# -*- coding: UTF8 -*- import timeimport datetime import os 1. '''把时间戳转化为时间: 1479264792 to 2016-11-1 ...
- bug集合
解决方法:vertical-align:top; 垂直对齐方式:对浮动元素无效浮动类: ie 6 7要在一行显示多个div要 给每一个元素浮动 否则会出间隙. ie6双倍边距bug 1. bug条件 ...
- 2877: [Noi2012]魔幻棋盘 - BZOJ
DescriptionInput 第一行为两个正整数N,M,表示棋盘的大小. 第二行为两个正整数X,Y,表示棋盘守护者的位置. 第三行仅有一个正整数T,表示棋盘守护者将进行次操作. 接下来N行,每行有 ...
- ./configure --prefix=
一直用这个选项prefix=,但不知道,啥意思. 转载自:----------------------------------------------------------------------- ...
- 【转】最短路&差分约束题集
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
- 【面试题003】c数组做为参数退化的问题,二维数组中的查找
[面试题003]c数组做为参数退化的问题,二维数组中的查找 一,c数组做为参数退化的问题 1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界, 通过下面 ...
- POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)
题意:给出f(x),g(x),h(x)的 (最高次幂+1)的值,以及它们的各项系数,求f(x)*g(x)/h(x)的余数. 这里多项式的系数只有1或0,因为题目要求:这里多项式的加减法是将系数相加/减 ...
- Tomcat7.0 start Could not find the main class: org.apache.catalina.startup.Bootstrap.
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.catalina.startup.Bo ...