用JAX-WS在Tomcat中发布WebService---服务端

服务端

1.首先创建一个Maven Web工程

选择----》next;

选择自己的工作空间,------》next;

选择----》next;

填入 groupId,Artifact Id -----》finish(该项目是已存在的仅做演示使用);至此Maven Web工程已经创建好了;

2.web.xml配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
   <display-name>huaksecu-webserivice</display-name>
   
   
<servlet>
	<servlet-name>jaxws</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>jaxws</servlet-name>
	<url-pattern>/services</url-pattern>
</servlet-mapping>

</web-app>

我使用的servlet不是3.0以上的,所以需要加上以上配置,(使用的servlet是2.3的);是3.0以上不用加

3.pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>huaksecu-webservice</groupId>
  <artifactId>huaksecu-webservice</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>huaksecu-webservice Maven Webapp</name>

<properties>
	<!-- 文件拷贝编码 -->
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<!-- 输出编码 -->
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<!-- 编译编码 -->
	<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

<!-- 以下为maven依赖包引入 -->
<dependencies>
	<dependency>
	    <groupId>com.sun.xml.ws</groupId>
	    <artifactId>jaxws-rt</artifactId>
	    <version>2.2.10</version>
	   <!--  <type>pom</type> -->
	</dependency>
	<dependency>
	    <groupId>com.sun.istack</groupId>
	    <artifactId>istack-commons-runtime</artifactId>
	    <version>2.19</version>
	</dependency>
	<dependency>
	    <groupId>com.sun.xml.bind</groupId>
	    <artifactId>jaxb-impl</artifactId>
	    <version>2.2.10-b140802.1033</version>
	</dependency>
	<dependency>
	    <groupId>com.sun.xml.bind</groupId>
	    <artifactId>jaxb-core</artifactId>
	    <version>2.2.10-b140802.1033</version>
	</dependency>
	<dependency>
	    <groupId>com.sun.xml.stream.buffer</groupId>
	    <artifactId>streambuffer</artifactId>
	    <version>1.5.3</version>
	</dependency>
	<dependency>
	    <groupId>com.sun.xml.ws</groupId>
	    <artifactId>policy</artifactId>
	    <version>2.4</version>
	</dependency>
	<dependency>
	    <groupId>org.jvnet.staxex</groupId>
	    <artifactId>stax-ex</artifactId>
	    <version>1.7.7</version>
	</dependency>
	<dependency>
	    <groupId>org.glassfish.gmbal</groupId>
	    <artifactId>gmbal-api-only</artifactId>
	    <version>3.1.0-b001</version>
	</dependency>
	<dependency>
	    <groupId>org.glassfish.ha</groupId>
	    <artifactId>ha-api</artifactId>
	    <version>3.1.9</version>
	</dependency>
	<dependency>
	    <groupId>org.glassfish.external</groupId>
	    <artifactId>management-api</artifactId>
	    <version>3.2.1-b001</version>
	</dependency>
</dependencies>

</project>



参考其他的文章应该引入 一个 jaxws-rt  依赖包就可以了,但是鉴于一直报错,显示缺少其他的各种包依赖,所以我就把报错的依赖包都加上了,各位可以先添加一个 jaxws-rt  依赖包尝试下,如果存在错误,再加入其他依赖

3.创建服务接口

package huaksecu.webservice;

import javax.jws.WebResult;
import javax.jws.WebService;


@WebService
public interface HelloService {

    public String getHelloWord();
}

4.创建服务接口实现

package huaksecu.webservice;
import javax.jws.WebService;

@WebService(endpointInterface = "huaksecu.webservice.HelloService")
public class HelloServiceImpl implements HelloService{
	
	@Override
	public String getHelloWord() {
		// TODO Auto-generated method stub
		return "hello, jaxws!";
	}
}

5.在WEB-INF中创建WebService配置文件sun-jaxws.xml,配置文件中一个WebService对应一个Endpoint

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
	<!-- 服务路径http://网站路径/services/hello -->
	<endpoint name="hello" implementation="huaksecu.webservice.HelloServiceImpl" url-pattern="/hello" />
</endpoints>

6.目录结构展示

7.发布成功;浏览器输入http://XXXXXXX:端口/应用名/hello

 

遇见的问题汇总:

1. java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener

<dependency>
	    <groupId>com.sun.xml.ws</groupId>
	    <artifactId>jaxws-rt</artifactId>
	    <version>2.2.10</version>
	    <type>pom</type>
	</dependency>

缺少  jaxws-rt.jar 包,不知道为什么2.2.10 这样引入时,无法下载出来jaxws-rt包;去掉就好了type就好了;

2.Cannot change version of project facet Dynamic Web Module to 3.0.

原因:开始时以为使用的servlet是3.0的,就将参考文章的web.xml配置复制到了自己的项目配置中了,然后tomcat运行正常但是项目一直显示有红叉,配置错误,后恢复至上面的web配置后,正常

3.实现类里的@override注解显示异常,不能添加,而且项目配置信息也报错,查看后发现该项目默认的jdk配置时1.5的,1.5版本的jdk不支持;想把jdk版本改为1.7的,但是修改配置后一启动就又恢复1.5了,最后在pom.xml中添加以下代码,才将jdk版本修改为了1.7

<build> 
	<plugins> 
		<plugin> 
			<groupId>org.apache.maven.plugins</groupId> 
      		<artifactId>maven-compiler-plugin</artifactId> 
      		<version>3.1</version> 
      		<configuration> 
        		<source>1.7</source> 
        		<target>1.7</target> 
      		</configuration> 
    	</plugin> 
  	</plugins> 
</build>

4.新建Maven Web工程后,index.jsp文件报错

解决方式:右击项目选择build path---》configure build path 

 

-------》next

错误消失;

参考文章:https://blog.csdn.net/accountwcx/article/details/46884775

                  https://www.cnblogs.com/ywjy/p/5196118.html

maven依赖包下载地址:https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt/2.2.10

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值