IT精英俱樂部

          方便自己查閱,僅此而已!

          統(tǒng)計(jì)

          留言簿(4)

          閱讀排行榜

          評(píng)論排行榜

          2009年9月6日 #

          RBAC用戶角色權(quán)限設(shè)計(jì)方案

          http://www.iteye.com/topic/930648

          RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權(quán)限進(jìn)行關(guān)聯(lián)。簡(jiǎn)單地說,一個(gè)用戶擁有若干角色,每一個(gè)角色擁有若干權(quán)限。這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型。在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對(duì)多的關(guān)系。(如下圖)



          角色是什么?可以理解為一定數(shù)量的權(quán)限的集合,權(quán)限的載體。例如:一個(gè)論壇系統(tǒng),“超級(jí)管理員”、“版主”都是角色。版主可管理版內(nèi)的帖子、可管理版內(nèi)的用戶等,這些是權(quán)限。要給某個(gè)用戶授予這些權(quán)限,不需要直接將權(quán)限授予用戶,可將“版主”這個(gè)角色賦予該用戶。 

           

          當(dāng)用戶的數(shù)量非常大時(shí),要給系統(tǒng)每個(gè)用戶逐一授權(quán)(授角色),是件非常煩瑣的事情。這時(shí),就需要給用戶分組,每個(gè)用戶組內(nèi)有多個(gè)用戶。除了可給用戶授權(quán)外,還可以給用戶組授權(quán)。這樣一來,用戶擁有的所有權(quán)限,就是用戶個(gè)人擁有的權(quán)限與該用戶所在用戶組擁有的權(quán)限之和。(下圖為用戶組、用戶與角色三者的關(guān)聯(lián)關(guān)系)

          在應(yīng)用系統(tǒng)中,權(quán)限表現(xiàn)成什么?對(duì)功能模塊的操作,對(duì)上傳文件的刪改,菜單的訪問,甚至頁(yè)面上某個(gè)按鈕、某個(gè)圖片的可見性控制,都可屬于權(quán)限的范疇。有些權(quán)限設(shè)計(jì),會(huì)把功能操作作為一類,而把文件、菜單、頁(yè)面元素等作為另一類,這樣構(gòu)成“用戶-角色-權(quán)限-資源”的授權(quán)模型。而在做數(shù)據(jù)表建模時(shí),可把功能操作和資源統(tǒng)一管理,也就是都直接與權(quán)限表進(jìn)行關(guān)聯(lián),這樣可能更具便捷性和易擴(kuò)展性。(見下圖)



          請(qǐng)留意權(quán)限表中有一列“權(quán)限類型”,我們根據(jù)它的取值來區(qū)分是哪一類權(quán)限,如“MENU”表示菜單的訪問權(quán)限、“OPERATION”表示功能模塊的操作權(quán)限、“FILE”表示文件的修改權(quán)限、“ELEMENT”表示頁(yè)面元素的可見性控制等。

           

          這樣設(shè)計(jì)的好處有二。其一,不需要區(qū)分哪些是權(quán)限操作,哪些是資源,(實(shí)際上,有時(shí)候也不好區(qū)分,如菜單,把它理解為資源呢還是功能模塊權(quán)限呢?)。其二,方便擴(kuò)展,當(dāng)系統(tǒng)要對(duì)新的東西進(jìn)行權(quán)限控制時(shí),我只需要建立一個(gè)新的關(guān)聯(lián)表“權(quán)限XX關(guān)聯(lián)表”,并確定這類權(quán)限的權(quán)限類型字符串。

           

          這里要注意的是,權(quán)限表與權(quán)限菜單關(guān)聯(lián)表、權(quán)限菜單關(guān)聯(lián)表與菜單表都是一對(duì)一的關(guān)系。(文件、頁(yè)面權(quán)限點(diǎn)、功能操作等同理)。也就是每添加一個(gè)菜單,就得同時(shí)往這三個(gè)表中各插入一條記錄。這樣,可以不需要權(quán)限菜單關(guān)聯(lián)表,讓權(quán)限表與菜單表直接關(guān)聯(lián),此時(shí),須在權(quán)限表中新增一列用來保存菜單的ID,權(quán)限表通過“權(quán)限類型”和這個(gè)ID來區(qū)分是種類型下的哪條記錄。

           

          到這里,RBAC權(quán)限模型的擴(kuò)展模型的完整設(shè)計(jì)圖如下:



          隨著系統(tǒng)的日益龐大,為了方便管理,可引入角色組對(duì)角色進(jìn)行分類管理,跟用戶組不同,角色組不參與授權(quán)。例如:某電網(wǎng)系統(tǒng)的權(quán)限管理模塊中,角色就是掛在區(qū)局下,而區(qū)局在這里可當(dāng)作角色組,它不參于權(quán)限分配。另外,為方便上面各主表自身的管理與查找,可采用樹型結(jié)構(gòu),如菜單樹、功能樹等,當(dāng)然這些可不需要參于權(quán)限分配。

          posted @ 2011-07-30 16:36 suplayer 閱讀(1011) | 評(píng)論 (0)編輯 收藏

          iBATIS操作Blob與Clob淺析

          http://developer.51cto.com/art/200907/136668.htm


          spring 中已經(jīng)提供了很好的實(shí)現(xiàn),所以這又省去了很多的功夫,接下來看看iBATIS是如何支持Clob和blob的。

          iBATIS提供了TypeHandler接口,用于處理數(shù)據(jù)類型,基本的實(shí)現(xiàn)類為BaseTypeHandler

          在spring 中,提供了AbstractLobTypeHandler作為基礎(chǔ)類,并且提供了相應(yīng)的模版方法,所有的工作由LobHandler處理。

          BlobByteArrayTypeHandler 主要用于處理blob類型數(shù)據(jù),使用byte[]來映射相應(yīng)的Blob

          ClobStringTypeHandler 用于處理Clob類型數(shù)據(jù),使用字符串來映射Clob

          有一點(diǎn)需要注意的是,AbstractLobTypeHandler中實(shí)現(xiàn)了事務(wù)支持,需要用來釋放相應(yīng)的資源,所以一定需要在事務(wù)環(huán)境中進(jìn)行。

          下面是一個(gè)簡(jiǎn)單的例子:

          1. public class Food {   
          2. private String content;   
          3.  
          4. private String id;   
          5.  
          6. private byte[] image;   
          7.  
          8. private String name;     
          9.     ...   
          10. }  

          xml如下:說明一下,在resultMap中可以通過typeHandler來指定具體的handler.在inline變量中,可以通過handler來定義相應(yīng)的typeHandler

          1. ﹤sqlMap namespace="Food"﹥   
          2.      
          3.    ﹤typeAlias alias="Food" type="org.esoft.hdb.bo.Food"/﹥   
          4.    ﹤resultMap id="foodResult" class="Food"﹥   
          5.   ﹤result property="id" column="C_ID"/﹥   
          6.   ﹤result property="name" column="C_NAME"/﹥   
          7.   ﹤result property="content" column="C_content"   
          8.  typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/﹥   
          9.   ﹤result property="image" column="C_image"   
          10.  typeHandler="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/﹥   
          11.    ﹤/resultMap﹥   
          12.    ﹤sql id="foodFragment"﹥select C_ID,C_NAME,C_CONTENT,C_IMAGE from T_FOOD﹤/sql﹥   
          13.   ﹤select id="getAll" resultMap="foodResult"﹥   
          14.   ﹤include refid="foodFragment"/﹥   
          15.    ﹤/select﹥   
          16.    ﹤select id="selectById" parameterClass="string" resultMap="foodResult"﹥   
          17.   ﹤include refid="foodFragment"/﹥ where C_ID=#id#﹤/select﹥   
          18.      
          19.    ﹤insert id="insert" parameterClass="Food"﹥ insert into T_FOOD ( C_ID,   
          20.   C_NAME,C_CONTENT, C_IMAGE) values ( #id#,   
          21.   #name#,#content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
          22.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#)   
          23.   ﹤/insert﹥   
          24.      
          25.    ﹤update id="update" parameterClass="Food"﹥ update T_FOOD set C_NAME = #name#,   
          26.   C_CONTENT =   
          27.   #content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
          28.   C_IMAGE =   
          29.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#   
          30.   where C_ID = #id# ﹤/update﹥   
          31.      
          32.    ﹤delete id="deleteById" parameterClass="string"﹥ delete from T_FOOD where C_ID = #id#   
          33.   ﹤/delete﹥   
          34.      
          35. ﹤/sqlMap﹥   
          36.  
          37.  
          38. public interface FoodService {   
          39.  
          40.      
          41. void save(Food food);   
          42. Food get(String id);   
          43. /**   
          44. * @param food   
          45. */   
          46. void update(Food food);   
          47. }   
          48.  
          49. public class FoodServiceImpl implements FoodService {   
          50. private FoodDAO foodDAO;   
          51.  
          52. private DaoCreator creator;   
          53.  
          54. public void setCreator(DaoCreator creator) {   
          55.     this.creator = creator;   
          56. }   
          57.  
          58. protected FoodDAO getFoodDAO() {   
          59.     if (foodDAO == null) {   
          60.    foodDAO = (FoodDAO) creator.createDao(FoodDAO.class, Food.class);   
          61.     }   
          62.     return foodDAO;   
          63. }   
          64.  
          65. public Food get(String id) {   
          66.     return getFoodDAO().get(id);   
          67. }   
          68. public void save(Food food) {   
          69.     getFoodDAO().save(food);   
          70. }   
          71. public void update(Food food) {   
          72.     getFoodDAO().update(food);   
          73. }   
          74.  
          75. }   
          76.  
          77. spring xml 配置:  
          78.    
          79. 。。。   
          80.  ﹤bean id="lobHandler"   
          81.   class="org.springframework.jdbc.support.lob.DefaultLobHandler"/﹥   
          82.      
          83.    ﹤bean id="transactionManager"   
          84.   class="org.springframework.jdbc.datasource.DataSourceTransactionManager"﹥   
          85.   ﹤property name="dataSource" ref="dataSource"/﹥   
          86.    ﹤/bean﹥   
          87.      
          88.    ﹤bean id="sqlMapClient"   
          89.   class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"﹥   
          90.   ﹤property name="dataSource" ref="dataSource"/﹥   
          91.   ﹤property name="configLocation"﹥   
          92.  ﹤value﹥SqlMapConfig.xml﹤/value﹥   
          93.   ﹤/property﹥   
          94.   ﹤property name="lobHandler" ref="lobHandler"/﹥   
          95.    ﹤/bean﹥   
          96.      
          97.    ﹤bean id="daoCreate" class="org.esoft.hdb.ibatis.IbatisDaoCreator"﹥   
          98.   ﹤property name="sqlMapClient" ref="sqlMapClient"/﹥   
          99.    ﹤/bean﹥   
          100.      
          101.    ﹤bean id="foodService" class="org.esoft.hdb.service.FoodServiceImpl"﹥   
          102.   ﹤property name="creator" ref="daoCreate"/﹥   
          103.    ﹤/bean﹥   
          104.      
          105.      
          106.    ﹤aop:config﹥   
          107.   ﹤aop:pointcut id="foodServiceMethods"   
          108.  expression="execution(* org.esoft.hdb.service.FoodService.*(..))"/﹥   
          109.   ﹤aop:advisor advice-ref="txAdvice" pointcut-ref="foodServiceMethods"/﹥   
          110.    ﹤/aop:config﹥   
          111.    ﹤tx:advice id="txAdvice" transaction-manager="transactionManager"﹥   
          112.   ﹤tx:attributes﹥   
          113.  ﹤tx:method name="*" propagation="REQUIRED"/﹥   
          114.   ﹤/tx:attributes﹥   
          115.    ﹤/tx:advice﹥  

          簡(jiǎn)單的測(cè)試:

          1. save :   
          2.     Food food = new Food();   
          3.     food.setPk("1");   
          4.     food.setName("food1");   
          5.     BufferedInputStream in = new BufferedInputStream(getClass()   
          6.   .getResourceAsStream("/1.gif"));   
          7.     byte[] b = FileCopyUtils.copyToByteArray(in);   
          8.     food.setImage(b);   
          9.   in = new BufferedInputStream(getClass().getResourceAsStream(   
          10.   "/hibernate.cfg.xml"));   
          11.     b = FileCopyUtils.copyToByteArray(in);   
          12.     food.setContent(new String(b));   
          13.     foodService.save(food);   
          14. update:   
          15. Food food = foodService.get("1");   
          16.     BufferedInputStream in = new BufferedInputStream(getClass()   
          17.   .getResourceAsStream("/jdbc.properties"));   
          18.     byte[] b = FileCopyUtils.copyToByteArray(in);   
          19.     food.setContent(new String(b));   
          20.     foodService.update(food);   
          21.     food = foodService.get("1");   
          22.     assertNotNull(food.getImage());  

          posted @ 2011-07-30 16:35 suplayer 閱讀(327) | 評(píng)論 (0)編輯 收藏

          ORACLE表解鎖

          select sess.sid,
             sess.serial#,
             lo.oracle_username,
             lo.os_user_name,
             ao.
          object_name,
             lo.locked_mode
             
          from v$locked_object lo,
             dba_objects ao,
             v$session sess
          where ao.object_id = lo.object_id and lo.session_id = sess.SID;
          獲得未提交的事物的列表和基礎(chǔ)信息
          然后根據(jù) sessionID和serial#號(hào)強(qiáng)制關(guān)閉事物:

          ALTER SYSTEM KILL SESSION '9,108';
          --'9,108'為sessionID和serial#號(hào),逗號(hào)分開


          posted @ 2011-07-30 16:33 suplayer 閱讀(123) | 評(píng)論 (0)編輯 收藏

          UML類與類之間的關(guān)系

          http://www.javaeye.com/topic/37302

          類與類之間的關(guān)系對(duì)于理解面向?qū)ο缶哂泻苤匾淖饔茫郧霸诿嬖嚨臅r(shí)候也經(jīng)常被問到這個(gè)問題,在這里我就介紹一下。
          類與類之間存在以下關(guān)系:
          (1)泛化(Generalization)
          (2)關(guān)聯(lián)(Association)
          (3)依賴(Dependency)
          (4)聚合(Aggregation)

          UML圖與應(yīng)用代碼例子:
          1.泛化(Generalization)
          [泛化]
          表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對(duì)接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。
          [具體表現(xiàn)]
          父類 父類實(shí)例=new 子類()
          [UML圖](圖1.1)

          圖1.1 Animal類與Tiger類,Dog類的泛化關(guān)系

          [代碼表現(xiàn)]

          1. class Animal{}   
          2. class Tiger extends Animal{}   
          3. public class Test   
          4. {   
          5.     public void test()   
          6.     {   
          7.         Animal a=new Tiger();   
          8.     }   
          9. }  

          2.依賴(Dependency)
          [依賴]
          對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象負(fù)責(zé)構(gòu)造另一個(gè)對(duì)象的實(shí)例,或者依賴另一個(gè)對(duì)象的服務(wù)時(shí),這兩個(gè)對(duì)象之間主要體現(xiàn)為依賴關(guān)系。
          [具體表現(xiàn)]
          依賴關(guān)系表現(xiàn)在局部變量方法的參數(shù),以及對(duì)靜態(tài)方法的調(diào)用
          [現(xiàn)實(shí)例子]
          比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作
          [UML表現(xiàn)](圖1.2)


          圖1.2 Person類與Screwdriver類的依賴關(guān)系

          [代碼表現(xiàn)]

          1. public class Person{   
          2.     /** 擰螺絲 */  
          3.     public void screw(Screwdriver screwdriver){   
          4.         screwdriver.screw();   
          5.     }   
          6. }  

          3.關(guān)聯(lián)(Association)
          [關(guān)聯(lián)]
          對(duì)于兩個(gè)相對(duì)獨(dú)立的對(duì)象,當(dāng)一個(gè)對(duì)象的實(shí)例與另一個(gè)對(duì)象的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)對(duì)象之間為關(guān)聯(lián)關(guān)系。
          [具體表現(xiàn)]
          關(guān)聯(lián)關(guān)系是使用實(shí)例變量來實(shí)現(xiàn)
          [現(xiàn)實(shí)例子]
          比如客戶和訂單,每個(gè)訂單對(duì)應(yīng)特定的客戶,每個(gè)客戶對(duì)應(yīng)一些特定的訂單;再例如公司和員工,每個(gè)公司對(duì)應(yīng)一些特定的員工,每個(gè)員工對(duì)應(yīng)一特定的公司
          [UML圖] (圖1.3)

          圖1.3 公司和員工的關(guān)聯(lián)關(guān)系


          [代碼表現(xiàn)]
          1. public class Company{   
          2.     private Employee employee;   
          3.     public Employee getEmployee(){   
          4.         return employee;   
          5.     }   
          6.     public void setEmployee(Employee employee){   
          7.         this.employee=employee;   
          8.     }   
          9.     //公司運(yùn)作   
          10.     public void run(){   
          11.         employee.startWorking();   
          12.     }   
          13. }  
          (4)聚合(Aggregation)
          [聚合]
          當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象A之間為聚集關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系,強(qiáng)調(diào)的是整體部分之間的關(guān)系。
          [具體表現(xiàn)]
          與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量來實(shí)現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來語(yǔ)法上是沒辦法區(qū)分的,從語(yǔ)義上才能更好的區(qū)分兩者的區(qū)別。
          [關(guān)聯(lián)與聚合的區(qū)別]
          (1)關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對(duì)象是處在同一個(gè)層次上的。比如人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊嚱M成的。
          聚合關(guān)系涉及的兩個(gè)對(duì)象處于不平等的層次上,一個(gè)代表整體,一個(gè)代表部分。比如電腦和它的顯示器、鍵盤、主板以及內(nèi)存就是聚集關(guān)系,因?yàn)橹靼迨请娔X的組成部分。
          (2)對(duì)于具有聚集關(guān)系(尤其是強(qiáng)聚集關(guān)系)的兩個(gè)對(duì)象,整體對(duì)象會(huì)制約它的組成對(duì)象的生命周期。部分類的對(duì)象不能單獨(dú)存在,它的生命周期依賴于整體類的對(duì)象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內(nèi)存)拆了下來。
          [UML圖](圖1.4)

          圖1.3 電腦和組件的聚合關(guān)系

          [代碼表現(xiàn)]
          1. public class Computer{   
          2.     private CPU cpu;   
          3.     public CPU getCPU(){   
          4.         return cpu;   
          5.     }   
          6.     public void setCPU(CPU cpu){   
          7.         this.cpu=cpu;   
          8.     }   
          9.     //開啟電腦   
          10.     public void start(){   
          11.         //cpu運(yùn)作   
          12.         cpu.run();   
          13.     }   
          14. }  

          posted @ 2010-05-07 12:47 suplayer 閱讀(114) | 評(píng)論 (0)編輯 收藏

          解決eclipse與360啟動(dòng)沖突

          在快捷方式屬性-目標(biāo)里加入 -vm "%JAVA_HOME%/jre/bin/javaw.exe"

          posted @ 2010-04-13 08:45 suplayer 閱讀(188) | 評(píng)論 (0)編輯 收藏

          Oracle 10g Express Edition字符集修改

           Oracle 10g Express Edition是Oracle專門為小型用戶提供的免費(fèi)版本。Oracle XE十分小巧,安裝簡(jiǎn)單,可供第三方軟件開發(fā)商部署較小的應(yīng)用。 

            不過Oracle XE目前的beta2缺省安裝的字符集是WE8MSWIN1252,不是中文字符集,并且不能通過直接運(yùn)行 alter  database  character  set  ZHS16GBK  ; 來修改,因?yàn)閆HS16GBK不是缺省字符集的超集。過去流傳很廣的直接修改sys用戶下的PROPS$表的方法,也會(huì)給字符集的變更留下很多潛在的問題. 

            不過在安裝完Oracle XE后,可以在sqlplus(即Oracle XE的run SQL command line)中, 進(jìn)行如下的操作來修改字符集: 

          connect  system/oracle9i  as  sysdba 

          shutdown  immediate 

          startup  mount 

          alter  system  enable  restricted  session  ; 

          alter  system  set  JOB_QUEUE_PROCESSES=0; 

          alter  system  set  AQ_TM_PROCESSES=0; 

          alter  database  open  ; 

          alter  database  character  set  internal_use  ZHS16GBK  ; 

          shutdown  immediate 

          startup 

          這樣字符集的修改就完成了


          摘自紅色黑客聯(lián)盟(www.7747.net) 原文:http://www.7747.net/px/200902/34068.html

          posted @ 2009-11-27 19:56 suplayer 閱讀(140) | 評(píng)論 (0)編輯 收藏

          解決Oracle XE允許連接的用戶數(shù)不足問題



          在數(shù)據(jù)庫(kù)服務(wù)器上運(yùn)行 sqlplus system/password@xe (其中 system 是數(shù)據(jù)庫(kù)用戶無(wú)需改變;password 是數(shù)據(jù)庫(kù)密碼應(yīng)指定為實(shí)際密碼;xe 是數(shù)據(jù)庫(kù)實(shí)例名稱) ,然后執(zhí)行:

          alter system set session_cached_cursors=200 scope=spfile;
          alter system set session_max_open_files=200 scope=spfile;
          alter system set sessions=20 scope=spfile;
          alter system set license_max_sessions=200 scope=spfile;
          alter system set license_sessions_warning=200 scope=spfile;
          alter system set processes=200 scope=spfile;

          執(zhí)行后,重啟 Oracle XE 數(shù)據(jù)庫(kù)實(shí)例即可。要重啟 Oracle XE 數(shù)據(jù)庫(kù)實(shí)例:

          1. 如安裝于 Windows 上,先運(yùn)行 net stop oracleservicexe,再運(yùn)行 net start oracleservicexe 即可。也可通過“服務(wù)”管理控制臺(tái)重啟 OracleServiceXE 服務(wù)。
          2. 如安裝于 Linux 上,先運(yùn)行 /etc/init.d/oracle-xe start,再運(yùn)行 /etc/init.d/oracle-xe stop 即可。

          此時(shí),可以支持 179 個(gè)額外的連接會(huì)話。

          posted @ 2009-11-27 19:54 suplayer 閱讀(425) | 評(píng)論 (0)編輯 收藏

          如何改變Oracle 10g Express Edition默認(rèn)的8080端口

          選擇“運(yùn)行SQL命令”,進(jìn)入如下提示符
          SQL>
          首先連接到服務(wù)器
          connect 用戶名/密碼
          登陸后輸入如下命令:
          sql 代碼
          1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081));    
          其中8081是修改后的端口,可以任意。
           
          這樣你就不會(huì)與Tomcat的默認(rèn)端口沖突了,方便開發(fā)。

          ftp服務(wù)占用2100端口,更改命令是:
          sql 代碼
          1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get() , '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()', 2111));   

          posted @ 2009-11-27 19:53 suplayer 閱讀(238) | 評(píng)論 (0)編輯 收藏

          Eclipse插件安裝的3種方法

           

             1. 把插件文件直接覆蓋到eclipse目錄里
             2. 使用link文件,就是把插件存放到任一的地方(例如/eclipse/MyPuls),然后 在eclipse的文件夾里新建一個(gè)links的文件,在里面添加一些后追名為.link的文件(例如emfPlugins.link)結(jié)構(gòu)是這樣的:

                    /eclipse/
                         links/
                              emfPlugins.link
                              webtools.link
                              updateManager.link
                              ...
                         ...

                    link文件的里包含這樣一條 “path=D:\\JavaDev\\plugins\\vssplugin”這個(gè)路徑就是插件的存放路徑。

             3. 使用eclipse自帶的圖形界面的插件安裝方法:選擇Help > Software Updates > Manager Configuration

              在選擇Add > Extension Location 找到你要安裝插件的目錄就可以了。強(qiáng)烈推薦這種方法,優(yōu)點(diǎn)很多比如可以方便的添加刪除,也不用自己寫link文件!

          備注:Eclipse插件的目錄結(jié)構(gòu)

              /eclipse-plugins/
                 eclipse/
                    .eclipseextension
                    features/
                    plugins/

              第2、3種方法所指向的目錄都指的是"eclipse"目錄,

              如果用第3種方法,在eclipse這個(gè)目錄下必須有文件.eclipseextension,如果你下的插件沒有這個(gè)文件,那就隨便eclipse安裝目錄下的那個(gè)文件靠過去就行了!只有有這么個(gè)文件就可以了,內(nèi)容沒什么用,主要是一些版本信息!例如:

              id=org.eclipse.platform name=Eclipse Platformversion=3.3.1

           

          posted @ 2009-09-06 15:21 suplayer 閱讀(145) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 福海县| 涞源县| 营山县| 石家庄市| 金湖县| 广南县| 衢州市| 贡嘎县| 上高县| 平顶山市| 抚顺县| 巫溪县| 五峰| 金乡县| 景泰县| 达日县| 阜新市| 鸡西市| 德惠市| 马山县| 宜宾市| 佛山市| 于都县| 宁安市| 河北省| 馆陶县| 丹凤县| 东宁县| 苍梧县| 铅山县| 庆城县| 即墨市| 新龙县| 公主岭市| 白银市| 五寨县| 桐乡市| 开江县| 甘肃省| 隆德县| 阿图什市|