`

CXF调用webservices

 
阅读更多

如何实现调用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调用.netwebService产生服务器未能识别 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调用WebServices

    总之,Spring集成CXF调用Web Services是一个强大的组合,它提供了灵活的配置方式和强大的功能,使开发者能够更高效地构建和维护Web服务应用。通过理解并实践上述知识点,开发者可以更好地驾驭这一技术栈。

    CXF实现WebServices_4

    【标题】"CXF实现WebServices_4"深入解析 在IT行业中,Web Services是一种用于构建分布式系统的重要技术,它允许不同的应用程序通过网络进行通信。Apache CXF是Java平台上一个强大的开源框架,专门用于实现和消费...

    CXF实现WebServices_1

    5. 实战应用:通过实际案例,学习如何使用CXF创建和调用Web服务,以及如何分析和使用WSDL文件。 学习这些内容,不仅可以提升开发者在企业级应用中的技术水平,也能帮助他们更好地理解和解决跨系统通信的问题。

    Spring集成Cxf暴露WebServices示例

    5. **部署和测试**:将Spring和Cxf配置整合到Web应用程序中,部署到服务器(如Tomcat),然后可以通过HTTP客户端工具(如Postman)或Web服务测试工具来调用Web服务。 在提供的压缩包文件`CxfSpringServer`中,可能...

    ssh+cxf webservices完整版

    【SSH+CXF Webservices 完整版】项目是一个基于Spring、Struts、Hibernate和CXF的Web服务实现。这个项目提供了完整的源码和必要的库文件(jar包),旨在帮助开发者快速理解和部署一个使用CXF进行Web服务开发的示例。...

    Apache CXF部署WebServices实例代码

    6. **测试服务**:部署完成后,你可以通过HTTP客户端或者CXF的测试工具来调用你的Web服务,验证其是否正常工作。 在提供的压缩包文件"ESBServer"中,可能包含了整个服务部署的示例项目,包括源代码、配置文件以及...

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    而Apache CXF则是一个强大的Web服务框架,用于创建和消费Web服务。本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入...

    CXF WebServices整合SSH2和Uploadify上传控件

    本项目主要涉及了三个核心技术:CXF WebServices、SSH2以及Uploadify上传控件,这三者在IT领域都有重要的应用价值。这里我们将深入探讨这些技术及其整合过程。 **CXF WebServices** CXF(CXF - The Apache CXF ...

    CXF+Eclipse开发Web Services环境搭建+实例

    本实验旨在通过CXF与Eclipse集成环境搭建一个基础的Web Services开发平台,并通过一个简单的示例来展示如何创建和调用Web Services服务。 #### 实验要求 1. **环境准备**:在Eclipse IDE中安装并配置CXF插件,用于...

    springboot整合CXF发布webservice和客户端调用

    通过这个项目,开发者不仅可以了解SpringBoot和CXF的基本概念,还能掌握两者如何协同工作,发布和调用Web服务。同时,对于SpringBoot应用的打包、部署和测试也有了一定的认识。这个例子是一个理想的实践项目,对于...

    CXF结合Spring开发WebServices示例工程

    "CXF结合Spring开发WebServices示例工程"包含了服务端和客户端的代码示例。服务端代码演示了如何定义服务接口,实现服务逻辑,并将其配置到Spring中。客户端代码展示了如何创建CXF客户端代理,并使用它来调用服务端...

    java调用exchange web services

    Java调用Exchange Web Services(EWS)是一种常见的技术实践,用于与Microsoft Exchange Server进行交互,进行邮件发送、日历管理、联系人同步等任务。EWS是Exchange Server提供的一组基于SOAP协议的Web服务接口,...

    java使用xfire创建和调用webservices

    XFire 是 Apache CXF 的前身,它提供了一种轻量级的解决方案来创建和使用 WebServices。以下是一些关键特性: 1. **SOAP 支持**:XFire 支持 SOAP 1.1 和 1.2,允许开发者构建符合 SOAP 规范的 WebServices。 2. **...

    实现webServices接口调用demo

    2. 调用服务:通过代理对象调用Web服务方法。 ```java String response = myWebService.sayHello("World"); System.out.println(response); ``` 六、内部与外部访问 - 内部访问:通常是指在同一应用内或者在同一台...

    CXF webService 接口

    6. **客户端生成**:CXF提供了工具,如CXF WSDL2Java或JAX-WS的wsimport工具,可以从服务的WSDL生成对应的客户端代码,便于调用Web服务。 7. **安全和事务管理**:CXF支持WS-Security(Web Services Security)和WS...

    WebServices开发-Axis实例CXF实例

    在Axis中,开发者可以通过简单的API创建服务端的WebServices,也可以生成客户端的Stubs,使得调用远程服务如同调用本地方法一样简单。Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API ...

    Java webservice cxf客户端调用demo和服务端

    2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像调用本地对象一样调用Web服务方法。 3. 参数传递与调用:设置方法参数并执行服务调用,CXF会处理底层的SOAP消息交换。 4. 处理响应:获取服务返回...

    CXF客户端调用例子

    CXF(CXF: Composite eXtensible Services Framework)是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)中的Web服务。CXF客户端调用例子展示了如何使用CXF来创建和消费Web服务。这个例子包含了服务端...

    cxf发布webservice

    WSDL(Web Services Description Language)是一种XML格式,用于定义Web服务的接口,包括服务提供的操作、输入和输出消息以及服务的位置。`wsdl2java`是CXF提供的命令行工具,它可以将一个WSDL文件转换为Java源代码...

    CXF 编写 WebServer DEMO

    1. **服务接口和服务实现**:在CXF中,Web服务通常由一个Java接口定义,该接口描述了可供调用的公共方法。然后,开发者提供该接口的实现,包含实际的业务逻辑。 2. **WSDL(Web Services Description Language)**...

Global site tag (gtag.js) - Google Analytics