`

使用CXF service 时容易出现的异常

 
阅读更多

 

问题一:Could not find destination factory for transport

 

需要加入cxf-rt-transports-http-jetty的jar包,以下是maven中的配置
<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>2.3.3</version>
</dependency>
 

 

问题二:No operation was found with the name {。。。} ,原因是在当前默认的命名空间中找不到请求的操作方法;

 

解决方法:如果报的是找不到接口,那么在实现类上配置
@WebService(endpointInterface = "com.cxf.hello.IHelloService",targetNamespace = "http://hello.cxf.com/" ) 
public class HelloServiceImpl implements IHelloService{
  ......
}
 其中targetNamespace中的路径为包名的逆序排列;如果报的是找不到相关的javabean类,那么在相关的类上配置
@XmlType(name = "Hello",namespace = "bean.cxf.com") 
public class Hello{
 ......
}
 该命名空间指向在客户端调用的时候的对应的bean所在包的逆序(用于将当前的命名空间指向接口,需要重新发布公共接口)
 
问题三:A cycle is detected in the object graph. This will cause infinitely deep XML,原因是在两个对象中又互相引用了彼此,比如:
public  class UserLogin{
   private int userId;
   private String userName;
   private String userPassword;
   private UserInfo info;
   .........
 }

public class UserInfo {
   private int userId;
   private String sex;
   private String address;
   private UserLogin login;
   .......
 }
 此时需要在类的一端调用中使用@XmlTransient注解(用于get方法上),该注解的作用是不将该属性解析成Xml文件中的元素
 
问题四:java.net.SocketTimeoutException: Read timed out 
在客户端的spring中的配置如下:
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
         http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://cxf.apache.org/transports/http/configuration
         http://cxf.apache.org/schemas/configuration/http-conf.xsd"
       default-autowire="byName">

    <http-conf:conduit name="{http://investigation.cxf.spiss.sh.org/}CxfInvestServiceImplService.http--conduit">
         <http-conf:client ConnectionTimeout="500000" ReceiveTimeout="600000"/>
    </http-conf:conduit>

</beans>
 然后在客户端创建了client之后,接着键入如下代码:
            HTTPConduit http = (HTTPConduit) client.getConduit();
            HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
            httpClientPolicy.setConnectionTimeout(600000);//连接超时时间
            httpClientPolicy.setAllowChunking(false);
            httpClientPolicy.setReceiveTimeout(600000);//接收超时时间
            http.setClient(httpClientPolicy);
 即可解决
 
分享到:
评论

相关推荐

    springBoot完整整合WebService框架CXF示例

    接口通常使用JAX-WS标准的`@WebService`注解标记,实现类则通过`@WebService(serviceName = "...")`注解。然后,通过CXF的`JaxWsServerFactoryBean`,我们可以将服务注册到CXF服务器上。 4. **服务调用**:在服务...

    CXF WebService整合Spring的简单实现

    整合CXF与Spring的主要优点是,Spring可以帮助管理CXF服务的生命周期,并提供依赖注入(DI)功能,使得服务更容易测试和维护。以下是一步一步的整合过程: 1. **环境准备**:确保已安装并配置了Java开发环境,如JDK...

    CXF整合spring实现SOAP接口开发

    在IT行业中,CXF是一个广泛使用的开源框架,它支持服务导向架构(SOA)并通过SOAP协议提供Web服务。Spring框架则是Java应用开发的核心框架,它提供了丰富的功能来管理bean、处理事务、AOP(面向切面编程)等。将CXF...

    webservice客户端,整合spring

    Spring和CXF结合使用时,可以统一处理Web Service调用中的异常,将其转化为自定义的业务异常,便于应用层进行适配和处理。 9. **安全考虑**: 整合Spring Security和CXF,可以实现对Web Service调用的安全控制,...

    Java使用XFire调用WebService接口.docx

    Java 使用 XFire 调用 WebService 接口是一个常见的技术场景,特别是在集成不同系统或者构建分布式服务时。XFire 是一个 Java 框架,它允许开发者快速、容易地创建和消费 Web 服务。本篇文章将详细讲解如何在 Java ...

    web+Service开发

    - **错误处理**:设计合理的错误处理机制,确保服务在遇到异常时能够给出明确的反馈。 #### 五、案例分析与实践 - **案例1:购物车服务**:构建一个简单的购物车服务,用户可以通过Web服务接口添加商品到购物车、...

    java xfire调用webservice

    XFire是Apache CXF项目的前身,它是一个用于构建和开发Web服务的框架。在本文中,我们将深入探讨如何使用Java XFire来调用本地及远程的WebService。 首先,让我们理解什么是Web服务。Web服务是一种基于网络的软件...

    c++webservice

    在C++中调用Web服务通常需要借助第三方库或框架,如gSOAP、Apache CXF、Qt等,这些工具提供了编译器和运行时支持,帮助开发者处理SOAP消息的序列化和反序列化。 3. gSOAP库 gSOAP是广泛使用的C/C++ Web服务开发...

    webserviceDemo

    Web服务(Web Service)是一种基于网络的、分布式的模块化组件,它允许不同的应用程序之间进行交互和数据交换。在Java中,开发Web服务通常使用JAX-WS(Java API for XML Web Services)或Apache CXF、XFire等开源...

    java WebService调用的几种方式详细源代码

    它可以与Spring的其他模块集成,如Spring MVC,使得构建和消费WebService变得更加容易。 在实际开发中,选择哪种方式取决于项目的具体需求,如性能、易用性、兼容性等。对于新项目,通常推荐使用RESTful风格,因为...

    webservice轻松获取服务端

    **WSDL2Java工具**是Apache CXF框架提供的一种工具,它可以将一个WSDL文件转换成Java代码,生成客户端和服务端的 stubs 和 skeletons,使得开发者可以更容易地与Web服务进行交互。这个工具的工作流程如下: 1. **...

    Java调用webService应用.pdf

    使用WebService时只需要直接调用远端的WebService就可以了,这使得各种功能可以很容易地集成到门户站点中,为用户提供一个统一的、友好的界面。此外,可以在应用程序中使用第三方的WebService功能,也可以通过...

    xfire 与Spring完整集成实例(WebService)

    XFire是一个早期的Java Web Service框架,它提供了快速、轻量级的方式来创建和消费SOAP服务。而Spring是一个广泛应用的Java企业级应用开发框架,它支持多种服务集成,包括Web服务。 在描述中提到了一个博客链接,...

    Android与服务器端数据交互(基于SOAP协议整合android+webservice)_.docx

    在PC上,我们通常会使用如XFire、Axis2或CXF等库来访问WebService,但在资源有限的Android设备上,我们需要寻找更适合的解决方案。 KSOAP2是一个适用于Android的轻量级库,专门用于处理SOAP通信。在开始使用KSOAP2...

Global site tag (gtag.js) - Google Analytics