zoukankan      html  css  js  c++  java
  • 简单的CXF实例

    用cxf写一个简单的手机号查询案例

    首先需要下载 CXF  

    下载地址 http://cxf.apache.org/download.html

    Source distribution  是带源码的压缩包  我们选择Binary distribution 中压缩包就可以

    下载之后需要配置cxf环境

    新建  CXF_HOME   地址  E:apache-cxf-2.7.7

    Path   %CXF_HOME%in;

    配置好环境变量之后   cmd  输入 wsdl2java -h  如果不报错 恭喜你,cxf配置成功

    1.利用cxf访问其他系统接口

    新建一个javaweb项目  webserviceTest

    然后利用 CXF 生成客户端 

     命令行  进入 项目的src文件夹  输入  wsdl2java -p com.example.client.mobile -encoding utf-8 http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL

    -p 是生成代码时直接的文件路径  -encoding 指定编码格式  后面为wsdl 地址

    如果报错 

    Exception in thread "main" java.lang.AssertionError: org.xml.sax.SAXParseExcepti
    on; systemId: jar:file:/E:/apache-cxf-2.7.7/lib/jaxb-xjc-2.2.6.jar!/com/sun/tool
    s/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; s
    chema_reference: 由于 accessExternalSchema 属性设置的限制而不允许 'file' 访问,
    因此无法读取方案文档 'xjc.xsd'。

    那就因为 jdk8 跟 cxf 2.7.7 版本不兼容 

    解决方法 1 在jre/lib下 新建一个 jaxp.properties  内容   javax.xml.accessexternalschema =all

    解决方法 2 更好CXF版本  下载3.0的版本

    生成客户端的目录为

    建一个测试类  MobileTest

    public class MoblieTest {
    public static void main(String[] args) {

    //创建web服务代理工厂 
    JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();

    //设置要调用的web服务服务端发布地址 
    bean.setAddress("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL");

    //设置要调用的web服务
    bean.setServiceClass(MobileCodeWSSoap.class);

    //创建web服务对象 
    MobileCodeWSSoap soap = (MobileCodeWSSoap) bean.create();

    //通过对象调用web服务的方法 
    String resutl = soap.getMobileCodeInfo("15888888888", "");
    System.out.println(resutl);
    }
    }

     运行结果为 15888888888:浙江 杭州 浙江移动全球通卡

    2.  自己创建一个webservice

    首先新建一个javaweb项目  webserviceTest

    (1)配置web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <display-name>webserviceTest</display-name>

      <!--这个标签的主要作用是  在项目启动之前,先运行。例如要加载数据库等,就可以在这里配置-->

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/applicationContext.xml
    </param-value>
    </context-param>


    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>

    <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>/*</url-pattern>
    </servlet-mapping>

    </web-app>

    (2)  新增一个接口 HelloWorld  并增加实现类 HelloWorldImpl

    package com.example.services;

    import javax.jws.WebService;

    @WebService
    public interface HelloWorld {
    void sayHello(String name);
    }

    package com.example.services.impl;

    import com.example.services.HelloWorld;

    public class HelloWorldImpl implements HelloWorld {

    @Override
    public void sayHello(String name) {
    System.out.println("hello world "+name);
    }

    }

    (3)添加cxf的配置  在WEB-INF目录下新建一个applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <!-- service -->
    <bean id="helloWorld" class="com.example.services.impl.HelloWorldImpl"></bean>

    <!--
    发布服务
    使用jaxws:server和jaxws:endpoint可以发布服务
    WebService地址=Tomcat地址值+CXF Servlet的路径+ /weather
    -->
    <jaxws:server address="/hello" serviceClass="com.example.services.HelloWorld">
    <jaxws:serviceBean>
    <ref bean="helloWorld"/>
    </jaxws:serviceBean>
    </jaxws:server>

    </beans>

    启动项目  访问 http://localhost:8080/webserviceTest

    接口生成成功

  • 相关阅读:
    IOC
    paxos算法
    搜索引擎相关
    java常识
    Redis相关概念
    Keepalived简单理解
    LVS简单理解
    dbproxy
    用不上索引的sql
    二叉树、B树、B+树、B*树、VAL树、红黑树
  • 原文地址:https://www.cnblogs.com/zjf6666/p/9558571.html
Copyright © 2011-2022 走看看