- 浏览: 599267 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
<jaxws:endpoint id="xxWebService" implementor="#firstCxfService" address="/xxWebService" />
别忘了address中的 / 非常重要
package com.controller; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import com.webservice.FirstCxfService; import com.webservice.bo.TestBo; /** * @author: * @TODO:动态wsdl文件 */ public class CxfClient { private static final String WSDL_URL = "http://localhost:8080/RestFulServer/services/xxWebService?wsdl"; public static void main(String[] args) { // 第一种方式需要客户端生成wsdl对应的java文件 (非动态) JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); // 获取服务器端 factoryBean.setAddress(WSDL_URL); // 通过客户端的接口获取服务器端的接口 factoryBean.setServiceClass(FirstCxfService.class); FirstCxfService hello = (FirstCxfService) factoryBean.create(); System.out.println(hello.sayHello(2)); TestBo testBo = hello.getTestBo("lau"); System.out.println(testBo.getName()); // 第二种方式 不需要wsdl文件生成java文件 (动态) try { JaxWsDynamicClientFactory dynamicClientFactory = JaxWsDynamicClientFactory .newInstance(); Client client = dynamicClientFactory .createClient(WSDL_URL); // 第一个参数是方法名 第二个参数是方法对应的参数值 Object[] objects = client.invoke("sayHello", 2); System.out.println(objects[0].toString()); objects = client.invoke("getTestBo", "lau"); //得到对象所封装的值 System.out.println(objects[0].getClass().getMethod("getName").invoke(objects[0])); } catch (Exception e) { e.printStackTrace(); } } }
如果动态调用出差则可能由下面的原因导致
1.注意:如果使用动态调用wsdl文件则应该在定义webService时指定命名空间
命名空间的值与wsdl文件中的命名空间想对应
2.产生的原因是没有获得编译环境,也就是JRE设置的问题,需要在eclipse里面把jre设置为jdk下的jre。
package com.webservice.impl; import javax.annotation.Resource; import javax.jws.WebService; import com.dwr.Test; import com.dwr.TestDAO; import com.webservice.FirstCxfService; import com.webservice.bo.TestBo; //指定命名空间targetNamespace @WebService(targetNamespace = "http://webservice.com/", endpointInterface = "com.webservice.FirstCxfService") public class FirstCxfServiceImpl implements FirstCxfService { @Resource private TestDAO testDAO; @Override public int sayHello(int id) { Test test = new Test(); test.setId(id); return this.testDAO.getCount(test); } @Override public TestBo getTestBo(String name) { TestBo testBo = new TestBo(); testBo.setName(name); return testBo; } }
WSDL文件中的wsdl:definitions标签下的targetNamespace属性值对应
<?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://webservice.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="FirstCxfServiceImplService" targetNamespace="http://webservice.com/"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/" elementFormDefault="unqualified" targetNamespace="http://webservice.com/" version="1.0"> <xs:element name="getTestBo" type="tns:getTestBo"/> <xs:element name="getTestBoResponse" type="tns:getTestBoResponse"/> <xs:element name="sayHello" type="tns:sayHello"/> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/> <xs:complexType name="sayHello"> <xs:sequence> <xs:element name="arg0" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="sayHelloResponse"> <xs:sequence> <xs:element name="return" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:complexType name="getTestBo"> <xs:sequence> <xs:element minOccurs="0" name="arg0" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="getTestBoResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="tns:testBo"/> </xs:sequence> </xs:complexType> <xs:complexType name="testBo"> <xs:sequence> <xs:element minOccurs="0" name="name" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="sayHelloResponse"> <wsdl:part element="tns:sayHelloResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHello"> <wsdl:part element="tns:sayHello" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="getTestBo"> <wsdl:part element="tns:getTestBo" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="getTestBoResponse"> <wsdl:part element="tns:getTestBoResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="FirstCxfService"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHello" name="sayHello"> </wsdl:input> <wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="getTestBo"> <wsdl:input message="tns:getTestBo" name="getTestBo"> </wsdl:input> <wsdl:output message="tns:getTestBoResponse" name="getTestBoResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="FirstCxfServiceImplServiceSoapBinding" type="tns:FirstCxfService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getTestBo"> <soap:operation soapAction="" style="document"/> <wsdl:input name="getTestBo"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="getTestBoResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="sayHello"> <soap:operation soapAction="" style="document"/> <wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="FirstCxfServiceImplService"> <wsdl:port binding="tns:FirstCxfServiceImplServiceSoapBinding" name="FirstCxfServiceImplPort"> <soap:address location="http://localhost:8080/RestFulServer/services/xxWebService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
- cxf_2.2.6.rar (4.9 MB)
- 下载次数: 0
发表评论
文章已被作者锁定,不允许评论。
相关推荐
"Java 调用 WSDL" Java 调用 WSDL 是一种常见的技术,它允许 Java 应用程序调用远程... Java 调用 WSDL 文件是通过解析 WSDL 文件来获取服务的接口和操作信息,然后使用 AXIS 库或 SOAP 库等来调用远程的 Web 服务。
在这个教程中,我们将学习如何使用Apache Axis2将一个简单的类转换为对外提供服务的Web服务,并生成WSDL文件,以及如何调用这些服务。 首先,我们需要了解提供的类`Person`,它包含`name`、`age`和`gender`三个属性...
本文档详细介绍了如何使用Java调用wsdl文件,并通过两种主要方式:使用cxf的wsdl2java工具生成本地类和创建客户端远程调用接口进行操作。 首先,在进行任何操作之前,需要确保wsdl接口可用且能正常调用。接着,文档...
WSDL 文件分为两个主要版本:WSDL 1.1 和 WSDL 2.0。其中,WSDL 1.1 是由 W3C 组织于 2001 年发布的规范,而 WSDL 2.0 则在 2007 年被提出。这两个版本的规范文档分别可以在以下链接找到: - [Web Services ...
WSDL文件是一种XML文档,它主要由两大部分组成:抽象定义和具体定义。这两部分分别负责定义服务接口和具体的实现细节。 - **抽象定义**:这部分不依赖于任何特定的编程语言或操作系统,而是专注于描述服务的接口。...
springboot调用webservice接口的两种方式,不使用axis
开发过程中,常见的WSDL工具包括Apache Axis、IBM WebSphere Studio Application Developer、Microsoft .NET Framework的Wsdl.exe等,它们可以帮助开发者生成和处理WSDL文件。 总结来说,WSDL是Web服务的重要组成...
gSOAP不仅能够解析和生成WSDL文件,还能自动生成客户端和服务端的C++代码,大大简化了与Web服务交互的复杂度。 在你的描述中提到,你已经从ONVIF官网获取了最新的WSDL文件,并下载了相应的XSD(XML Schema ...
它支持SOAP(简单对象访问协议)和WSDL(Web服务描述语言),这两种技术是实现跨平台网络通信的关键标准。本文将深入探讨如何在不同平台上进行gSOAP的移植工作,特别是涉及到与WSDL文件相关的操作,以及在IPCAM...
除了上述两种方法外,我们还可以直接通过反射机制来调用WebService。这种方式更灵活但相对复杂,适用于对性能要求不高或不希望编译额外代码的情况。 **步骤1:**下载WSDL并解析。 此步骤与第一种方法相同。 **...
WSDL文件的结构通常分为抽象定义和具体定义两大部分: 1. 抽象定义: - **Types**:定义独立于特定平台和编程语言的数据类型,这些类型可以是基本类型,也可以是自定义的复杂类型。 - **Messages**:定义服务操作...
WSDL文件是XML格式的文档,描述了服务提供的操作、消息交换模式以及如何通过网络调用这些服务。 标题提到的"onvif所有 wsdl文件",指的是ONVIF规范中的所有核心服务接口的WSDL文件集合。这些文件对于开发者来说是至...
### WSDL文件详解 #### 使用WSDL的原因 WSDL(Web Services Description Language)是一种用于描述网络服务的标准格式,它能够帮助实现跨语言和跨平台的服务交互。随着互联网技术的发展,不同系统之间的通信变得...
`rpc`风格模拟远程方法调用,使得客户端和服务端之间的交互看起来像调用函数或方法;而`document`风格则侧重于传递XML文档,更符合数据交换的语义。use属性有`encoded`和`literal`两个值。`encoded`表示SOAP消息体中...
例如,一个WSDL文件可能定义了一个名为“Add”操作,接收两个数字并返回它们的和。 WSDL文档包含以下几个主要部分: 1. **服务定义**:指定服务的名称和端点(也称为SOAP地址或Endpoint),这是服务实际可供访问的...
**WSDL文件详解:Web Services基础** Web服务(Web Services)是一种通过互联网交换数据和执行功能的方式...通过阅读和学习`wsdl-xsd.doc`和`wsdl文件详解.doc`这两个文档,你将能深入理解WSDL的工作原理和实际应用。
描述中提到的“wsdl2h”和“soapcpp2”是两个关键工具,它们在C++环境中处理WSDL文件以创建ONVIF服务和客户端的代码框架: 1. `wsdl2h`:这是一个由GSOAP库提供的命令行工具,它的主要作用是从WSDL文件中提取类型...
WSDL文件是Web服务客户端和服务提供者之间进行交互的基础,确保双方能够正确理解和调用服务。 本实例将深入探讨一个简单的WSDL文件结构及其组成部分,帮助读者理解如何创建和解析WSDL文件,以便更好地利用Web服务。...
WSDL有1.1和2.0两个主要版本。WSDL 1.1是最早的版本,被广泛使用;WSDL 2.0则引入了更复杂、更灵活的模型,但兼容性不如1.1版本。此外,还有许多针对特定需求的WSDL扩展,如WS-I(Web Services Interoperability)的...
CXF允许开发者通过两种主要方式实现Web服务:JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。对于WSDL发布的讨论,我们将聚焦于JAX-WS,因为它与传统的SOAP服务紧密相关,...