基于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获取的。

相关文章
|
22天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
27 3
|
16天前
|
Java 测试技术
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
19 0
|
5天前
|
JavaScript Java 测试技术
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
16 1
|
5天前
|
JavaScript Java 测试技术
基于Java的中学生课后服务的信息管理与推荐的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中学生课后服务的信息管理与推荐的设计与实现(源码+lw+部署文档+讲解等)
24 2
|
6天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
6天前
|
JavaScript Java 测试技术
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
25 0
|
8天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
9天前
|
JavaScript Java 测试技术
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家政公司服务平台的设计与实现(源码+lw+部署文档+讲解等)
25 1
|
12天前
|
JavaScript Java 测试技术
基于Java的社区老年人关怀服务系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的社区老年人关怀服务系统的设计与实现(源码+lw+部署文档+讲解等)
25 1