java webservice超时时间设置方法代码

 更新时间:2024年01月05日 15:38:37   作者:追逐梦想永不停  
当我们使用WebService进行调用时,有时会出现超时的情况,下面这篇文章主要给大家介绍了关于java webservice超时时间设置方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、前言

之前遇到过rabbitmq队列卡死的问题,有消费者,但是就不消费队列里的消息;

后来发现是消费者执行webservice方法时,没有设置超时时间,默认永不超时,然后赶上对端系统出问题,方法就一直执行不完,队列消息也就一直卡住不动。(加try-catch是没有用的,catch不到,就是没有执行完一直卡住,因为超时时间默认永不超时)

在此总结下java webservice设置超时时间的方法。

二、代码

		try {
			JaxWsDynamicClientFactory dcf=JaxWsDynamicClientFactory.newInstance();
			
			//这里有2种方法,不确定到底是哪种,就都写上了
            dcf.getJaxbContextProperties().put("com.sun.xml.ws.request.timeout", 10000);
            dcf.getJaxbContextProperties().put("com.sun.xml.ws.connect.timeout", 10000);
            dcf.getJaxbContextProperties().put("com.sun.xml.internal.ws.connection.timeout", 10000);//建立连接的超时时间为10秒
            dcf.getJaxbContextProperties().put("com.sun.xml.internal.ws.request.timeout", 10000);//指定请求的响应超时时间为10秒

			LOGGER.info("设置超时时间");
			Client client= dcf.createClient("http://128.0.0.1/A/services/BService?wsdl");

            //这里再设置超时时间好像也行
			//client.getRequestContext().put("com.sun.xml.ws.request.timeout", 10000);
			//client.getRequestContext().put("com.sun.xml.ws.connect.timeout", 10000);
            //client.getRequestContext().put("com.sun.xml.internal.ws.connection.timeout", 10000);//建立连接的超时时间为10秒
            //client.getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 10000);//指定请求的响应超时时间为10秒


			//如果不设置超时时间,那么如果连接不通,就会卡在这一步
			Object[] resultObj = client.invoke("createOrenableAccount", new Object[] { accountToXML("abc") });
			String retXML = resultObj[0].toString();
			StringReader read = new StringReader(retXML);
			InputSource source = new InputSource(read);
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(source);
			Element root = doc.getRootElement();
		    LOGGER.info(root.getChildText("code"));// 0  成功
			LOGGER.info(root.getChildText("code") + ", " + root.getChildText("message"));
		} catch (Exception e) {
			LOGGER.error((new StringBuilder("invokeWS Exception:")).append(e).toString(),e);
		}
		
------------------
	public static String accountToXML(String userName) {
		Document document = null;
		Element et = new Element("account");
		document = new Document(et);
		document = addNode(document, "appname", "AI");
		document = addNode(document, "uid", userName);
		document = addNode(document, "eruid", userName);
		return documentStr(document);
	}

-------------------
	public static String documentStr(Document document) {
		XMLOutputter xop = new XMLOutputter();
		String xmlStr = xop.outputString(document);
		return xmlStr;
	}	

------------------------
pom.xml是这样:
		<!-- Apache CXF -->
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-rs-client</artifactId>
			<version>3.0.0</version>
		</dependency>
		<dependency>
		  <groupId>org.apache.cxf</groupId>
		  <artifactId>cxf-rt-frontend-jaxws</artifactId>
		  <version>3.0.0</version>
		</dependency>

总结 

到此这篇关于java webservice超时时间设置方法的文章就介绍到这了,更多相关java webservice超时时间设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot中路径参数带 (%2F)的问题彻底解决方案

    Springboot中路径参数带 (%2F)的问题彻底解决方案

    这篇文章主要介绍了彻底解决Springboot中路径参数带(%2F)的问题,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • JAVA开发环境Vs code配置步骤详解

    JAVA开发环境Vs code配置步骤详解

    这篇文章主要为大家介绍了JAVA开发环境Vs code配置步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • java 判断二进制文件的方法

    java 判断二进制文件的方法

    这篇文章主要介绍了java 判断二进制文件的方法的相关资料,这里提供实例来实现判断文件是否问二进制文件,希望能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Java设计模式--适配器模式详解

    Java设计模式--适配器模式详解

    这篇文章主要介绍了java设计模式之适配器模式Adapter的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Mybatis中的PageHelper的执行流程分析

    Mybatis中的PageHelper的执行流程分析

    这篇文章主要介绍了Mybatis的PageHelper执行流程,本文给大家介绍介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 如何用Java Stream写出既高雅又装*的代码

    如何用Java Stream写出既高雅又装*的代码

    如何让同事看不懂你写的代码,然后觉得你非常牛逼,这里用到了stream()与Lambda,需要有点基础,没基础你炫个&#128296;优雅永不过时~ 看下面文章时记得穿燕尾服,拿高脚杯
    2021-08-08
  • 详解Java Web项目启动执行顺序

    详解Java Web项目启动执行顺序

    这篇文章主要介绍了详解Java Web项目启动执行顺序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Spring Boot 接口加解密功能实现

    Spring Boot 接口加解密功能实现

    在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用;如果我们想保证数据传输的安全,对接口出参加密,入参解密,这篇文章主要介绍了Spring Boot 接口加解密功能实现,需要的朋友可以参考下
    2023-04-04
  • Hibernate管理Session和批量操作分析

    Hibernate管理Session和批量操作分析

    这篇文章主要介绍了Hibernate管理Session和批量操作的技巧,包括Hibernate管理Session、批量处理数据等的常用技巧及注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • SpringBoot快速过滤出一次请求的所有日志的示例代码

    SpringBoot快速过滤出一次请求的所有日志的示例代码

    在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位,本文给大家介绍了SpringBoot如何快速过滤出一次请求的所有日志,文中有相关的代码和示例供大家参考,需要的朋友可以参考下
    2024-03-03

最新评论