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

相关文章
|
10天前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
21 2
|
10天前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
13 1
|
10天前
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
19 1
|
11天前
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
21 1
|
12天前
|
存储 Java
深入理解java对象的访问定位
这篇文章深入探讨了Java对象的访问定位机制,比较了使用句柄和直接指针两种主流的对象访问方式,并指出了它们各自的优势,例如句柄访问在对象移动时的稳定性和直接指针访问的速度优势。
23 0
深入理解java对象的访问定位
|
28天前
|
存储 Java 关系型数据库
java: 无法访问org.springframework.context.ConfigurableApplicationContext
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
40 11
|
1天前
|
Java 数据库
基于java的汽车服务管理系统(Car Service Management System)
基于java的汽车服务管理系统(Car Service Management System)
7 0
|
27天前
|
安全 Java 编译器
java访问字段
java访问字段
24 6
|
25天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
24天前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
14 1