通过代理模式改变WebService的连接时间和接收超时时间

来源:互联网 发布:影音嗅探软件 编辑:程序博客网 时间:2024/06/05 07:46
Example:public interface MemberAcctClient { MemberAcctDetail queryMemberAcct(String memberId, String productCode, boolean create);}public class MemberAcctClientImpl implements MemberAcctClient {@Autowiredprivate MemberAcctProxyUtil memberAcctProxyUtil;@Overridepublic MemberAcctDetail queryMemberAcct(String memberId,String productCode, boolean create) {return memberAcctProxyUtil.getInstance().queryMemberAcct(memberId, productCode, create);}}public class MemberAcctProxyUtil extends ProxyUtil {private MemberAcctService memberAcctService;private String serviceAddress;private long timeout = 15000;public MemberAcctService getInstance(){if(null == memberAcctService){memberAcctService = (MemberAcctService) buildInst(serviceAddress, MemberAcctService.class, timeout);}return memberAcctService;}public void setTimeout(long timeout) {this.timeout = timeout;}public void setServiceAddress(String serviceAddress) {this.serviceAddress = serviceAddress;}}public class ProxyUtil {/**     * 构建接入点实例     *     * @param addr 接入地址     * @param clazz 指定类型     * @return 实例     */    protected Object buildInst(String addr, Class<?> clazz,long timeout) {        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();        factory.setServiceClass(clazz);        factory.setAddress(addr);        Object object = factory.create();        configPolicy(object,timeout);        return object;    }    /**     * 设置服务的客户端策略     * 连接时间: 默认=30s 设置为15s,     * 接收超时时间: 默认=60s 设置为15s     * 自动分组:默认=true 设置为false     * 是否保持连接:使用默认设置=true     *     *     * @param service  服务实例     */    private void configPolicy(Object service,long timeout) {        Client clientP = ClientProxy.getClient(service);        HTTPConduit http = (HTTPConduit) clientP.getConduit();        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();        httpClientPolicy.setConnectionTimeout(timeout);        httpClientPolicy.setReceiveTimeout(timeout);        httpClientPolicy.setAllowChunking(false);        http.setClient(httpClientPolicy);    }}

0 0
原创粉丝点击