CXF中 wsdl2java工具的使用方法

 

 

下面是一个使用wsdl2java的例子:

C:\Users\Administrator>F:

F:\>cd misps2

F:\misps2>wsdl2java -d . http://10.10.31.25/MSPGWebPub/MSPGS/MPService.svc?wsdl

F:\misps2>

方法2:F:\phone>wsdl2java -d src -client http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

 

 

环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法
wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web service的代码
-impl 生成web service的实现代码
-ant 生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

 

 

wsdl2java -p QueryHrEmployee -d e:\ -all http://10.70.158.127
:8080/axis2_14/services/QueryHrEmployee?wsdl

 

方法二:使用wsdl2java生成客户端

1、需要 一个包:apache-cxf-2.6.1.gz

这个包里有好多jar包,一定要下载下来。

将此包解压,我是放在:E:\CXF\apache-cxf-2.6.1

  


2、将URL调用成功的页面内容,另存为XML
    

3、在cmd中通过wsdl2java生成客户端文件

cd 进入apache-cxd-2.6.1\bin目录
执行命名:
wsdl2java -p service.webservice.client.demo -d F:\MyDocuments\Java\ws\InterfaceControlApp\src -verbose "F:\demoForWebSerivce.xml"
解析
wsdl2java -p 包名 -d 生成文件路径 -verbose "wsdl文件路径"
然后再拷贝到项目里
包名:文件存放的包名,可以写项目中包路径
生成文件路径 :文件存放路径,可以直接写项目路径
wsdl文件:在IE中执行服务端URL显示的XML另存为XML文件。
我是直接到项目路径了,生成前:

生成后:

报错处理:

4、写MAIN调用
     package common;
import javax.xml.ws.Service;
import service.webservice.client.demo.DemoForWebService;
import service.webservice.client.demo.DemoForWebServiceImplService;
import service.webservice.client.demo.User;
/**
* @author 作者 E-mail:
* @version 创建时间:2013-3-20 下午03:39:29
* 类说明
*/
public class TestWSClientByZBY {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Service service = Service.create(DemoForWebServiceImplService.SERVICE);
 
  String endpointAddress = "http://127.0.0.1:8080/InterfaceControlApp/webservice/demoForWebService?wsdl";
  service.addPort(DemoForWebServiceImplService.HTTPPort, javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
  // DMSSender dms = service.getPort(DMSSender.class);
  DemoForWebService dms = service.getPort(DemoForWebServiceImplService.HTTPPort,DemoForWebService.class);
   User user;
  try {
   user = dms.getUserById("admin");
   System.out.println(user.getXtczdm());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}
}

在服务端的实现类中@WebService(endpointInterface = "service.webservice.DemoForWebService",targetNamespace="http://webservice.service/",portName="HTTP_Port")
成功后:

调用完成。

 

 

 

利用CXF wsdl2java生成java代码 

2012-08-24 18:06:52|  分类:java
标签:|字号大中小订阅

环境配置:

1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin

2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功

3、参考它的文档看这个工具的具体参数的用法
wsdl2java用法:
wsdl2java -p com -d src -all  aa.wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

http://blog.chinaunix.net/u2/73798/showart_2002108.html

http://hgoldfish.mysmth.net/2007/11/04/cxfceuuaaoathinaeoeie-2/

实例:wsdl2java -p com -d d:/src -client  http://portal.emp.gome.inc/HOwebapp/Gome.OA.ProcessService/Service/ProcessService.asmx?wsdl

Apache CXF 是一个Service框架,他简化了Service的创建, CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0 TCK; CXF和Spring无缝集成;CXF支持多种传输协议(HTTP, JMS, Corba等), 支持多种Binding数据格式(SOAP,XML,JSON等), 支持多种DataBinding数据类型(JAXB, Aegis) 。CXF基于Interceptor的架构,使得整个框架非常易于扩展。

二.  如何发布并调用简单的web service实例

2.1.下载:apache-cxf-2.1.1  http://cxf.apache.org/download.html

2.2. 新建java project ,并加入apache-cxf-2.0.7/lib所有包,编写要发布的web service 接口和实现

import javax.jws.WebService;

@WebService 

public interface HelloWorld {  

     public String sayHello(String text);  

}

import javax.jws.WebService;  

@WebService(endpointInterface="test.HelloWorld")  

public class HelloWorldImpl implements HelloWorld {  

      public String sayHello(String text) {  

                  return "Hello" + text ;  

    }  

  } 

@WebService 注解表示是要发布的web 服务

name:用于Interface,属映射到wsdl:portType element的name属性。 
targetNamespace:用于Interface和implement,如果不指定,缺省会使用包名倒序做为wsdl名空间。

serviceName:用于implement,表示wsdl服务名。

portName:用于implement,表示wsdl:port 的name属性。

endpointInterface:用于implement,指定Interface全名,包括包名。

2.3.发布web service

public class Server {

    protected Server() throws Exception {

         System.out.println("Starting Server");

         HelloWorldImpl implementor = new HelloWorldImpl();

         String address = "http://localhost:9000/helloWorld";

         Endpoint.publish(address, implementor);

    }

    public static void main(String args[]) throws Exception {

        new Server();

        System.out.println("Server ready...");

        Thread.sleep(5 * 60 * 1000);

        System.out.println("Server exiting");

        System.exit(0);

    }

}

运行后,在浏览器中输入http://localhost:9000/helloWorld?wsdl将显示这个web service的wsdl.说明web service发布成功。

2.4.下面就开始创建一个客户端程序,访问这个web service, 同样新建java project ,并加入apache-cxf-2.0.7/lib所有包,由于CXF已经提供wsdl转化成java 的命令工具,所以创建一个build.xml,用来生成客户端程序。Bulid.xml内容如下:

<?xml version="1.0"?>

<project name="cxf wsdl2java" basedir=".">  

   <property name="cxf.home" location ="${basedir}/WebRoot/WEB-INF/"/>

   <path id="cxf.classpath">

      <fileset dir="${cxf.home}/lib">

         <include name="*.jar"/>

      </fileset>

   </path>     

   <target name="cxfWSDLToJava">

      <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">

         <arg value="-client"/>

         <arg value="-d"/>

         <arg value="src"/>

         <arg value="http://localhost:9000/helloWorld?wsdl"/>

         <classpath>

            <path refid="cxf.classpath"/>

         </classpath>

      </java>

   </target>

</project>

或者:配置环境变量%CXF_HOME%=E:/WebService/CXF/apache-cxf-2.1.1/apache-cxf-2.1.1(以我的目录为例),并在PATH后加上;%CXF_HOME%/bin

在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。

输入:wsdl2java -d src - client http://localhost:9000/helloWorld?wsdl

其作用上面的build.xml作用一样。

附加:wsdl2java用法:

wsdl2java -p com -d src -all  aa.wsdl

-p  指定其wsdl的命名空间,也就是要生成代码的包名:

-d  指定要产生代码所在目录

-client 生成客户端测试web service的代码

-server 生成服务器启动web  service的代码

-impl 生成web service的实现代码

-ant  生成build.xml文件

-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

2.5.调用web service

public class MyClient {

      public static void main(String[] argv) {

        HelloWorld  hello = new HelloWorldImplService().getHelloWorldImplPort();

        System.out.println(hello.sayHello("Tom") ); 

      }

    }

注意:运行时,要一定先要发布web sevice.

三.  参考资料

1.CXF 主页: http://cxf.apache.org/

2. CXF中文讨论组: http://groups.google.com/group/cxf-zh 

3. Web service: http://www.w3school.com.cn/webservices/index.asp
4. WSDL: http://www.w3school.com.cn/wsdl/index.asp
5. SOAP:http://www.w3school.com.cn/soap/index.asp

-----------------------------------------------------------以上是参考资料,以下是自己的实践-----------------------------------------------------------------------------

我在操作过程中,发现了一个方法的参数resultCode,以及另一个方法的voteCode都让我误操作定义为了错误的类型。

因此需要对 WSDL进行修改后,将其放置在:D:/test/0328目录下面。

我按照上面的地址下载到二级制压缩文件  apache-cxf-2.3.3.zip以后要注意,不要下载包含有src的

例如: apache-cxf-2.3.3-src.tar.gz

解压缩到D:/work/lib/apache-cxf-2.3.3

配置环境变量 CXF-HOME  为“D:/work/lib/apache-cxf-2.3.3”

增加  path  “%CXF-HOME %bin” 后,

在cmd下运行

D:/>cd test

D:/test>cd 0328

D:/test/0328>wsdl2java -frontend jaxws21 -p com.chinatelecom.jx.vote.inf.partner
 *wsdl

 

时间: 2024-11-02 14:57:07

CXF中 wsdl2java工具的使用方法的相关文章

linux中sosreport工具安装使用方法详解

sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,适用于centos(和redhat一样,包名为sos).ubuntu(其下包名为sosreport)等大多数版本的linux .sosreport在github上的托管页面为:https://github.com/sosreport/sos ,而且默认在很多系统的源里都已经集成有.如果使用的是正版redhat,在出现系统问题,寻求官方支持时,官方一般也会通过sosreport将收集的

WPS演示中的工具让标签和容器同比缩放的方法

WPS演示中的工具让标签和容器同比缩放的方法   操作步骤 另存为图片法:右击原图"缩小放的组合图片",在右键菜单中选择"另存为图片",保存为PNG格式图片,然后删除原图,此转换后的图片代替之即可.此方法的缺点是标签的内容无法修改. 巧设文本框法:在原图中双击文本框的边框,在弹出的"设置对象格式"面板中切换到"文本框"选项卡,勾选"允许文字随边框自动缩放"项,确定退 出.此方法优点是只需单标签位置,就可以修

工具类中调用dao层的方法,spring配置如何写

问题描述 工具类中调用dao层的方法,spring配置如何写 private Set readSensitiveWord() { Set set = new HashSet(); List list = sensitiveDao.findSensitive(); if(list.size()>0){ for(Sensitive s : list){ set.add(s); } } return set; } 在这个方法中我要调用dao层的方法findSensitive().sensitiveDa

WPS演示中插件功能及使用方法

  WPS演示中插件功能及使用方法 1.单击菜单栏的"工具"--"插件平台",弹出插件平台对话框,如图. 2.在"插件列表"选项卡中可以看到本机WPS已安装的插件,选中某个插件后会出现"卸载"和"禁用"按钮选项,"禁用"可暂时禁用该插件功能,"卸载"可以从本机删除该插件,删除后需要重新启动计算机才能从插件列表中清除. 3.切换到"推荐插件"选项卡中

Excel表格中删除重复行的方法

  Excel表格中删除重复行的方法            下图中的表格就是今天的示例,因为比较短,所以肉眼就可以看出来,后面三行都是重复的.下面在本文中,Office办公助手的小编就图文详解一次性将最后三行重复行都删除掉的方法. 1.将光标定位到表格内,切换到"数据"选项卡,在"数据工具"组中单击"删除重复项"按钮. 2.弹出"删除重复项"对话框,单击"确定"按钮,然后在跳转到的对话框中继续单击"

PPT中快速对齐图形的方法

  PPT中快速对齐图形的方法            1.按住左键拖动鼠标框选需要对齐的图形后,在"绘图工具-格式"选项卡的"排列"组中单击"对齐对象"按钮,在打开的下拉列表中选择"左右居中"选项,如图1所示.此时,选择的图形将左右居中对齐,如图2所示. 图1 选择"左右居中"选项 图2 选择的图形左右居中对齐 注意 按住"Shift"键依次单击图形,将能够同时选择这些图形.在选择多个图

PowerPoint 2013中删除图片背景的方法

  PowerPoint 2013中删除图片背景的方法          1.启动PowerPoint 2013并创建新文档,在"插入"选项卡中单击"图像"组中的"图片"按钮打开"插入图片"对话框,选择需要插入的图片,如图1所示,然后单击"插入"按钮.   图1 选择需要插入的图片 2.此时选择的图片插入了幻灯片中,拖动图片边框上的控制柄将图片放大,以便于对图片进行操作.在"图片工具-格式&quo

PowerPoint演示文稿中使用公式编辑器的方法

  PowerPoint演示文稿中使用公式编辑器的方法          1.启动PowerPoint并打开演示文稿,选择需要插入公式的幻灯片.在"插入"选项卡的"文本"组中单击"插入"按钮打开"插入对象"对话框,在"对象类型"列表框中选择"Microsoft公式3.0"选项,如图1所示. 图1 选择"Microsoft公式3.0"选项 2.在"插入对象&q

调整Word文档中表格列宽的方法

调整Word文档中表格列宽的方法          1.选择需要调整的列,在"表格工具-布局"选项卡下"单元格大小"组的"表格列宽"微调框中输入数字,按"Enter"键确认输入后,该列单元格的宽度即会调整为输入值,如图1所示. 图1 调整整列单元格的列宽 2.将鼠标指针放置到需要单独调整列宽的单元格左边框上,当鼠标指针变为 形状时单击.然后将鼠标指针移动到该单元格右边框上,当指针变为 形状时拖动边框,即可只调整该单元格的宽度,