如何实现调用Webservice
一、准备工作
1、按文档搭建新建平台项目,配置数据库
2、确认pom中是否引入maven依赖,没有的话,请引入。
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.3.2</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.3.2</version> </dependency>
二、实现步骤
(一)调用webservice
(1)如果调用的是由java发布的webservice,且能拿到接口文件,推荐使用这种方式调用。
HelloWorldClient.java
不要忘记引入接口jar
1.package com.test.client;
2.
3.
4.import org.springframework.context.ApplicationContext;
5.import org.springframework.context.support.ClassPathXmlApplicationContext;
6.
7.
8.import com.test.server.IHelloWorldServer;
9.
10.
11.publicclass HelloWorldClient {
12.publicstaticvoid main(String[] args) {
13.
14. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
15.//如果在项目中跑,这里可以自动注入,不用手动去取
16. IHelloWorldServer helloService = (IHelloWorldServer) context.getBean("client");
17. String response = helloService.sayHello("jialin");
18. System.out.println(response);
19. }
20.
21.
22.}
applicationContext-client.xml
[html]view plaincopyprint?
1.<?xmlversion="1.0"encoding="UTF-8"?>
2.<beansxmlns="http://www.springframework.org/schema/beans"
3.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4.xmlns:jaxws="http://cxf.apache.org/jaxws"
5.xsi:schemaLocation="http://www.springframework.org/schema/beans
6. http://www.springframework.org/schema/beans/spring-beans.xsd
7. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
8. <!--
9. ***注意***
10.手动添加的内容:
11.xmlns:jaxws="http://cxf.apache.org/jaxws"
12. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
13. -->
14.
15.<importresource="classpath:META-INF/cxf/cxf.xml"/>
16.<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
17.<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
18.
19.<beanid="client"class="com.ths.projects.ths.server.IHelloWorldServer "factory-bean="clientFactory"factory-method="create"/>
20.
21.<beanid="clientFactory"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
22.<propertyname="serviceClass"value="com.ths.projects.ths.server.IHelloWorldServer"/>
23.<propertyname="address"value="http://localhost:8080/ths/ws/helloService"/>
24.</bean>
25.</beans>
(2)没有接口文件,只能拿到wsdl,推荐使用以下方式调用。
1)依然使用CXF,如果调用由java发布的webservice,推荐这种方式
A、通过wsdl文件生成客户端调用service的接口
B、生成方法:打开cxf的完整目录—》命令行中通过cd切换到这个目录(apache-cxf-2.3.2\bin)
—》执行命令—》将生成的代码放入自己的项目中
wsdl2java http://localhost:8080/ths/ws/helloService?wsdl
注:把http://localhost:8080/ths/ws/helloService?wsdl换成相应的wsdl地址
C、通过以下方式调用远程方法
String address = "http://localhost:8080/ths/ws/helloService";
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
bean.setAddress(address);
bean.setServiceClass(IHelloWorldServer.class);
IHelloWorldServer ws = (IHelloWorldServer) bean.create();
System.out.println(ws.sayHello("贾琳"));
注:要把IHelloWorldServer换成上一步中生成的service接口
2)使用axis调用webservice。如果调用由.net发布的webservice,推荐这种方式
//不带?wsdl后缀
String endpoint = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
// 创建一个服务(service)调用(call)
Service service = new Service();
//通过service创建call对象
Call call = (Call) service.createCall();
// 设置service所在URL
call.setTargetEndpointAddress(new java.net.URL(endpoint));
//qqCheckOnline 是net 那边的方法 "http://WebXml.com.cn/" 这个也要注意Namespace的地址,不带也会报错
call.setOperationName(new QName("http://WebXml.com.cn/","qqCheckOnline"));
//qqCode也是.NET那边方法的参数名,即qqCheckOnline的参数名
call.addParameter(new QName("http://WebXml.com.cn/","qqCode"),
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//避免Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误
call.setUseSOAPAction(true);
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //返回参数的类型
call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); //这个也要注意就是要加上要调用的方法Add,不然也会报错
// Object 数组封装了参数
String ret = (String) call.invoke(new Object[] {"aaaaa"});
System.out.println("--------"+ret);
说明见注释,以上代码可在项目中直接使用。注意根据自己的情况修改相应的地址,命名空间,方法,参数
相关推荐
总之,Spring集成CXF调用Web Services是一个强大的组合,它提供了灵活的配置方式和强大的功能,使开发者能够更高效地构建和维护Web服务应用。通过理解并实践上述知识点,开发者可以更好地驾驭这一技术栈。
【标题】"CXF实现WebServices_4"深入解析 在IT行业中,Web Services是一种用于构建分布式系统的重要技术,它允许不同的应用程序通过网络进行通信。Apache CXF是Java平台上一个强大的开源框架,专门用于实现和消费...
5. 实战应用:通过实际案例,学习如何使用CXF创建和调用Web服务,以及如何分析和使用WSDL文件。 学习这些内容,不仅可以提升开发者在企业级应用中的技术水平,也能帮助他们更好地理解和解决跨系统通信的问题。
5. **部署和测试**:将Spring和Cxf配置整合到Web应用程序中,部署到服务器(如Tomcat),然后可以通过HTTP客户端工具(如Postman)或Web服务测试工具来调用Web服务。 在提供的压缩包文件`CxfSpringServer`中,可能...
【SSH+CXF Webservices 完整版】项目是一个基于Spring、Struts、Hibernate和CXF的Web服务实现。这个项目提供了完整的源码和必要的库文件(jar包),旨在帮助开发者快速理解和部署一个使用CXF进行Web服务开发的示例。...
6. **测试服务**:部署完成后,你可以通过HTTP客户端或者CXF的测试工具来调用你的Web服务,验证其是否正常工作。 在提供的压缩包文件"ESBServer"中,可能包含了整个服务部署的示例项目,包括源代码、配置文件以及...
而Apache CXF则是一个强大的Web服务框架,用于创建和消费Web服务。本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入...
本项目主要涉及了三个核心技术:CXF WebServices、SSH2以及Uploadify上传控件,这三者在IT领域都有重要的应用价值。这里我们将深入探讨这些技术及其整合过程。 **CXF WebServices** CXF(CXF - The Apache CXF ...
本实验旨在通过CXF与Eclipse集成环境搭建一个基础的Web Services开发平台,并通过一个简单的示例来展示如何创建和调用Web Services服务。 #### 实验要求 1. **环境准备**:在Eclipse IDE中安装并配置CXF插件,用于...
通过这个项目,开发者不仅可以了解SpringBoot和CXF的基本概念,还能掌握两者如何协同工作,发布和调用Web服务。同时,对于SpringBoot应用的打包、部署和测试也有了一定的认识。这个例子是一个理想的实践项目,对于...
"CXF结合Spring开发WebServices示例工程"包含了服务端和客户端的代码示例。服务端代码演示了如何定义服务接口,实现服务逻辑,并将其配置到Spring中。客户端代码展示了如何创建CXF客户端代理,并使用它来调用服务端...
Java调用Exchange Web Services(EWS)是一种常见的技术实践,用于与Microsoft Exchange Server进行交互,进行邮件发送、日历管理、联系人同步等任务。EWS是Exchange Server提供的一组基于SOAP协议的Web服务接口,...
XFire 是 Apache CXF 的前身,它提供了一种轻量级的解决方案来创建和使用 WebServices。以下是一些关键特性: 1. **SOAP 支持**:XFire 支持 SOAP 1.1 和 1.2,允许开发者构建符合 SOAP 规范的 WebServices。 2. **...
2. 调用服务:通过代理对象调用Web服务方法。 ```java String response = myWebService.sayHello("World"); System.out.println(response); ``` 六、内部与外部访问 - 内部访问:通常是指在同一应用内或者在同一台...
6. **客户端生成**:CXF提供了工具,如CXF WSDL2Java或JAX-WS的wsimport工具,可以从服务的WSDL生成对应的客户端代码,便于调用Web服务。 7. **安全和事务管理**:CXF支持WS-Security(Web Services Security)和WS...
在Axis中,开发者可以通过简单的API创建服务端的WebServices,也可以生成客户端的Stubs,使得调用远程服务如同调用本地方法一样简单。Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API ...
2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像调用本地对象一样调用Web服务方法。 3. 参数传递与调用:设置方法参数并执行服务调用,CXF会处理底层的SOAP消息交换。 4. 处理响应:获取服务返回...
CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)中的Web服务。CXF客户端调用例子展示了如何使用CXF来创建和消费Web服务。这个例子包含了服务端...
WSDL(Web Services Description Language)是一种XML格式,用于定义Web服务的接口,包括服务提供的操作、输入和输出消息以及服务的位置。`wsdl2java`是CXF提供的命令行工具,它可以将一个WSDL文件转换为Java源代码...
1. **服务接口和服务实现**:在CXF中,Web服务通常由一个Java接口定义,该接口描述了可供调用的公共方法。然后,开发者提供该接口的实现,包含实际的业务逻辑。 2. **WSDL(Web Services Description Language)**...