Closed whybeyoung closed 8 years ago
参考 http://dubbo.io/Http+Protocol-zh.htm
协议的上下文路径<dubbo:protocol contextpath="foo" />
必须与servlet应用的上下文路径相同。
默认为根目录.
对应tomcat server.xml中的
<Context path="foo" docBase="...." >
额, 看起来我配置没有错, 默认8080 , 但是我用python dubbo client 可以获取服务列表,但是调用的时候 总是报 dubbo_client.rpcerror.ConnectionFail: DubboError(504): connect failed http://192.168.17.17:8080/itest.xxxxk.business.service.ItestService 手动访问该地址 也是404.. 请问还有什么地方需要特殊配置么? dubbo端 我的配置是
<dubbo:protocol name="http" host="192.168.17.17" port="8080" server="servlet" />
<dubbo:protocol name="jsonrpc" host="192.168.17.17" port="8080" server="servlet" />
<dubbo:provider protocol="jsonrpc" />
<dubbo:service interface="itest.xxxxk.business.service.ItestService" ref="itestService" protocol="jsonrpc" />
纠结两天了,还请作者大大 给个方向吧。。我原本以为是severlet端口不对,我tomcat的端口是默认的。。
504是超时吧,看下是不是接口超时了呢?
用curl 测试下吧
curl -i -H 'content-type: application/json' -X POST -d '{"jsonrpc": "2.0", "method": "isPhoneNoLimit", "params": [ "MOBILE", "130000", "A001"],
"id": 1 }' 'http://127.0.0.1:18080/com.ofpay.api.PhoneNoCheckProvider'
我windows执行这个curl貌似执行不了 ,用的python的 urllib也就是本项目下面的python的例子,POSTmethod+ 参数过去 返回执行结果为空。 我的是配合本地的一个zookeeper中心做的服务发现
接口超时时间默认是1秒,你确认下服务端是否收到了请求?
web.xml的配置也发下看看
为什么同时启动了http协议?
web.xml 如下 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.itest.provider.config.ProviderConfig
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>dubbo</servlet-name>
<servlet-class>com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dubbo</servlet-name>
<url-pattern>/*</url-pattern>
啊应该也是不是zookeeper问题, dubbo zookeeper都在本地, print user_provider('get_daily_active') File "build\bdist.win-amd64\egg\dubbo_client\rpclib.py", line 62, in call File "build\bdist.win-amd64\egg\dubbo_client\rpclib.py", line 46, in call dubbo_client.rpcerror.ConnectionFail: DubboError(504): connect failed http://192.168.17.17:8080/itest.xxxxk.business.service.ItestService dubbo 这个地址 http://192.168.17.17:8080/itest.xxxxk.business.service.ItestService 手动访问也是无法访问的,tomcat的日志报404, client报504, 但是dubbo的服务列表能拿到,就是调用的具体method的时候出错。现在就是这个问题,服务端超时1s的话,我本机应该不会超过这个值吧, 抓包的话 8080端口的链接都建立不起来呢,所以就是没访问到8080的服务
http://192.168.17.17:8080/ 能正常访问吗? 手动访问应该是返回500的,拒绝get请求,但是你的返回的404 .
检查下启动日志 有没有异常信息
我dubbo服务是正常起来的, tomcat这个8080根目录 404 和手动访问 该地址 返回404应该也没什么关系吧?页面不存在嘛。。。 dubbo服务起来的时候 我在java里是执行了一次调用一个具体服务,是可以成功的。 但是用python的 python-dubbo-client 通过zookeepr注册,拿到服务列表, 调用一个具体方法就出错。。
可以留个联系方式,帮忙看一下么,感激不尽
我扣扣15855115899,感谢!
作者你好,感谢你回复。 配置感觉我有一步骤不对, 文中说到的:“ 注意,如果使用servlet派发请求:
协议的端口必须与servlet容器的端口相同, 协议的上下文路径必须与servlet应用的上下文路径相同。“ 这句话怎么理解 以及配置呢,感谢回复谢谢