基于jdk wsimport工具訪问外部webservice

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于jdk wsimport工具訪问外部webservice相关的知识,希望对你有一定的参考价值。

一、Wsimport简单介绍

Wsimport是jdk自带的。能够依据wsdl文档生成客户点调用代码的工具。

不管server端的webservice是用什么语言写的,都将在client生成java代码。

server端用什么语言写的并不重要。

Wsimport位于JAVA_HOME/bin文件夹下。Wsimport经常使用的參数有:

-d<文件夹>  --将生成.class文件。

默认參数

-s<文件夹>  --将生成.java文件。

-p<生成的新包名>  --将生成类放于指定的包下

(Wsdlurl) –http://server.port/service?wsdl,webservice的wsdl地址,必须的參数

二、新建javaproject,并公布webservice

新建java project,命名为HelloCXF。导入CXF相关的jar包。

在src文件夹中新建com.hellocxf.service包,并新建People类,People类代码为:

package com.hellocxf.service;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
 
@WebService
public interface People {
         publicString sayHello(String name);
         //@WebMethod(exclude=true)
         publicString makeFriend(String name);
}


在src文件夹中新建com.hellocxf.serviceImpl包,并新建Student类,Student代码为:

package com.hellocxf.serviceImpl;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
 
import com.hellocxf.service.People;
 
@WebService
public class Student implements People {
 
         @Override
         publicString sayHello(String name) {
                   //TODO Auto-generated method stub
                   System.out.println("Hello:"+name);
                   returnname;
         }
 
         @WebMethod(exclude=true)
         @Override
         publicString makeFriend(String name) {
                   //TODO Auto-generated method stub
                   System.out.println("makefriend with "+name+" student");
                   returnname;
         }
 
}


在src文件夹新建com.hellocxf.servicePublice包。并创建ServicePublish类,用于公布webservice.ServicePublish代码为:

package com.hellocxf.servicePublish;
 
import javax.xml.ws.Endpoint;
 
import com.hellocxf.service.People;
import com.hellocxf.serviceImpl.Student;
 
public class ServicePublish {
 
         publicstatic void main(String[] args) {
                   //TODO Auto-generated method stub
                   PeoplemService = new Student();
                  
                   Stringaddress = "http://localhost:8080/People";
                   Endpoint.publish(address,mService);
         }
 
}


执行ServicePublish类。公布webservice服务。

三、利用wsimport工具生成client调用服务代码

在D盘新建目录generatedCode

打开cmd命令,切换到该文件夹下

执行wsimport –s . http://localhost:8080/People?

wsdl,在generatedCode目录下生成訪问服务的代码。

把生成的代码中.class文件删除,仅仅保留.java的java类文件。

四、新建clientproject,调用webservice服务

在eclipse中新建javaproject,命名为CXFClient

将第三部生成的.java类文件总体拷贝到src文件夹下,复制完毕之后其文件夹结构例如以下图所看到的:

技术分享

在src文件夹下新建com.webservice.use包,在包中新建类ServiceUse.用于完毕对webservice的调用,代码为:

package com.webservice.use;
 
import com.hellocxf.serviceimpl.People;
importcom.hellocxf.serviceimpl.StudentService;
 
public class ServiceUse {
 
         publicstatic void main(String[] args) {
                   //TODO Auto-generated method stub
                  
                   //<wsdl:servicename="StudentService">
                   StudentServicestudentService = new StudentService();
                  
                   //<wsdl:portbinding="tns:StudentServiceSoapBinding"name="StudentPort">
                   //<wsdl:bindingname="StudentServiceSoapBinding" type="ns1:People">
                   Peoplepeople = studentService.getStudentPort();
                  
                   StringserviceResult = people.sayHello("yinyuchun");
                   System.out.println(serviceResult);
                  
         }
 
}


 

类ServiceUse代码中创建的service类型和调用的port、方法都是从wsdl获取的。










以上是关于基于jdk wsimport工具訪问外部webservice的主要内容,如果未能解决你的问题,请参考以下文章

使用wsimport和JAX-WS调用Web Service接口

JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类

java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport

wsimport命令生成webService java客户端代码

wsimport不是内部或者外部命令。

如何生成webservice客户端