dubbo Servlet Bridge Server時同時支持hessian和webservice

原生的bubbo在發佈hessianwebservice時使用了嵌入jetty的方式開啓了兩個端口。 而考慮到咱們實際的狀況,須要使用weblogic發佈,而且是使用同一個端口對外提供服務。 因此咱們要擴展dubbo使其支持在同一端口同時支持兩種協議。 git

爲了實現這個目標,做出了以下修改:github

1,  增長新的ServletHttpBinder  web

WebServiceDispatcherServlet  WebServiceServletHttpBinder  WebServiceServletHttpServerspring

2, 修改文件
/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.remoting.http.HttpBinder,增長以下內容:
webserviceservlet=com.alibaba.dubbo.remoting.http.servlet.WebServiceServletHttpBinderapp

 

3 com.alibaba.dubbo.rpc.protocol.webservice.WebServiceProtocol.WebServiceHandler.handle方法修改的內如以下:

            if (servletController == null) {url

                HttpServlet httpServlet = DispatcherServlet.getInstance()==null?WebServiceDispatcherServlet.getInstance():DispatcherServlet.getInstance(); spa

 

4,spring中的配置相似以下:orm

<dubbo:protocol name="webservice" port="8080" server="webserviceservlet" contextpath="ServletBrige/service" />server

 

5web.xml增長以下內容:xml

  <servlet>

    <servlet-name>dubbowebservice</servlet-name>    <servlet-class>com.alibaba.dubbo.remoting.http.servlet.WebServiceDispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>dubbowebservice</servlet-name>

    <url-pattern>/service/*</url-pattern>

  </servlet-mapping>     

源碼已提交到: https://github.com/codingboyli/dubbo

相關文章
相關標籤/搜索