日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五、Chain链的作用

發布時間:2024/1/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五、Chain链的作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Chain是一個鏈,是Handler的鏈。也就是說一次請求可能要執行多個Handler。

1、下面我們就編寫一個Handler,讓它用chain的方法執行。

?

代碼 package com.hoo.service.chain;

import org.apache.axis.SimpleChain;
import com.hoo.service.handler.RequestHandler;
import com.hoo.service.handler.ResponseHandler;

/**
* <b>function:</b>用chain實現調用多個handler
*
@author hoojo
* @createDate Dec 15, 2010 11:25:27 PM
* @file HandlerChain.java
* @package com.hoo.service.chain
* @project AxisWebService
* @blog
http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
*
@version 1.0
*/
public class HandlerChain extends SimpleChain {

private static final long serialVersionUID = 1226195692055911394L;

public HandlerChain() {
RequestHandler request
= new RequestHandler();
ResponseHandler response
= new ResponseHandler();

this.addHandler(request);
this.addHandler(response);
}
}

?

?

上面的HandlerChain繼承了SimpleChain,在構造器中創建了RequestHandler、ResponseHandler,然后用addHandler添加到chain的handler中。特別說明下,這里的chain其實也是一個handler,為什么這樣說?我們繼承的SimpleChain就繼承了BsaicHandler這個抽象類,所以chain也是一個handler。有人想既然是handler那它的配置也應該和handler差不多,沒錯chain的配置可以引用handler的配置。

?

2、配置chain的wsdd文件

先看配置方式1:

代碼 <?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java">
<chain name="HandlerChain">
<handler type="java:com.hoo.service.chain.HandlerChain"/>
</chain>

<service name="HelloWorldWSDDHandlerChain" provider="java:RPC">
<requestFlow>
<chain type="HandlerChain"/>
</requestFlow>
<parameter name="className" value="com.hoo.service.HelloWorldWSDD" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
</service>
</deployment>

?

?

?

在chain元素中配置了一個handler標簽,這個標簽的type就是classpath類路徑,然后在requestFlow標簽中配置chain元素標簽,用type引用上面的chain即可。

?

配置方式2:

?

代碼 <?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java">

<handler name="hchain" type="java:com.hoo.service.chain.HandlerChain"/>

<chain name="handlerChain">
<handler type="hchain"/>
</chain>

<service name="HelloWorldWSDDHandlerChain2" provider="java:RPC">
<parameter name="className" value="com.hoo.service.HelloWorldWSDD" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
<responseFlow>
<chain type="handlerChain"/>
</responseFlow>
</service>
</deployment>

?

?

上面先配置了handler,剛才說過chain也是一種特別的handler。所以用handler標簽配置chain,然后在chain標簽中用handler的type引用hchain,最好在responseFlow標簽中用chain引用上面配置好的chain。

注意:chain標簽中只能配置handler、chain這2種元素,chain里面可以嵌套配置chain;

?

3、發布wsdd配置過chain的WebService

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployChain.wsdd

在瀏覽器中請求:http://localhost:8080/AxisWebService/servlet/AxisServlet

就可以看到發布的服務了。

?

4、編寫客戶端代碼,請求剛才發布的WebService。客戶端的代碼和上面的HelloWorldWSDDClient幾乎引用,只是請求的服務換成剛才我們發布的那個服務路徑就可以了。運行后服務器端控制臺效果如下:

state: null, count: 1, requestCount: 1

state: null, count: 1, RESPONSE_COUNT: 1

state: null, count: 2, requestCount: 2

state: null, count: 2, RESPONSE_COUNT: 2

轉載于:https://www.cnblogs.com/hoojo/archive/2010/12/20/1911375.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的五、Chain链的作用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。