基于wsdl2java访问外来service服务

简介:

一、wsdl2java介绍

Wsdl2java是cxf提供的一个用于生成客户端代码的工具,它的功能跟wsimport差不多。但是wsdl2java工具只能生成访问基于cxf发布的服务的代码。Wsdl2java位于cxf_home/bin目录下,因此使用这个工具时需要添加目录到path中。Wsdl2java工具的参数与wsimport有所不同,主要有:

-d 参数,指定生成代码的目录

-p 参数,指定生成的新的包结构

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

二、新建java工程,并发布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服务。

三、利用wsdl2java工具生成客户端调用服务代码

在D盘新建文件夹generatedCode

打开cmd命令,切换到该目录下

运行wsdl2java –d . http://localhost:8080/People?wsdl,在generatedCode文件夹下生成访问服务的代码。

四、新建客户端工程,调用webservice服务

在eclipse中新建java工程,命名为CXFClient

将第三部生成的.java类文件整体复制到src目录下.

在src目录下新建com.webservice.use包,在包中新建类ServiceUse.用于完成对webservice的调用,代码为:

package com.webservice.use;
 
import com.hellocxf.serviceimpl.People;
import com.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类型和调用的端口、方法都是从wsdl获取的。

相关文章
|
2月前
|
存储 算法 安全
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
Java对象创建和访问
|
3月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
148 7
|
4月前
|
NoSQL JavaScript 前端开发
Java访问MongoDB
Java访问MongoDB
56 21
|
4月前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
315 1
|
6月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
114 3
|
6月前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
158 2
|
7月前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
135 5
|
7月前
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
159 2
|
7月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
89 2