alibaba. dubbo 注册协议 WebService

1. dubbo 支持多种类型的协议的服务发布 ,长连接,短连接,短连接中 webservice 就是短连接支持多个连接的协议,当使用到 webservice 协议发布服务时,添加相关的依赖

基于 apache 的cxf实现 以及添加servlet的支持这里使用 jetty 做服务的响应,也支持 servlet 方式

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-simple</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.4.19.v20190610</version>
</dependency>

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-servlet</artifactId>
    <version>9.4.19.v20190610</version>
</dependency>

jetty 配置为dubbo的默认配置,servlet 方式为 dubbo 推荐的方式

<dubbo:protocol name="webservice" port="8080" server="jetty" />

使用也很简短即,在定义服务的时候添加 protocol协议类型即可如下,支持多协议

<bean id="userService" class="com.hebi.xuework.provider.service.UserServiceImpl"/>
<dubbo:service interface="com.hebi.xuework.api.service.UserService" ref="userService" protocol="dubbo,webservice"/>

servlet 方式需要在 web.xml 中配置 DispatcherServlet 

<dubbo:protocol name="webservice" port="8080" server="servlet" />
<servlet>
    <servlet-name>dubbo-servlet</servlet-name>
    <servlet-class>
        org.apache.dubbo.remoting.http.servlet.DispatcherServlet
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dubbo-servlet</servlet-name>
    <url>/*</url>
</servlet-mapping>

注意:当配置多协议时,要给每个暴露的服务【<dubbo:service protocol="dubbo"/>】添加对应的协议类型,否则项目启动报错

java.lang.IllegalStateException: Too much protocols found, the protocols comply to this service are :webservice but got 2 registries!

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值