zoukankan      html  css  js  c++  java
  • 调用CXF工具 生成 WSDL【转】

    在做WebService的时候,生成WSDL是必不可少的一步。我们通常使用的工具就是Axis和CXF。

    CXF提供了一个命令行工具,可以通过命令来生成Java to WSDL,也可以由WSDL生成Java类。

    本文不讲解CXF的工具使用,只考虑我们在java程序中如何调用该工具来生成java代码,这种运用情形在插件开发中是常见的。

    思路:

    1.首先考虑到:Runtime.getRutime().excut(String[]),

    经过简单测验,我没有通过,总是有错。暂时否决。

    2.查询CXF java 2 WSDLAPI:找到类 org.apache.cxf.tools.java2ws.JavaToWS.

    这个类就是CXF命令行工具的执行类,找到它就好解决了。简单代码如下:

    JavaToWS javaToWS = new JavaToWS(args);  
    try {  
        javaToWS.run();  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  

     运行,成功!

    附件具体测试类:

    package com.test.java2wsdl;   
      
    public class Hello {   
      public String echo(String name){   
      return "echo: "+name;   
      }   
    }   
    package com.test.java2wsdl;  
      
    import org.apache.cxf.tools.java2ws.JavaToWS;  
    /** 
     * @description 使用CXF工具将Java类生成WSDL 
     * @author zhu_qhua 
     */  
    public class Java2WSDL {  
        private Class<?> className;  
        public String[] args1,args2,args3;  
        /** 
         * 构造函数 
         * @param args 要生成WSDL的Java类 
         */  
        public Java2WSDL(Class<?> className) {  
            this.className = className;   
              
            //根据Hello.class生成Hello.wsdl,生成的wsdl文件放在resource目录下  
            args1=new String[]{"-wsdl","-d","./resource",this.className.getName()};  
            //根据Hello.class生成Hello.wsdl,生成的文件放在根目录下的.example下  
            args2=new String[]{"-wsdl","-cp", "./example",this.className.getName()};  
            // 根据Hello.class生成wsdl文件,文件命名为myHello.wsdl,放在根目录下  
            args3=new String[]{"-o","myHello.wsdl","-wsdl",this.className.getName()};  
        }  
        /** 
         * 构造函数 
         * @param className 要生成WSDL的Java类 
         * @param wsdlFileName 要生成WSDL的文件名称(不包含扩展名) 
         */  
        public Java2WSDL(Class<?> className,String wsdlFileName) {  
            this.className = className;   
              
            //根据Hello.class生成Hello.wsdl,生成的wsdl文件放在resource目录下  
            args1=new String[]{"-wsdl","-d","./resource",this.className.getName()};  
            //根据Hello.class生成Hello.wsdl,生成的文件放在根目录下的.example下  
            args2=new String[]{"-wsdl","-cp", "./example",this.className.getName()};  
            // 根据Hello.class生成wsdl文件,文件命名为myHello.wsdl,放在根目录下  
            args3=new String[]{"-o",wsdlFileName+".wsdl","-wsdl",this.className.getName()};  
        }  
      
        public void java2WSDL(String[] args){  
            JavaToWS javaToWS = new JavaToWS(args);  
            try {  
                javaToWS.run();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        public static void main(String[] args) {  
            Java2WSDL java2WSDL = new Java2WSDL(Hello.class);  
            java2WSDL.java2WSDL(java2WSDL.args1);  
        }  
    }  
  • 相关阅读:
    Asp.net使用DevExpress的某些控件不能操作ViewState的解决方案
    关于 vue 循环组件,组件内有根据要求请求select下拉列表,组件内还有自身组件,select下拉列表无法正确获取的问题解决
    Vue+axios请求本地json
    关于vuevideoplayer 实现跳转到特定位置并自动播放
    VueQuillEditor回显不显示空格的处理办法
    elementui 的CascaderPanel级联面板类型 懒加载 回显
    elementui 中的文本域的autosize的意思
    解决 [Element Warn][Form]model is required for validate to work!
    初涉simulink
    arm学习计划
  • 原文地址:https://www.cnblogs.com/happyPawpaw/p/4873945.html
Copyright © 2011-2022 走看看