dubbox rest服務

Gyoung發表於2016-09-29

1.xml配置: web.xml

定義監聽的contextpath,見rest協議定義

<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>/services/*</url-pattern>
</servlet-mapping>

2.xml配置:dubbo-demo-provider.xml

##rest協議定義:
##port:和伺服器埠保持一致
##contextpath:和web伺服器web.xml定義保持一致
##server:預設servlet,在沒有在web伺服器中執行的時候,可以寫tomcat等由應用啟動一個web伺服器
<dubbo:protocol name="rest" port="8888" contextpath="services" server="servlet"/>


##遠端服務定義
##interface : 服務介面    
##ref:服務實際實現的service,引用其它定義的spring bean
##protocol:服務的協議模式
<dubbo:service interface="com.alibaba.dubbo.demo.user.facade.UserRestService" ref="userRestService"  protocol="rest" validation="true"/>


##實際服務實現
<bean id="userRestService" class="com.alibaba.dubbo.demo.user.facade.UserRestServiceImpl">
    <property name="userService" ref="userService"/>
</bean>

3.java程式碼:UserRestServiceImpl

class定義:

##@Path:整體服務的訪問路徑 
    本樣例http訪問就應該是:  http:/IP:PORT/應用名稱/contextpath/users
    contextpath:web.xml和resf服務中定義的
##可以接受的資料格式。json和簡單xml
@Path("users")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
public class UserRestServiceImpl implements UserRestService {

Method定義:

##@POST:http接受的方法,可以GET,POST,delete等
    本樣例http訪問就應該是:  
        http:/IP:PORT/應用名稱/contextpath/users/register.json
        http:/IP:PORT/應用名稱/contextpath/users/register.xml
##@Path:服務路徑
@POST
@Path("register")
public RegistrationResult registerUser(User user) {
    return new RegistrationResult(userService.registerUser(user));
}

客戶端:

見RestClient.java

js呼叫

<!DOCTYPE html>
<html>
<head>
    <script src="jquery-1.10.2.min.js">
    </script>
    <script>
        $(document).ready(function(){
            $("#btn1").click(function(){
                $('#test').load('http://127.0.0.1:8888/services/u/1.json');
            })
        })
    </script>
</head>

<body>

<h3 id="test">請點選下面的按鈕,通過 jQuery AJAX 改變這段文字。</h3>
<button id="btn1" type="button">獲得外部的內容</button>

</body>
</html>

參考:http://www.ganps.net/dubboxie-yi/

http://dangdangdotcom.github.io/dubbox/rest.html

相關文章