访问dubbo的rest服务返回404

情景:开发环境使用postman访问dubbo的rest服务时,总是返回404,而正式环境是正常的。


原因:tomcat端口是80,dubbo的rest服务端口是8080,tomcat端口号与dubbo rest服务端口号不一致,所以返回404


这个问题,需要分情况,dubbo rest的服务器分为嵌入式和使用外部服务器两种,如果使用外部服务器,那么rest端口号要与dubbo:protocol name="rest" port="8090"中的port一致。如果是嵌入式,那么就不能一样。


嵌入式写法:

<dubbo:protocol name="rest" server="jetty"/>
如果不指定server,默认是jetty,而且是嵌入式的,除了jetty,还有tomcat、netty、sunhttp可选。


集成式写法:


server必须指定为servlet

<dubbo:protocol name="rest" server="servlet"/>
并且web.xml中,必须配置BootStrapListener和DispatcherServlet

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/META-INF/spring/dubbo-demo-provider.xml</param-value>
    </context-param>

    <listener>
        <listener-class>com.alibaba.dubbo.remoting.http.servlet.BootstrapListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>dispatcher</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>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

并且,BootstrapListener必须配置在ContextLoaderListener前边


结论

使用嵌入式server,则rest接口与tomcat端口不一致。

使用外部server,则rest接口需与之保持一致。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值