CXF webservice

1、引入CXF相关jar包

2、配置web.xml文件

<servlet>
  <servlet-name>CXFServlet</servlet-name>
  <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>CXFServlet</servlet-name>
  <url-pattern>/services/*</url-pattern>
 </servlet-mapping>

3、编写服务端接口和实现类

4、编写webservice配置文件

<jaxws:server id="GroupChgWService" serviceClass="xx.xx.xx.wservice.IGroupChgService" address="/UpdateGroupSoap"> 
      <jaxws:serviceBean> 
          <bean class="xx.xx.xx.wservice.impl.GroupChgServiceImpl" >
         <property name="groupService">
       <ref bean="right_groupService"/>
      </property>
       </bean>
      </jaxws:serviceBean> 
    </jaxws:server>

黄色为发布webservice的接口,蓝色为webservice接口的实现类,灰色为发布的webservice接口的名字,紫色为该webservice接口的实现类里引用的其他service或者dao,在spring的配置文件里有"right_groupService的对应配置文件

 

 

 

 

客户端调用webservice接口,如下:

  public String UpdateRoleServices(final String operatorId, String groupId, String userId){
        StringBuffer body = new StringBuffer();
           body.append("<BODY>");
            body.append("<OPERATORID>").append(operatorId).append("</OPERATORID>");
            body.append("<OPERATORPWD>").append(user.getPwd()).append("</OPERATORPWD>");
            body.append("<OPERATORIP>").append("ip").append("</OPERATORIP>");
            body.append("<USERLIST>");
           body.append("<USERINFO>");
                        body.append("<USERID>").append(u.getUserid()).append("</USERID>");
                         List<UserRole> userRoles = this.getRolesByUserId(u.getUserid());
                        body.append("<ROLELIST>");
                        for(UserRole role : userRoles){
                            body.append("<ROLE>");
                            body.append("<ID>"+role.getRoleId()+"</ID>");
                            body.append("<NAME>"+role.getRoleName()+"</NAME>");
                            body.append("<ORGID>"+role.getCreateGroup()+"</ORGID>");
                            body.append("<EFFECTDATE>"+role.getBeginDate()+"</EFFECTDATE>");
                            body.append("<EXPIREDATE>"+role.getEndDate()+"失效时间</EXPIREDATE>");
                            body.append("</ROLE>");
                        }
                        body.append("</ROLELIST>");
                    body.append("</USERINFO>");              }
                       body.append("</USERLIST>");
        body.append("</BODY>");
        String reqXml = WsUtil.genReqXml("USERROLEMODIFYREQ", body.toString());//组装成一个完整的xml请求报文
        
        //以下调用ws接口
        QName serviceName = new QName("CommonWebServiceService");
        QName portName = new QName("UpdateRoleServices");
        String endpointAddress = this.getWsUrl()+"UpdateRoleServices";

        Service service = Service.create(serviceName);
        service.addPort(portName, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING,  endpointAddress);
        Dispatch<Source> dispatcher = service.createDispatch(portName,
            Source.class, Service.Mode.PAYLOAD);
        Map<String, Object> requestContext = dispatcher.getRequestContext();
        StringBuffer reqBuffer = new StringBuffer();
        reqBuffer.append("<UpdateRoleServices>");
        reqBuffer.append("<RequestInfo type='string'><![CDATA["+reqXml+"]]></RequestInfo>");
        reqBuffer.append("</UpdateRoleServices>");
        org.w3c.dom.Document doc = null;
        try {
            StringReader sr = new StringReader(reqBuffer.toString());
            InputSource is = new InputSource(sr);
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder=factory.newDocumentBuilder();
            doc = builder.parse(is);
           
            DOMSource reqMsg = new DOMSource(doc);
            requestContext.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
            requestContext.put(BindingProvider.SOAPACTION_URI_PROPERTY, "");
            requestContext.put(MessageContext.HTTP_REQUEST_METHOD, "POST");
            Source result = dispatcher.invoke(reqMsg);
        } catch (ParserConfigurationException e) {
            log.debug(e);
        } catch (SAXException e) {
            log.debug(e);
        } catch (IOException e) {
            log.debug(e);
        } catch (Exception e) {
            log.debug(e);
        }

        return "";
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值