cxf webservice接口

利用cxf框架发布webservice接口

  1. 引入cxf jar包

通过maven引入:修改pom.xml文件

<!-- cxf-begin -->

<dependency>

        <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-transports-http</artifactId>

           <version>3.0.3</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-frontend-jaxrs</artifactId>

           <version>3.0.3</version>

       </dependency>

       <dependency> <groupId>org.apache.cxf</groupId>

        <artifactId>cxf-rt-transports-http-jetty</artifactId>

         <version>3.1.8</version>

        </dependency>

     <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-frontend-jaxws</artifactId>

           <version>3.1.12</version>

       </dependency>

    <!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->

    <dependency>

        <groupId>wsdl4j</groupId>

        <artifactId>wsdl4j</artifactId>

<version>1.6.2</version>

    </dependency>

   <!-- cxf-end -->

 

手动引入maven仓库中不存在的jar

 

  1. 接口

package com.webService;

import javax.jws.WebService;

/**

 * webservice接口类

 */

@WebService

public interface werServiceTest {

     public String receive(String paramString1);

}

 

  1. 实现类

package com.webService;

 

import javax.jws.WebService;

 

/**

 * webservice实现类

 * @WebService 注解用在类上标识这个类是一个WebService的服务类

 */

 

class WebServiceImpl implements werServiceTest{

 

    @Override

    public String receive(String paramString1) {

       System.out.println("当前城市:"+paramString1);

       if("北京".equals(paramString1)){

           return paramString1+":晴转多云!";

       }

       return paramString1+":其他地区不清楚!!";

    }

 

}

  1. 添加CXF的配置文件applicationContext-cxf.xml,并引入cxf的命名空间

 

 

<?xml version="1.0" encoding="utf-8"?>

<beans    xmlns="http://www.springframework.org/schema/beans"

       xmlns:jaxws="http://cxf.apache.org/jaxws"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

                           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

                           http://cxf.apache.org/jaxws

                           http://cxf.apache.org/schemas/jaxws.xsd">

   

<!-- 通过spring管理webservice服务类 -->

     <bean id="wwww" class="com.webService.WebServiceImpl"></bean>

   

    <!-- 使用cxf发布webservice服务

                  引入cxf命名空间

         address:服务地址

         webservice地址:http://ip:端口号/项目名/web.xml url-pattern配置/webserviceaddress 

    -->

    <jaxws:server address="/worksheetBackService">

       <jaxws:serviceBean>

           <ref bean="wwww"/>

       </jaxws:serviceBean>

</jaxws:server>

</beans>

 

  1. 修改web.xml

把cxf的配置文件引入

 

 

 

 

配置cxf的核心servlet

        <!-- begin   配置cxf核心的Servlet

         作用:用来区分什么请求时一个webservice请求   -->

    <servlet>

    <servlet-name>workerWebSer</servlet-name>

    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>workerWebSer</servlet-name>

    <url-pattern>/webservice/*</url-pattern>

  </servlet-mapping>

  <!-- end -->

 

  1. 在shiro的配置文件中放开对webservice的拦截

 

  1. 启动服务
  2. 访问地址

http://ip:端口号/项目名/webservice/worksheetBackService

http://localhost:8180/bd-be/webservice/worksheetBackService?wsdl

 

一、利用axis框架调用webservice接口:

  1. 引入axis jar包

通过maven引入:修改pom.xml文件

<!-- axis begin -->

    <dependency>

        <groupId>axis</groupId>

        <artifactId>axis-ant</artifactId>

        <version>1.4</version>

    </dependency>

     <dependency>

         <groupId>org.apache.geronimo.bundles</groupId>

         <artifactId>commons-discovery</artifactId>

         <version>0.4_1</version>

     </dependency>

    <dependency>

        <groupId>jaxrpc</groupId>

        <artifactId>jaxrpc</artifactId>

        <version>1.1</version>

    </dependency>

       <!-- axis end -->

 

手动导入

 

 

 

//axis調用(服务器端接口类上要加@WebService

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.encoding.XMLType;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

 

 String url = "http://192.168.1.102:8989/uapws/service/INCGSDataSyncWebService";

    String xml="<?xml version='1.0' encoding='utf-8'?><service><data><SJ><ID>2c958ad66e150091016e1f8e0b6b0025</ID><XMBH>LF2019117</XMBH><XMMC>山西省易地扶贫搬迁大型安置点教育医疗设施补短板项目评估工作</XMMC><WTDW>C000100</SJ></data></service>";

         String targetspace = "http://itf.ws.nc/INCGSDataSyncWebService";

         String method="MDM_XMXX";

         Service service = new Service();

         Call call = (Call) service.createCall();

         call.setTargetEndpointAddress(new URL(url));

        call.addParameter("string", XMLType.XSD_STRING,ParameterMode.IN);//string 是用soapui时的参数,即是wsdl方法上的name

         call.setReturnType(XMLType.XSD_STRING);

         call.setUseSOAPAction(true);

        String obj = (String) call.invoke(new javax.xml.namespace.QName(targetspace, method),  new Object[] { xml });

        System.out.println(obj);

        //读取并转换String

        SAXReader sax = new SAXReader();//创建一个SAXReader对象

            StringReader read = new StringReader(obj);

            Document document = sax.read(read);//获取document对象,如果文档无节点,则会抛出Exception提前结束

            Element root = document.getRootElement();//获取根节点

            Element data = root.element("mess");//获取子节点

           String  resultcodedata.elementText("returnCode");//获取节点的值

           String  returnMsgdata.elementText("returnMsg");//获取节点的值

            if("0000".equals(resultcode)){

            return this.buildSuccess(entity);

            }else{

            return this.buildError("msg", returnMsg, RequestStatusEnum.FAIL_FIELD);

            }

 

 

二、利用cxf框架调用webservice接口:

 

1、引入jar包

  

  1. 把服务端的接口类复制到客户端,要保证接口类名,方法名,参数和wsdl上一致

服务器端接口类

@WebService

public interface INCGSDataSyncWebService {

        public abstract String MDM_XMXX(String project);

}

   客户端接口类

@WebService(targetNamespace="http://itf.ws.nc/INCGSDataSyncWebService")

public interface INCGSDataSyncWebService {

    public abstract String MDM_XMXX(@WebParam(name="string")String project);

}

 

  1. 代码如下:

//cxf調用

 String xml="<?xml version='1.0' encoding='utf-8'?><service><data><SJ><ID>2c958ad66e150091016e1f8e0b6b0025</ID></SJ></data></service>";

        final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

        final String address = "http://192.168.1.102:8989/uapws/service/INCGSDataSyncWebService";

    factory.setAddress(address);

 factory.setServiceClass(INCGSDataSyncWebService.class);//接口类名    INCGSDataSyncWebService workerService = (INCGSDataSyncWebService) factory.create();

    String mdm_XMXX = workerService.MDM_XMXX(xml);

 System.out.println(mdm_XMXX);

 //读取并转换String

     SAXReader sax = new SAXReader();//创建一个SAXReader对象

     StringReader read = new StringReader(mdm_XMXX);

     Document document = sax.read(read);//获取document对象,如果文档无节点,则会抛出Exception提前结束

     Element root = document.getRootElement();//获取根节点

     Element data = root.element("mess");//获取子节点

String  resultcodedata.elementText("returnCode");//获取节点的值

    String  returnMsgdata.elementText("returnMsg");//获取节点的值

     if("0000".equals(resultcode)){

          return this.buildSuccess(entity);

      }else{

          return this.buildError("msg", returnMsg, RequestStatusEnum.FAIL_FIELD);

     }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值