zoukankan      html  css  js  c++  java
  • cxf http 代码自动生成

    1.下载 cxf 

    直接进入镜像下载
    http://mirrors.tuna.tsinghua.edu.cn/apache/cxf/3.1.12/apache-cxf-3.1.12.zip

    2.配置 CXF 环境变量

    CXF_HOME=E:/installFile/cxf/apache-cxf-3.1.12
    在 CLASSPATH 后添加 %CXF_HOME%/lib;
    在 Path 后添加 %CXF_HOME%/bin;
    查看版本是否配置成功
    wsdl2java -v

    3.生成服务端代码

    我这里做的是 http 协议,请确认 wsdl 文件中指定的协议类型为 http

    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    打开 cmd 进入 wsdl 所在目录执行

    wsdl2java -server -impl -encoding UTF8 -d E:workwaikuaipomcxfsrcmainjava HelloEsbService.wsdl

    4.配置服务端

    <?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"
        xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
        <import resource="classpath:META-INF/cxf/cxf.xml" />
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    
    
        <jaxws:endpoint id="userService"
            implementor="com.midea.service.esbpro.abstraction.atomic.technology_helloesbservice.v1.HelloEsbServicePortImpl"
            address="/userWS">
        </jaxws:endpoint>
    
    
    </beans>

    5.POM.XML

    <cxf.version>3.1.12</cxf.version>
    
    <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>${cxf.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>${cxf.version}</version>
            </dependency>

    6.web.xml

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
        <display-name>Archetype Created Web Application</display-name>
    
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath:applicationContext.xml
            </param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
        <servlet>
            <servlet-name>CXFService</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>CXFService</servlet-name>
            <url-pattern>/cxf/*</url-pattern>
        </servlet-mapping>
    
    
    </web-app>

    7.启动测试 访问

    http://localhost:8015/cxf/cxf/userWS?wsdl

    8.客户端代码生成

    cmd 进入客户端源码目录执行

    wsdl2java -keep http://localhost:8015/cxf/cxf/userWS?wsdl

    或者执行

    wsdl2java -client -impl -encoding UTF8 -d E:workwaikuaipomcxf_clientsrcmainjava HelloEsbService.wsdl

    9.打开生成的模拟客户端 _cliet 调用接口ok

     这个client 没有集成 spring

    10. 客户端 spring 配置

    <bean id="client" class="com.midea.service.esbpro.abstraction.atomic.technology_helloesbservice.v1.HelloEsbService" factory-bean="clientFactory" factory-method="create"/>
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass" value="com.midea.service.esbpro.abstraction.atomic.technology_helloesbservice.v1.HelloEsbService"/>
        <property name="address" value="http://localhost:8015/cxf/cxf/userWS?wsdl"/>
    </bean>

    11. 查看wsdl2java 帮助

    wsdl2java -help

    wsdl2java -fe|-frontend <front-end-name> -db|-databinding <data-binding-name> -wv <wsdl-version> -p <[wsdl-namespace =]package-name>* -sn <service-name> -b <binding-file-name>* -reserveClass <class-name>* -catalog <catalog-file-name> -d <output-directory> -compile -classdir <compile-classes-directory> -impl -server -client -clientjar <jar-file-name> -all -autoNameResolution -allowElementReferences|-aer<=true> -defaultValues<=class-name-for-DefaultValueProvider> -ant -nexclude <schema-namespace [= java-package-name]>* -exsh <(true, false)> -noTypes -dns <Default value is true> -dex <(true, false)> -validate<[=all|basic|none]> -keep -wsdlLocation <wsdlLocation> -xjc<xjc-arguments>* -asyncMethods<[=method1,method2,...]>* -bareMethods<[=method1,method2,...]>* -mimeMethods<[=method1,method2,...]>* -noAddressBinding -faultSerialVersionUID <fault-serialVersionUID> -encoding <encoding> -exceptionSuper <exceptionSuper> -seiSuper <seiSuper>* -mark-generated -h|-?|-help -version|-v -verbose|-V -quiet|-q|-Q -wsdlList <wsdlurl> 
    
    Options: 
    
       -fe|-frontend <front-end-name>
                         Specifies the front end. (defaults to JAXWS)
    
       -db|-databinding <data-binding-name>
                         Specifies the data binding. (defaults to JAXB)
    
       -wv <wsdl-version>
                         Specifies the WSDL version. (default is WSDL1.1)
    
       -p <[wsdl-namespace =]package-name>*
                         Specifies the java package name to use for the generated
                         code. Optionally specify a WSDL namespace to Java package
                         name mapping.
    
       -sn <service-name>
                         Specify he WSDL service name to use for the generated code.
                         Also, optionally specify the WSDL namespace.
    
       -b <binding-file-name>*
                         Specify an external jaxws or jaxb binding files. Use one -b
                         flag for each binding file.
    
       -reserveClass <class-name>*
                         Reserve a class name to keep the code generator from
                         generating a class of the given name. In name cases, a
                         binding file or use of -autoNameResolution flag may be
                         necessary for the code generator to completely generate
                         usable code.
    
       -catalog <catalog-file-name>
                         Specify catalog file to map the imported wsdl/schema.
    
       -d <output-directory>
                         Specify the directory into which the code is placed.
    
       -compile          Specifies that the generated code is compiled by the tool.
    
       -classdir <compile-classes-directory>
                         Specifies the directory into which compiled class files are
                         placed.
    
       -impl             Specifies that a dummy service implementation is generated.
    
       -server           Specifies that server code is generated.
    
       -client           Specifies that client code is generated.
    
       -clientjar <jar-file-name>
                         Package all the client classes and wsdl in a jar file
    
       -all              Specifies that interfaces, types , service, server , dummy
                         impl, client and ant script are generated.
    
       -autoNameResolution
                         Specifies that the tool will attempt to resolve class
                         naming conflicts without requiring the use of binding
                         customizations.
    
       -allowElementReferences|-aer<=true>
                         allowElementReferences
    
       -defaultValues<=class-name-for-DefaultValueProvider>
                         Specifies that default values are generated for the dummy
                         implementation and client. You can specify the name of the
                         class to provide the default values. The default is
                         RandomValueProvider.
    
       -ant              Specifies that an ant build script is generated for the
                         project.
    
       -nexclude <schema-namespace [= java-package-name]>*
                         Specifies a WSDL namespace to exclude when generating code.
                         This option can be specified multiple times. Optionally
                         specify the Java package name to use for the WSDL
                         namespace.
    
       -exsh <(true, false)>
                         Enables the processing of extended SOAP header message
                         binding.
    
       -noTypes          Turns off generating types
    
       -dns <Default value is true>
                         Enables loading the default namespace package name mapping.
                         The default is true.
    
       -dex <(true, false)>
                         Enable loading the default excludes namespace mapping. The
                         default is true.
    
       -validate<[=all|basic|none]>
                         Specifies that the WSDL is validated before generating the
                         code. Using this option is highly recommended. By default,
                         only very basic validation is done to make sure the WSDL
                         meets the WSI-BasicProfile standards that CXF requires.
                         -validate=none can turn off those checks while -validate or
                         -validate=all turns on additional schema validation and
                         other checks.
    
       -keep             Specifies that existing code will not be over written.
                         NOTE: You will have to solve any resulting compilation
                         problems by yourself
    
       -wsdlLocation <wsdlLocation>
                         Specifies the value of the @WebServiceClient annotation's
                         wsdlLocation property.
    
       -xjc<xjc-arguments>*
                         Specifies a comma separated list of arguments that are
                         passed directly to XJC when the JAXB data binding is used.
                         This option causes XJC to load additional plugins that
                         augment code generation. For example to load the
                         toString(ts) plugin that will add a toString() method to
                         all generated types the following <xjc arguments> would be
                         used: -xjc-Xts A list of available XJC plugins can be
                         obtained by using -xjc-X.
    
       -asyncMethods<[=method1,method2,...]>*
                         Specifies a comma separated list of methods that should
                         have asynchronous version generated in addition to the
                         normal synchronous versions. If no methods are listed, all
                         methods are generated with asynchronous versions.
    
       -bareMethods<[=method1,method2,...]>*
                         Specifies a comma separated list of methods that should not
                         be unwrapped into individual parameters and instead be left
                         in their "bare" form.
    
       -mimeMethods<[=method1,method2,...]>*
                         Specifies a comma separated list of methods where the
                         mime:content information is used to generate the type.
    
       -noAddressBinding Specifies that the generator should not use the address
                         jaxb binding file to map wsa:EndpointReferenceType or
                         wsa:EndpointReference to
                         javax.xml.ws.wsaddressing.W3CEndpointReference.
    
       -faultSerialVersionUID <fault-serialVersionUID>
                         Specifies how to generate fault Exception's SUID, can use
                         NONE|TIMESTAMP|FQCN|####", the default is NONE. FQCN uses a
                         hash of the fully qualified class name. #### would be any
                         valid Long to use as the SUID.
    
       -encoding <encoding>
                         Specifies the charset encoding to use when generating java
                         sources
    
       -exceptionSuper <exceptionSuper>
                         Specifies the superclass to use for generated exceptions,
                         the default is java.lang.Exception.
    
       -seiSuper <seiSuper>*
                         Specifies the SuperInterface to use for generated Service
                         Interfaces.
    
       -mark-generated   Adds @Generated annotation in all java files that are
                         generated.
    
       -h|-?|-help       Display detailed information for options.
    
       -version|-v       Display the version of the tool.
    
       -verbose|-V       Specifies that the generator runs in verbose mode.
    
       -quiet|-q|-Q      Specifies that the generator runs in quiet mode.
    
       -wsdlList         Indicates the wsdlurl is a plain text list of wsdlurls that
                         are new line delimited. As an example the wsdlurl might
                         point to
                         http://127.0.0.1:8080/context_path/ws?formatted=false&wsdlL
                         ist=true on a cxf server.
    
       <wsdlurl>         wsdl-url
  • 相关阅读:
    揭开Socket编程的面纱(留着自己慢慢看)
    XML 新手入门基础知识
    RocketMQ集群平滑下线或重启某个节点
    RocketMQ borker配置文件
    ES:在线迁移集群索引,数据不丢失
    SQL命令汇总
    Redis过期key淘汰策略
    中间件服务器内核参数优化
    在线做RAID命令
    CPU网卡亲和绑定
  • 原文地址:https://www.cnblogs.com/yun965861480/p/7400552.html
Copyright © 2011-2022 走看看