cxf webservice配置(带超时)

1.spring配置文件方式测试 
<!-- 客户端密码配置Bean定义 --> 
<bean id="passwordCallback" class="com.creditease.core.ws.client.ClientValidateCallback"> 
<property name="userMap"> 
<map> 
<entry key="abc" value="abc" /> 
</map> 
</property> 
</bean> 

<jaxws:client id="testService" serviceClass="com.creditease.core.ws.client.UserService" 
address="http://localhost:8080/project/services/testService"> 
      <jaxws:outInterceptors> 
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"> 
<property name="properties"> 
<map> 
<entry key="action" value="UsernameToken" /> 
<entry key="user" value="admin" /> 
<entry key="passwordType" value="PasswordText" /> 
<entry key="passwordCallbackRef" value-ref="passwordCallback" /> 
</map> 
</property> 
</bean> 
</jaxws:outInterceptors> 
</jaxws:client> 
用户名密码验证类 
Java代码   收藏代码
  1. public class ClientValidateCallback implements CallbackHandler {  
  2.   
  3.     private Map<String, String> userMap = null;  
  4.   
  5.     public void setUserMap(Map<String, String> userMap) {  
  6.         this.userMap = userMap;  
  7.     }  
  8.   
  9.     public void handle(Callback[] callbacks) throws IOException,  
  10.             UnsupportedCallbackException {  
  11.         for (int i = 0; i < callbacks.length; i++) {  
  12.             WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];  
  13.             int usage = pc.getUsage();  
  14.             if (!userMap.containsKey(pc.getIdentifier()))  
  15.                 throw new WSSecurityException("user not exists ");  
  16.             String pass = userMap.get(pc.getIdentifier());  
  17.             if (usage == WSPasswordCallback.USERNAME_TOKEN && pass != null) {  
  18.                 pc.setPassword(pass);  
  19.                 return;  
  20.             }  
  21.         }  
  22.     }  
  23. }  

@Autowired 
private TestService testService; 
2.客户端java代码测试 
Java代码   收藏代码
  1. JaxWsProxyFactoryBean userClient = new JaxWsProxyFactoryBean();  
  2.         userClient.setServiceClass(UserService.class);  
  3.         userClient.setAddress("http://localhost:8080/project/services/testService");  
  4.         // 设置用户名密码  
  5.         Map<String, Object> outProps = new HashMap<String, Object>();   
  6.         outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);   
  7.         outProps.put(WSHandlerConstants.USER, "abc");   
  8.         outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);   
  9.         outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordCallback.class.getName());   
  10.           
  11.         WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);   
  12.         userClient.getOutInterceptors().add(wssOut);   
  13.         userClient.getOutInterceptors().add(new SAAJOutInterceptor());   
  14.   
  15.         TestService testService = (TestService) userClient.create();  
  16. // 超时设置  
  17. Client proxy = ClientProxy.getClient(testService);  
  18.         HTTPConduit conduit = (HTTPConduit) proxy.getConduit();   
  19.         HTTPClientPolicy httpClientPolicy =  new  HTTPClientPolicy();     
  20.         httpClientPolicy.setConnectionTimeout(360000);     
  21.         httpClientPolicy.setAllowChunking( false );     
  22.         httpClientPolicy.setReceiveTimeout(320000);     
  23.         conduit.setClient(httpClientPolicy);  
  24.   
  25. 用户名密码验证类  
  26. public class ClientPasswordCallback implements CallbackHandler {  
  27.   
  28.     public void handle(Callback[] callbacks) throws IOException,  
  29.             UnsupportedCallbackException {  
  30.   
  31.         WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];  
  32.         pc.setIdentifier("admin");  
  33.         pc.setPassword("admin");  
  34.     }  
  35.   
  36. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值