服务端
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