java使用CXF生成客户端实现调用webService接口
短信预约 -IT技能 免费直播动态提醒
一、使用wsimport生成webService客户端
wsimport是JDK自带的解析wsdl文件生成本地客户端代码的工具。
生成本地客户端代码首先需要有一个wsdl结尾的访问地址或wsdl文件,如:
http://localhost:8080/hello/service/hello?wsdl
wsimport的命令常用参数:
命令 | 作用 | 举例 |
---|---|---|
-keep | 生成java源文件 | -keep |
–encoding | 指定编码格式 | -encoding utf-8 |
-d | 指定.class文件的输出目录 | -d 路径 |
-p | 定义生成类的包名,不定义的话有默认包名 | -p 路径 |
-s | 指定.java文件的输出目录, 此目录必须存在 | -s 路径 |
示例:
wsimport –s . http://localhost/hello?wsdl
-s . .为当前目录
把生成的代码放到项目目录中:
创建测试类,调用服务:
public class testApp { public static void main(String[] args) { DemoWebServiceService demoWebServiceService = new DemoWebServiceService(); DemoWebService demoWebServicePort = demoWebServiceService.getDemoWebServicePort(); String testabs = demoWebServicePort.sayHello("webservice"); System.out.println(testabs); }}
二、使用CXF生成webService本地客户端
使用cxf框架生成webservice客户端代码 首先需要下载Apache CXF
http://cxf.apache.org/download.html
下载后配置系统环境变量,在cmd中输入 wsdl2java -h命令测试是否配置成功
进入下载好的Apache CXF的bin目录下输入cmd命令在黑窗口输入解析wsdl的命令
wsdl2java -d. -p com.xxx.xxx http://localhost:8080/hello/service/hello?wsdl
把解析后生成的客户端代码,放在项目目录下.
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/bindings/soaphttp://cxf.apache.org/schemas/configuration/soap.xsdhttp://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd"> <!-- 引入CXF Bean定义如下,早期的版本中使用 --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- 注册cxf客户端的代理对象,通过spring创建代理对象,通过代理对象调用远程服务 --> <jaxws:client id="myClient" address="http://localhost:8080/hello/service/hello" serviceClass="com.T1aN.cxfClient.HelloService"></jaxws:client></beans>
测试:
public class TestApp { public static void main(String[] args) { ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("cxf.xml"); HelloService myClient = (HelloService) classPathXmlApplicationContext.getBean("myClient"); String cxf = myClient.sayHello("cxf"); System.out.println(cxf); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341