• JAX-WS 学习一:基于java的最简单的WebService服务


    JAVA 1.6 之后,自带的JAX-WS API,这使得我们可以很方便的开发一个基于Java的WebService服务。

    基于JAVA的WebService 服务 

    1、创建服务端WebService服务接口

    package com.st.services;
    
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    import javax.jws.soap.SOAPBinding.Use;
    
    @WebService(serviceName="calculator",targetNamespace="com.st.services")
    @SOAPBinding(style=Style.RPC,use=Use.LITERAL)
    public class CalculatorService {
    	
    	public int sum(int a,int b){
    		return a+b ;
    	}
    
    }
    

     

    @WebService

    此注示用来标明此java类为某个WebService的实现类或者标明此java接口定义了某个WebService的接口。

    @WebService有六个参数可以用来配置这个WebService的定义:

      1、endpointInterface:指向一个定义此WebService抽象定义接口的完整类路(如果没有定义接口,直接写的实现类,则该参数不需要)

      2、name:WebService名;默认的port名为"实现类名+Port",binding名为"实现类名+PortBinding",通过指定name的值来替换 实现类名。

      3、portName:指定port名,可以完成替换默认port名,或由上面的"name"指定的port名。

      4、targetNamespace:指定targetNamespace值,默认的值为 "http://包名/",可以通过此变量指定一个自定义的targetNamespace值。(注:如果分别定义和接口和实现,则他们有各自的targetNamespace)

        5、serviceName:指定service名

        6、wsdlLocation:指向一个预定义的wsdl的文件,替代自动生成的wsdl文件。

    !如果不想定义的话,可以直接写一个@WebService ,其他的属性用默认的。

    @WebMethod

    1. action:指定此方法对应的action
    2. exclude:true --表示此方法包含在web服务中;false表示排除此方法
    3. operationName:指定方法对应的operation的名字。

    !如果你对你的WebService方法没有啥特殊要求的话,该参数可以不写,那将会使你的所有的方法发布出去。

    2、发布服务

     public static void main(String[] args) {  
            Endpoint.publish("http://localhost:8088/calculator",  
                    new CalculatorService());  
        }  
    

     

    这里publish方法需要两个参数:

    • address:服务对外暴露的用于调用服务的地址
    • implementor:服务的实现对象

    启动这个Server类,就可以访问服务了。要测试服务有没有启动,可以输入http://localhost:8088/calculator?wsdl,如果一切正常,就可以看到一个wsdl定义内容,表示服务已经成功启动。

    3、客户端程序的调用

        客户端的代码建议使用wsimport 去生成(前提:在你的电脑上已经配置了JDK的环境变量)

        直接在CMD中运行:

    wsimport -keep -p com.st.client http://localhost:8088/calculator?wsdl 

      -p : 定义生成包的包名(可以不写)

    然后将生成的java类放到项目中进行调用 

    !使用java发布WebService,默认是发布到了JDK的WEB容器中了,但在具体的项目中,更多的是有独立WEB容器(eg:Tomcat),所有这里只是对此做个简单的介绍。

  • 相关阅读:
    python is == 区别
    python 元类 type metaclass
    树莓派 zero w 一根线使用
    python 类装饰器
    Oracle创建用户
    hibernate使用原生SQL查询
    工作流 jBMP4.4表结构
    (Mark)Myeclipse10.6 下怎么安装Jad插件
    (Mark=转)ehcache memcache redis
    Oracle 常用命令
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4522881.html
Copyright © 2020-2023  润新知