這是一段講述ejb限制的文章以及相關的中文文章,請問怎麼理解每一條約束。
Programming Restrictions for Enterprise Beans
Enterprise beans make use of the services provided by the EJB container, such as lifecycle
management. To avoid conflicts with these services, enterprise beans are
restricted from performing certain operations:
n Managing or synchronizing threads
n Accessing files or directories with the java.io package
Using AWT functionality to display information or to accept information from a
keyboard
n Listening on a socket, accepting connections on a socket, or using a socket for
multicast
n Setting a socket factory used by ServerSocket, Socket, or the stream handler
factory used by the URL class
n Loading a native library
EJB元件的約束
EJB的開發者並不需要在EJB的元件實現程式碼中編寫系統級的服務,EJB提供商/開發者需知道並且嚴格地遵守一些限制,這些限制與開發穩定的和可移植的EJB元件的利益有關。
以下是你應該回避使用的一些Java特色,並且在你的EJB元件的實現程式碼中要嚴格限制它們的使用:
1.使用static,非final 欄位。建議你在EJB元件中把所有的static欄位都宣告為final型的。這樣可以保證前後一致的執行期語義,使得EJB容器有可以在多個Java虛擬機器之間分發元件例項的靈活性。
2.使用執行緒同步原語來同步多個元件例項的執行。避免這個問題,你就可以使EJB容器靈活的在多個Java虛擬機器之間分發元件例項。
3.使用AWT函式完成鍵盤的輸入和顯示輸出。約束它的原因是伺服器方的商業元件意味著提供商業功能而不包括使用者介面和鍵盤的I/O功能。
4.使用檔案訪問/java.io 操作。EJB商業元件意味著使用資源管理器如JDBC來儲存和檢索資料而不是使用檔案系統API。同時,部署工具提供了在部署描述器(descriptor)中儲存環境實體,以至於EJB元件可以透過環境命名上下文用一種標準的方法進行環境實體查詢。所以,使用檔案系統的需求基本上是被排除了。
5.監聽和接收socket連線,或者用socket進行多路傳送。EJB元件並不意味著提供網路socket伺服器功能,但是,這個體系結構使得EJB元件可以作為socket客戶或是RMI客戶並且可以和容器所管理的環境外面的程式碼進行通訊。
6.使用映象API查詢EJB元件由於安全規則所不能訪問的類。這個約束加強了Java平臺的安全性。
7.欲建立或獲得一個類的載入器,設定或建立一個新的安全管理器,停止Java虛擬機器,改變輸入、輸出和出錯流。這個約束加強了安全性同時保留了EJB容器管理執行環境的能力。
8.設定socket工廠被URL's ServerSocket,Socket和Stream handler使用。避免這個特點,可以加強安全性同時保留了EJB容器管理執行環境的能力。
9.使用任何方法啟動、停止和管理執行緒。這個約束消除了與EJB容器管理死鎖、執行緒和併發問題的責任相沖突的可能性。
透過限制使用10-16幾個特點,你的目標是堵上一個潛在的安全漏洞:
10.直接讀寫檔案描述符。
11.為一段特定的程式碼獲得安全策略資訊。
12.載入原始的類庫。
13.訪問Java一般角色所不能訪問的包和類。
14.在包中定義一個類。
15.訪問或修改安全配置物件(策略、安全、提供者、簽名者和實體)。
16.使用Java序列化特點中的細分類和物件替代。
17.傳遞this引用指標作為一個引數或者作為返回值返回this引用指標。你必須使用SessionContext或EntityContext中的getEJBObject()的結果。
Enterprise beans make use of the services provided by the EJB container, such as lifecycle
management. To avoid conflicts with these services, enterprise beans are
restricted from performing certain operations:
n Managing or synchronizing threads
n Accessing files or directories with the java.io package
Using AWT functionality to display information or to accept information from a
keyboard
n Listening on a socket, accepting connections on a socket, or using a socket for
multicast
n Setting a socket factory used by ServerSocket, Socket, or the stream handler
factory used by the URL class
n Loading a native library
EJB元件的約束
EJB的開發者並不需要在EJB的元件實現程式碼中編寫系統級的服務,EJB提供商/開發者需知道並且嚴格地遵守一些限制,這些限制與開發穩定的和可移植的EJB元件的利益有關。
以下是你應該回避使用的一些Java特色,並且在你的EJB元件的實現程式碼中要嚴格限制它們的使用:
1.使用static,非final 欄位。建議你在EJB元件中把所有的static欄位都宣告為final型的。這樣可以保證前後一致的執行期語義,使得EJB容器有可以在多個Java虛擬機器之間分發元件例項的靈活性。
2.使用執行緒同步原語來同步多個元件例項的執行。避免這個問題,你就可以使EJB容器靈活的在多個Java虛擬機器之間分發元件例項。
3.使用AWT函式完成鍵盤的輸入和顯示輸出。約束它的原因是伺服器方的商業元件意味著提供商業功能而不包括使用者介面和鍵盤的I/O功能。
4.使用檔案訪問/java.io 操作。EJB商業元件意味著使用資源管理器如JDBC來儲存和檢索資料而不是使用檔案系統API。同時,部署工具提供了在部署描述器(descriptor)中儲存環境實體,以至於EJB元件可以透過環境命名上下文用一種標準的方法進行環境實體查詢。所以,使用檔案系統的需求基本上是被排除了。
5.監聽和接收socket連線,或者用socket進行多路傳送。EJB元件並不意味著提供網路socket伺服器功能,但是,這個體系結構使得EJB元件可以作為socket客戶或是RMI客戶並且可以和容器所管理的環境外面的程式碼進行通訊。
6.使用映象API查詢EJB元件由於安全規則所不能訪問的類。這個約束加強了Java平臺的安全性。
7.欲建立或獲得一個類的載入器,設定或建立一個新的安全管理器,停止Java虛擬機器,改變輸入、輸出和出錯流。這個約束加強了安全性同時保留了EJB容器管理執行環境的能力。
8.設定socket工廠被URL's ServerSocket,Socket和Stream handler使用。避免這個特點,可以加強安全性同時保留了EJB容器管理執行環境的能力。
9.使用任何方法啟動、停止和管理執行緒。這個約束消除了與EJB容器管理死鎖、執行緒和併發問題的責任相沖突的可能性。
透過限制使用10-16幾個特點,你的目標是堵上一個潛在的安全漏洞:
10.直接讀寫檔案描述符。
11.為一段特定的程式碼獲得安全策略資訊。
12.載入原始的類庫。
13.訪問Java一般角色所不能訪問的包和類。
14.在包中定義一個類。
15.訪問或修改安全配置物件(策略、安全、提供者、簽名者和實體)。
16.使用Java序列化特點中的細分類和物件替代。
17.傳遞this引用指標作為一個引數或者作為返回值返回this引用指標。你必須使用SessionContext或EntityContext中的getEJBObject()的結果。
相關文章
- git 相關使用文章Git
- 請問是有好用穩定的文章查重介面?
- 又叒叕是一篇講快取的文章快取
- 這是一篇關於程式設計師學習的文章程式設計師
- MySQL 中的約束及相關操作MySql
- 雲端儲存是怎麼工作的?看這篇文章就足夠了!
- 這是一篇成為 git 高手的文章Git
- (一)、文章投票網站的redis相關實現(Java)網站RedisJava
- java基礎相關文章Java
- 文章推薦:EJB的效能除錯除錯
- 最近看了一篇文章講的是vue響應式的實現原理,複述一下吧~Vue
- 對於怎麼理解js中Event Loop,你可以看這篇文章JSOOP
- JSP 中文問題(找了好多文章還是不行)JS
- 技術債是什麼、怎麼還?你想知道的都在這一篇文章裡了!
- 請問怎麼限制軟體的使用期限?
- 差分約束的一些理解
- 一個文章表的 MySQL 索引怎麼建立合理MySql索引
- [thinkPHP5專案實戰_28]前臺文章"相關文章"的功能完善PHP
- 泛型的約束理解泛型
- 釋出的文章,怎麼生成HTML?HTML
- 講分散式唯一id,這篇文章很實在分散式
- 如何優雅的設計RESTful API?這是我看過講的最清晰的文章!RESTAPI
- IPIDEA講述代理IP以及代理IP池的概念是什麼Idea
- 這篇文章只簡單通俗的講單例模式單例模式
- 技術文章是怎樣煉成的?
- 前臺怎麼釋出文章?編輯文章?
- 再有人問你synchronized是什麼,就把這篇文章發給他。synchronized
- 再有人問你synchronized是什麼,就把這篇文章發給他synchronized
- 可能是把Docker的概念講的最清楚的一篇文章Docker
- 到底什麼是事件驅動架構EDA?這篇文章講得比較清楚。事件架構
- Win10系統講述人怎麼關閉 win10關閉講述人功能的方法Win10
- 請教一個關於EJB建立物件時的問題物件
- 如何運用TRIZ解決實際問題?這篇文章講的很清楚
- Flutter學習:什麼是Container以及佈局約束的實現FlutterAI
- 常見問題--表的約束initially immediate 理解
- 想理解JVM看了這篇文章,就知道了!(一)JVM
- 關於Tungsten Fabic版本問題,這一篇文章說清了
- 這是一篇SQL隱碼攻擊文章SQL