spring 4.x 使用dubbo http协议的一个问题
2017-01-22 11:29
871 查看
使用dubbo的http协议,dubbo是使用了spring的http invoker
dubbo是这么用的
这里报了个错java.lang.NoClassDefFoundError: org/springframework/remoting/httpinvoker/CommonsHttpInvokerRequestExecutor
CommonsHttpInvokerRequestExecutor是在spring 3.x版本中的
在spring4.x中 换成了HttpComponentsHttpInvokerRequestExecutor
so 改dubbo的源码,或者拷一份spring3.x的CommonsHttpInvokerRequestExecutor 到项目中(可能会有兼容性问题)
dubbo是这么用的
protected <T> T doRefer(final Class<T> serviceType, final URL url) throws RpcException { final HttpInvokerProxyFactoryBean httpProxyFactoryBean = new HttpInvokerProxyFactoryBean(); httpProxyFactoryBean.setServiceUrl(url.toIdentityString()); httpProxyFactoryBean.setServiceInterface(serviceType); String client = url.getParameter(Constants.CLIENT_KEY); if (client == null || client.length() == 0 || "simple".equals(client)) { SimpleHttpInvokerRequestExecutor httpInvokerRequestExecutor = new SimpleHttpInvokerRequestExecutor() { protected void prepareConnection(HttpURLConnection con, int contentLength) throws IOException { super.prepareConnection(con, contentLength); con.setReadTimeout(url.getParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT)); con.setConnectTimeout(url.getParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT)); } }; httpProxyFactoryBean.setHttpInvokerRequestExecutor(httpInvokerRequestExecutor); } else if ("commons".equals(client)) { CommonsHttpInvokerRequestExecutor httpInvokerRequestExecutor = new CommonsHttpInvokerRequestExecutor(); httpInvokerRequestExecutor.setReadTimeout(url.getParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT)); httpProxyFactoryBean.setHttpInvokerRequestExecutor(httpInvokerRequestExecutor); } else if (client != null && client.length() > 0) { throw new IllegalStateException("Unsupported http protocol client " + client + ", only supported: simple, commons"); } httpProxyFactoryBean.afterPropertiesSet(); return (T) httpProxyFactoryBean.getObject(); }
这里报了个错java.lang.NoClassDefFoundError: org/springframework/remoting/httpinvoker/CommonsHttpInvokerRequestExecutor
CommonsHttpInvokerRequestExecutor是在spring 3.x版本中的
在spring4.x中 换成了HttpComponentsHttpInvokerRequestExecutor
so 改dubbo的源码,或者拷一份spring3.x的CommonsHttpInvokerRequestExecutor 到项目中(可能会有兼容性问题)
相关文章推荐
- 使用spring jdbc遇到的一个性能问题
- 使用spymemcached spring整合的时候遇到的一个配置问题
- Javaweb-------mybatis+springmvc关于实体类使用注解的一个问题
- spring 容器后处理器 BeanFactoryPostProcessor 使用需要注意的一个问题
- 关于mule中Spring使用中的一个问题
- 由浅入深写java分布式(4)基于注解 dubbo 一个app同时存在consumer和provider自启动失败的问题,以dubbo和spring注解加载顺序的问题
- 在Spring中使用Mysql的一个小问题
- Spring @Async配置4. 基于@Async无返回值调用 使用的方式非常简单,一个标注即可解决所有的问题: 1 @Async //标注使用 2 public void asyncMe
- 使用 Intellij idea Springboot maven 的一个小小的问题
- 关于spring restful使用中遇到的一个性能问题
- 持续集成之路——使用SpringTestDbunit管理数据集的一个问题
- 在使用BizTalk时遇到一个很郁闷的问题 之解决篇
- 使用Url Rewrite 如果原始Url就带QueryString时候的一个问题
- [原创]使用DropDownlist时应该注意的一个小问题
- [导入]一个使用的小问题
- VC中一个关于宏的使用问题,字符串之间转换,宽字符与普通字符
- eclipse使用中出现的一个问题
- 使用一个简单的webframe来解决EAI和分工合作问题
- 使用VS2005 CTP July调试WinForm的一个问题,解决方法与各位分享。
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)