ZK Server Push实现数据主动推送

1 篇文章 0 订阅
1 篇文章 0 订阅

由于业务部门需要将现有系统的WebService中的利率,鉴于C/S客户端的维护性,因此使用了B/S的结构,框架选择了较为熟悉的ZK.主要使用了ZK较早的Server Push技术实现数据的主动推送。由于WebService是基于vb.net开发,这里的客户端就偷懒使用了Axis2直接生成的方式了~接下来就是非常简易的在ZK中调用该客户端,主要代码如下


class UpdateRunnable implements Runnable {

boolean running = false;

                int maxRatio = 10;

		public void run() {
			running = true;
			while (running) {
				synchronized (stockModel) {
					clearAll();
					if (params) {//用于查询
						try {
							MarketStub fms = new MarketStub();
							GetXmlCNYFWD_Point xmlCnyfwdPt = new GetXmlCNYFWD_Point();
							xmlCnyfwdPt.setCcy(sccy);
							xmlCnyfwdPt.setPair(spair);
							Iterator it = fms.getXmlCNYFWD_Point(xmlCnyfwdPt)
									.getGetXmlCNYFWD_PointResult().getExtraElement()
									.getChildElements();
							while (it.hasNext()) {
								OMElement ome = (OMElement) it.next();
								String exCode = ome.getFirstChildWithName(
										new QName("CNYFWDPoint_Code")).getText();
								Double exBid = Double
										.valueOf(ome.getFirstChildWithName(
												new QName("Bid")).getText());
								Double exAsk = Double
										.valueOf(ome.getFirstChildWithName(
												new QName("Ask")).getText());
								String dt = ome.getFirstChildWithName(
										new QName("InputDate")).getText();
								CnyfwdPtInfo exRt = new CnyfwdPtInfo(exCode, exBid,
										exAsk, dt);
								stockModel.add(exRt);// ListModelList stockModel;
							}
						} catch (AxisFault e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (RemoteException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					} else {
						try {
							MarketStub fms = new MarketStub();
							GetAllCNYFWD_Point allCnyfwdPt = new GetAllCNYFWD_Point();
							Iterator it = fms.getAllCNYFWD_Point(allCnyfwdPt)
									.getGetAllCNYFWD_PointResult().getExtraElement()
									.getChildElements();
							while (it.hasNext()) {
								OMElement ome = (OMElement) it.next();
								String exCode = ome.getFirstChildWithName(
										new QName("CNYFWDPoint_Code")).getText();
								Double exBid = Double
										.valueOf(ome.getFirstChildWithName(
												new QName("Bid")).getText());
								Double exAsk = Double
										.valueOf(ome.getFirstChildWithName(
												new QName("Ask")).getText());
								String dt = ome.getFirstChildWithName(
										new QName("InputDate")).getText();
								CnyfwdPtInfo exRt = new CnyfwdPtInfo(exCode, exBid,
										exAsk, dt);
								stockModel.add(exRt);
							}
						} catch (AxisFault e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (RemoteException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}
				try {
					Thread.currentThread().sleep(90000);
				} catch (InterruptedException e) {
					running = false;
				}
			}
		}
	}


页面部分代码

<zk>
	<zscript>
		import com.living.data.cnyfwdpt.*;

		if(!desktop.isServerPushEnabled()){
		desktop.enableServerPush(true);
		}
		CnyfwdPtUpdateService service = CnyfwdPtUpdateService.lookup();
		ListModel
		model
		= service.getProxy(desktop);
		CnyfwdPtItemRenderer
		renderer = new
		CnyfwdPtItemRenderer();
	</zscript>
	<groupbox width="1000px">
		<caption label="Live CNYFWD Point " />
		<listbox model="${model}" itemRenderer="${renderer}" mold="paging"
			pageSize="25" vflex="true">
			<listhead>
				<listheader label="CNYFWDPt Code" width="100px"
					style="font-size : large;font-weight : bold;text-align:center;color:blue" />
				<listheader label="Bid"
					style="font-size : large;font-weight : bold;text-align:center" />
				<listheader label="Ask"
					style="font-size : large;font-weight : bold;text-align:center" />
				<listheader label="QuoteDate"
					style="font-size : large;font-weight : bold;text-align:center" />
			</listhead>
		</listbox>
	</groupbox>

</zk>
主页面代码

<?page title="Live Rate V 2.0 " contentType="text/html;charset=UTF-8"?>
<window id="main" title="Live Rate V 2.0 ">
	<vbox>
		<tabbox>
			<tabs>
				<tab label="ExchangeRate" />
				<tab label="InterestRate" />
				<tab label="SwapPoint" />
				<tab label="CNYFWDPoint" />
			</tabs>
			<tabpanels>
				<tabpanel>
					<include src="exchangeRt.zul" />
				</tabpanel>
				<tabpanel>
					<include src="interestRt.zul" />
				</tabpanel>
				<tabpanel>
					<include src="swapPt.zul" />
				</tabpanel>
				<tabpanel>
					<include src="cnyfwdPt.zul" />
				</tabpanel>
			</tabpanels>
		</tabbox>
	</vbox>

</window>
程序效果图




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值