使用JAX-WS、axis2创建webservice服务端

一、使用jdk自带的JAX-WS创建webservice服务端

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(
        // 必须指定命名空间
        targetNamespace = "http://com.test"
)
public class Webservice {

    @WebMethod
    public String say(String xml) {
        return "返回值";
    }

    public static void main(String[] args) {
        // 注意不要用正在使用的端口号,并且要以"/"结尾
        String address = "http://localhost:8080/";
        // 运行main方法,发布服务端
        Endpoint.publish(address, new Webservice());
    }
}

也可以用spring代理发布服务端:dispatch-servlet.xml中加上


    

jax-ws发布服务端是绑定端口的,所以使用 locahost:8080/?wsdl 即能访问。

缺点是一个端口只能发布一个webservice服务类

 

二、使用axis2发布webservice

axis2版本:1.7.9

1、引入axis2依赖的jar包

如果使用maven,则依赖如下(因为axis2-adb依赖axis2-kernel,所有会自动引入,可省略)


  org.apache.axis2
  axis2-adb
  1.7.9


  org.apache.axis2
  axis2-transport-http
  1.7.9


  org.apache.axis2
  axis2-transport-local
  1.7.9

如果使用jar,则引入如下jar包:

 

2、创建services.xml

在WEB-INF文件夹下创建文件如下:services - XXX(任意文件名)- META-INF - services.xml

axis2会自动寻找WEB-INF下的services目录,再下下层目录的META-INF目录中的services.xml。

注意:此为axis2要求的固定结构,必须3层目录,否则读取不到services.xml

比如我的:

使用JAX-WS、axis2创建webservice服务端_第1张图片

 

services.xml文件内容如下:



    Axis2Ws服务说明
    
    
        
        
    
    
    Webservice类全名(一个普通的java类即可)

(service标签上scope属性是用来定义生命周期的)

如果同时发布多个webservice,可以在service标签外加上serviceGroup如下


    
        ...
    
    
        ...
    

3、配置axisServlet映射

在web.xml中加上servlet映射


    AxisServlet
    org.apache.axis2.transport.http.AxisServlet
    1


    AxisServlet
    
    /services/*

至此axis2服务端配置全部完成,启动web程序,使用如下地址访问wsdl

http://localhost:端口/项目名称/services/Axis2Ws?wsdl

你可能感兴趣的:(webservice)