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