基于JAX-WS的webService开发实例

最近因为工作原因接触到webService,所以记录下开发中碰到的问题,方便自己以后复习,顺便发扬一下开源精神。刚刚接触webServie如果有什么错误欢迎大家指正。

本地环境:myEclipse10.6 tomcat7 JDK7 jaxws-ri-2.2.10

第一步:创建一个基于JAX-WS的webService工程
如果原先拥有正式项目也可以直接使用原有项目实现webService接口

第二步:引用库

引用myEclipse libray中的JAX-WS 2.1 Runtime Libraries(Project Metro 1.1)和JAX-WS 2.1 APILibraries

不知道为什么有些myEclipse中却无法找到这两个库,其中就包括我。

解决办法:下载jaxws-ri,将lib目录下的jar包全部复制到项目中lib目录下。

下载地址:https://jax-ws.java.net/

第三步:创建测试接口

package com.demo.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class Test {
        //处理方法数量名称任意
    @WebMethod
    public String test1(String str){
        return "测试1接收参数:" + str;
    }
}

第四步:在WEB-INF目录下创建sun-jaxws.xml文件

<?xml version = "1.0"?>
<endpoints version="2.0"
    xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
    
    <!-- webService接口配置参数 name名称 implementation实现接口的类 url请求此接口的地址 -->
    <endpoint name="test1"
        implementation="com.webservice.Test"
        url-pattern="/test1">
    </endpoint>
    
</endpoints>


第五步:修改web.xml在web.xml中新增以下配置

<!-- 监听器 -->
  <listener>
      <listener-class>
          com.sun.xml.ws.transport.http.servlet.WSServletContextListener
      </listener-class>
  </listener>
  
  <servlet>
      <servlet-name>test1</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>test1</servlet-name>  
    <url-pattern>/test1</url-pattern><!-- select请求地址 就是在sun-jaxwx.xml配置的url -->  
  </servlet-mapping>

项目结构:

第六步:测试

发布项目到tomcat中,启动tomcat。

打开浏览器输入地址:http://localhost:8080/webService/test1?wsdl

如果出现下面这种页面说明webService已经发布成功

第七步:编写webService客户端

1.创建新的Web Project项目webServiceClient

2.使用myEclipse工具创建webService客户端

3.选择你新建的项目webServiceClient(新项目名称) 点击next

4.输入webService服务端地址,就是刚刚在浏览器输入的地址,点击next

5.等待一会儿,继续点击next

3.编写测试类

package com.demo.test;

import com.demo.webservice.Test;
import com.demo.webservice.TestService;

public class ClinetTest {

    public static void main(String[] args) {
        TestService service = new TestService();//根据接口的名称改变
        Test testPort = service.getTestPort();
        
        String param = "测试1参数-你好!";//请求参数
        String result = testPort.test1(param);//请求
        System.out.println(result);//打印返回值
    }
}

结果

项目结构

原文地址:https://www.cnblogs.com/LFBlog/p/6605653.html