`
klts
  • 浏览: 39247 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

线程控制-客户端获取信息无反应

 
阅读更多

今天遇到一个问题,webservice client获取server信息没有任何反应,现在希望如果这个等待时间(超时)过长,那么中断这个request。

方法一:weblogic设置方法

(javax.xml.rpc.Stub)PortObject._setProperty("weblogic.wsee.transport.connection.timeout", 5);
(javax.xml.rpc.Stub)PortObject._setProperty("weblogic.wsee.transport.read.timeout", 5);

 

 

 

 资源地址:http://edocs.weblogicfans.net/wls/docs92/webserv/client.html

 

方法二:下面是自己最初用thread手动写的例子

public class Test1 {
	public static void main(String[] args) {
		new Test1().test("para1");
	}
	
	/**
	 * 主线程中,在启动A线程之前先启动B线程来控制超时时间
	 * 由于A,B和主线程平级运行,所以在主线程里需要等待A,B线程isNotAlive的时候再来判定变量isResponse,进而控制是否超时
	 * @param para
	 * @return
	 */
	public synchronized String test(String para) {
		String result = null;
		
		B b = new B();
		A a = A.getIntance();
		a.setPara(para);

		b.start();
		a.start();
		while(true) {
			if (A.isResponse && !a.isAlive() && !b.isAlive()) {
				result = a.getResult();
				System.out.println(a.getResult());break;
			}
			if (!A.isResponse && !a.isAlive() && !b.isAlive()) {
				System.out.println("time out");break;
			}
		}
		
		System.out.println(a.getPara());
		a.clear();
		System.out.println(a.getPara());
		return result;
	}
}

class A extends Thread{
	
	private static A a = null;
	private A(){}
	
	public static A getIntance() {
		if (a == null) {
			a = new A();
		}
		return a; 
	}

	public String result;
	public String para;
	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}

	public String getPara() {
		return para;
	}

	public void setPara(String para) {
		this.para = para;
	}

	public void run() {
		result = getSIDetails();
	}
	
	public static boolean isResponse = false;
	public String getSIDetails(){
		//获取server的information,模拟无反应
		while (true) {}
		
		//isResponse = true;
		//return result;
	}
	
	public void clear() {
		a = null;
		result = null;
		para = null;
		isResponse = false;
	}
}

class B extends Thread {
	
	public void run() {
		if (!A.isResponse) {
			try {
				sleep(10*1000);//设置超时时间,等待10s后B线程舒醒,继续执行后面的程序

				if (A.getIntance().isAlive()) {
					A.getIntance().stop();
				}
					
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

 

  • 大小: 68.3 KB
分享到:
评论

相关推荐

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    【RT-Thread作品秀】智慧酒店新风监控系统-电路方案

    结合六轴传感器(LSM6DSOX)和气压传感器将酒店新风系统中的气压,室内温度,风机振动信息上传至云端,在云端可以实时获取新风系统状态信息,并可以基于通信协议对风机进行控制。 图片无法上传,具体图片见“其他...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    F 修复 播放临时文件时连续获取播放时间导致工具卡死的问题 反馈详情 F 修复 miniprogramRoot 为 "/" 时编译报错的问题 F 修复 代码保护异常时没有报错的问题 反馈详情 F 修复 npm 构建时 Uncaught TypeError: ...

    Eclipse权威开发指南2.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 ...

    Eclipse权威开发指南3.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... ...

    Eclipse权威开发指南1.pdf

    1.4 获取与安装Eclipse.. 11 1.5 本章小结...... 11 1.6 参考文献...... 12 第2章 Eclipse入门 13 2.1 第一步...... 14 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... ...

Global site tag (gtag.js) - Google Analytics