cxf客户端调用者参数不合条件响应自定义SOAP提示策略.

来源:互联网 发布:淘宝宝贝评论保留多久 编辑:程序博客网 时间:2024/06/05 05:11

/*应用场景 :对webservice客户端传过来的参数进行验证,不合条件soap响应自定义的信息给到调用者 */

操作:

在SEI(Service EndPoint Iterface :service终端接口) 的实现类中 如果不合条件 抛出一个运行时异常(soap信息做为异常类的构造器参数)或者自定义一个实现运行时异常的类抛出即可

用SOAPUI软件测试请求webservice服务端效果图及代码如下:

 

package com.xiangshuai;

 

import java.util.ArrayList;

import java.util.List;

import javax.jws.WebService;

import com.xiangshuai.exception.MyCxfException1;

import com.xiangshuai.pojo.SJXX;

import com.xiangshuai.pojo.User;

 

@WebService

public classWebserviceImpl implements IWebservice {

    private List<User>users=null;

    public WebserviceImpl() {

         users=newArrayList<User>();

         List<String> addresss1=new ArrayList<String>();

         List<String> addresss2=new ArrayList<String>();

         addresss1.add("广东广州天河珠村珠村路10");

         addresss1.add("湖南长沙长沙县榔犁三一路20");

         addresss2.add("广东佛山长城珠村珠村路10");

         addresss2.add("湖南衡阳横东县榔犁三一路20");

         SJXX sjxx1 = newSJXX(addresss1,"小明妈","13789099098");

         SJXX sjxx2 = newSJXX(addresss2,"小红爸","13789099098");

         User user1 = newUser("小明","xiaoming123", sjxx1);

         User user2 = newUser("小红","xiaohong123", sjxx2);

         users.add(user1);

         users.add(user2);

    }

    @Override

    public SJXXgetSJXXByUserName(Stringusername) {

    if(this.stringIsNullOrEmpty(username)){

       /*应用场景:对webservice客户端传过来的参数进行验证,不合条件soap响应自定义的信息给到调用者

        * 在这里可以抛出 RuntimeException或者是自定义RuntimeException的子类

        * 不能抛出Exception或者自定义Exception子类因为会被 try catch捕捉到后不能达到以下的效果

        *  <soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

                   <soap:Body>

                      <soap:Fault>

                         <faultcode>soap:Server</faultcode>

                         <faultstring>用户名不正确请再来一次</faultstring>

                      </soap:Fault>

                   </soap:Body>

                </soap:Envelope>

        * */

       throw new RuntimeException("用户名不能为空");

    }

        Useruser=null;

        for (Useru : users) {

            if(u.getName().equals(username)){

                user=u;

                break;

            }

        }

        if(user==null){

            throw  new MyCxfException1("用户名"+username+"是不存在的");

        }

        returnuser.getSjxx();

    }

   @Override

    public User getUser(Stringusername) {

        Useruser=null;

        for (Useru : users) {

            if(u.getName().equals(username)){

                user=u;

                break;

            }

        }

        returnuser;

    }

   publicbooleanstringIsNullOrEmpty(Stringstr){

    str=str.trim();booleanflag=false;

    if(str==null||"".equals(str)){

       flag=true;

    }

        returnflag;

   }

   

}