Spring整合Restlet實踐

2021-06-21 17:00:55 字數 2091 閱讀 6688

採用spring3.0和restlet2.0.6,通過乙個叫做restletservlet的servlet與spring整合,如下:

restletservlet  

org.restlet.ext.spring.restletframeworkservlet

org.restlet.component

restletcomponent

要注意的是,如果直接使用restlet,則只要org.restlet.jar,如果需要與spring整合,則需要一系列org.restlet.ext.*.jar的配合。上述配置涉及到乙個初始化引數(org.restlet.component),其值要求是乙個bean,該bean預設配置到restletservlet-servlet.xml檔案中,配置如下:

此處又涉及到乙個叫做root的bean,該bean表示rest結構的path配置的根節點,在這個節點中,允許使用者配置多個自己的路由位址,例子如下:

上面這個配置中,乙個entry代表乙個路徑對映關係,key表示路徑,裡面的bean是路徑對應的處理類,lookup-method name="create"暫時不清楚其作用。bean的定義如下所示,它依然允許注入其他的bean,路徑對應的處理方法通過在bean中的@get註解來指定

注意:

1、此處的bean都需要配置為原型模式:scope="prototype" bean的定義需繼承自serverresource,如下:public class dtsresourceupdate extends serverresource

2、如果servlet攔截的url匹配規則為/rest/*,root這邊配置的是/newtest,則真正的訪問位址應該為/rest/newtest,也就是說map這邊的配置,是攔截後剩餘的位址

3.2.1 路徑對映如何傳值

在path路徑中,通過大括號來指明形參名和引數值,如/update/defect/101,效果等價於在url中帶入引數:http://..../defect?number=101引數的獲取方式如下:

@get

public string updateinfo(){

string number = (string)

getrequestattributes().get("number");

restlet通常當做輕量級的webservice使用,那如何返回較大的資料量呢?此處以xml為例:

return new stringrepresentation(getxmlissuedtsmanager().getissuedtsfromxml());

其中,getissuedtsfromxml()如下:

string xmlresult = "";

saxbuilder builder=new saxbuilder();

try {

document docment = builder.build(this.getclass().getresource("/").getpath()+file.separator+getdtsxmlfilename()+".xml");

format format = format.getprettyformat();

format.setindent(" ");

format.setencoding("gb2312");

xmloutputter xmlout = new xmloutputter();

xmlout.setformat(format);

xmlresult = xmlout.outputstring(docment);

......

return xmlresult;

3.4.1 如何讓乙個serverresource處理類的每個方法對應乙個path?

目前通過@get註解,肯定無法區分方法與path的對應關係。如果乙個類只能有乙個方法對應乙個path,那path較多的情況下,會導致處理類膨脹

3.4.2 根節點(springrouter)的配置是否有其他方式?

3.4.3 預設使用restletservlet-servlet.xml作為配置檔案的名稱,如何自定義?

3.4.4 為什麼serverresource處理類的bean都要配置為scope="prototype"

Restlet 2 2中Restlet類的分析

org.restlet.restlet 有三個重要的方法 一 firecontextchanged restlet restlet,context context 這個方法是在乙個restlet 使用建構函式 restlet context context 以及呼叫 setcontext 方法的時候...

spring 整合Junit,整合web

l 匯入jar包 基本 4 1 測試 spring test.jar 1.讓junit通知spring載入配置檔案 2.讓spring容器自動進行注入 l 修改測試類 package com.hcx import org.junit.test import org.junit.runner.runw...

Spring 整合測試

spring 中的包 spring mock.jar 為整合測試提供了一流的支援。所有相關的api在包 org.springframework.test 中,它們不依賴於任何應用伺服器或者其他部署環境。test包裡的各種抽象類提供了如下的功能 test包對載入的context提供快取,快取功能是通過...