好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用cmd根据WSDL网址生成java客户端代码的实现

windows下使用cmd命令提示符生成java webservice客户端代码,可以使用命令提示符直接生成客户端代码,直接导入到项目中,只需配置jdk即可,在jdk的bin文件夹下,按shift并点击右键,选中[在此处打开命令窗口]

输入命令如下:

?

1

wsimport -keep -p com.demo.client -d d:\\(存放的地址) http: //xx/account?wsdl(wsdl地址)

命令参数说明:

-d:生成客户端执行类的class文件的存放目录(默认存放在c:\users\administrator\)

-s:生成客户端执行类的源文件的存放目录(默认存放在c:\users\administrator\)

-p:定义生成类的包名

图示:

上面代码是在d盘下生成java代码,-d代表的是生成class文件和java文件,图示:

如果把这里的-d改为-s,生成的只有java文件,图示:

文件里面包名都是我们可以指定的,如果没有指定,使用的就是根据wsdl文档里面的targetnamespace来命名。

共勉:这个时代会犒赏那些爱学习的人。

补充:利用wsdl地址生成java客户端调用类并实现动态配置的方法

前言:

有时,我们经常要和一些外部系统对接,如果是http接口还好,直接用apache的httpclient工具类调用即可。而如果对方系统是webservice,则比较麻烦,本文主要讲解如何用对方的wsdl地址生成java客户端调用类并且动态配置访问地址并在java中使用

1,首先我们先要获取对方的wsdl地址,例如

?

1

http: //xxxx/xxxx/xxxx.asmx?wsdl

2, 接着,在cxf官网上下载apache-cxf-3.2.5

2.1,将apache-cxf-3.2.5解压缩后安装在d:\\apache-cxf-3.2.5中,设置cxf_home环境变量为d:\\ apache-cxf-3.2.5

如下图所示:

2.2,运行cmd,执行命令wsdl2java,等待大概1秒钟,出现usage证明设置成功

2.3,用wsdl地址执行命令:其中-d代表输出路径,后面紧跟着路径,路径后面紧跟着地址,按回车键,生成成功!

3,生成成功后

由于wsdl是写死在生成的java类的注解中的,有时我们会使用多套环境进行测试,验证,而sit和uat环境的wsdl地址是不尽相同的。此时,我们需要动态配置wsdl的地址和命名空间的地址

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

@component

public class debitpushclient implements initializingbean {

  private static url wsdlurl;

  private static string debitwsdlurl;

  private static string uri;

  private static qname service_name;

  public static httpresult pushdebitdata(string jsondata) {

   financialsharing ss = new financialsharing(wsdlurl, service_name);

   return (httpresult) webserviceclientutil.invokewebservicesoapaction(ss, new qname(uri, "financialsharingsoap12" ), financialsharingsoap. class , "pushdebitdata" , jsondata);

  }

 

  /**

   * 初始化wsdl连接地址

   */

  private void initwsdlurl() {

   url url = null ;

   try {

    wsdlurl = new url(debitwsdlurl);

   } catch (malformedurlexception e) {

    java.util.logging.logger.getlogger(financialsharing. class .getname())

      .log(java.util.logging.level.info,

        "can not initialize the default wsdl from {}" ,

        debitwsdlurl);

   }

  }

 

  /**

   * 从配置文件中读取wsdl地址

   * @param debitwsdlurl 地址

   */

  @value ( "${my.dfdk.wsdl.url:http://xxx.xxx.asmx?wsdl}" )

  public void setdebitwsdlurl(string debitwsdlurl) {

   debitpushclient.debitwsdlurl = debitwsdlurl;

  }

 

  /**

   * 从配置文件中读取命名空间地址

   * @param uri 命名空间地址

   */

  @value ( "${my.dfdk.wsdl.namespace.uri:http://tempuri.org/}" )

  public void seturi(string uri) {

   debitpushclient.uri = uri;

  }

 

  /**

   * 初始化wsdl

   * @throws exception

   */

  @override

  public void afterpropertiesset() throws exception {

   initwsdlurl();

   service_name = new qname(uri, "financialsharing" );

  }

}

4,客户端调用,调用成功后,即可获取正确的响应结果,不需要再将xml转成java对象

这篇文章,只是简单介绍了用wsdl地址生成java客户端调用代码的一种方法,除此之外,还可以用maven plugin

cxf-codegen-plugin

生成

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<build>

   <finalname>cxf-date</finalname>

 

   <plugins>

    <plugin>

     <groupid>org.apache.cxf</groupid>

     <artifactid>cxf-codegen-plugin</artifactid>

     <version>${cxf.version}</version>

     <executions>

      <execution>

       <id>generate-sources</id>

       <phase>generate-sources</phase>

       <configuration>

        <sourceroot>src/main/resources/cxf</sourceroot>

        <wsdloptions>

         <wsdloption>

          <wsdl>http: //localhost:8080/cxf-date/services/bookservice?wsdl</wsdl>

          <frontend>jaxws21</frontend>

          <faultserialversionuid> 1 </faultserialversionuid>

         </wsdloption>

        </wsdloptions>

       </configuration>

       <goals>

        <goal>wsdl2java</goal>

       </goals>

      </execution>

     </executions>

    </plugin>

   </plugins>

  </build>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/wenzhi20102321/article/details/68484354

查看更多关于使用cmd根据WSDL网址生成java客户端代码的实现的详细内容...

  阅读:60次