日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ejb 2.0 3.0_定义EJB 3.1视图(本地,远程,无接口)

發(fā)布時間:2023/12/3 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ejb 2.0 3.0_定义EJB 3.1视图(本地,远程,无接口) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ejb 2.0 3.0

這篇文章將討論使用批注定義EJB視圖的可能方法(最后我將只提到使用EJB部署描述符)。我將重點介紹最新的EJB 3.1視圖,這些視圖將省略舊的本地,遠程和本地接口。 因此,我們可以選擇:

  • 遠程業(yè)務界面視圖,
  • 本地業(yè)務界面視圖,
  • 無接口視圖

我不會討論這些視圖之間的功能差異,而將重點放在定義它們的可能方法上。

本地業(yè)務界面視圖

  • EJB正在實現(xiàn)此接口。

    @Local public interface LocalA {void localA(); }@Stateless public class MeineEJB implements LocalA {@Overridepublic void localA() {} }

    優(yōu)點:

    • 您不必在EJB中指定接口類型。 您只需“用Java實現(xiàn)”它,其余的工作就由容器完成。
    • 有關接口類型的信息牢固地附加在接口上,因此對于其他開發(fā)人員來說可能更容易理解。
    • 由于有了Java implements子句,您可以使用javac或IDE來確保實現(xiàn)了所有EJB業(yè)務方法。

    缺點:

    • 現(xiàn)在,您的界面已與EJB技術緊密結合(導入javax.ejb.*包。)現(xiàn)在,您必須為API客戶端提供使用它所需的庫。
  • 具有

    EJB必須定義應該作為本地業(yè)務接口公開的接口(這是默認設置,請參見第3點。)

    public interface LocalA {void localA(); }@Stateless @Local(LocalA.class) public class MeineEJB implements LocalA {@Overridepublic void localA() {} }

    優(yōu)點:

    • 有關接口類型的信息是松散耦合的。 您可以將API交付給客戶端,而不必關心EJB語義。 如果您將其隱藏在外立面上,那么最終用戶(甚至是開發(fā)人員)甚至不必知道它在幕后使用EJB技術。
    • 由于有了Java implements子句,您可以使用javac或IDE來確保實現(xiàn)了所有EJB業(yè)務方法。

    缺點:

    • 您的EJB現(xiàn)在必須使用@Local注釋定義其所有業(yè)務接口,因此這是您的附加工作。 不僅實現(xiàn)接口,還需要記住聲明EJB正在公開它。 (從javac角度看)沒有什么可以阻止您將接口放入@Local批注中,而該接口實際上不是由EJB實現(xiàn)的。
  • EJB正在實現(xiàn)它。

    因為它是EJB唯一實現(xiàn)的接口,所以容器假定它必須是本地業(yè)務接口。 如果EJB實現(xiàn)多個接口,則容器將無法識別哪個接口是您的本地業(yè)務接口。

    public interface LocalA {void localA(); }@Stateless public class MeineEJB implements LocalA {@Overridepublic void localA() {} }

    優(yōu)點:

    • 具有上述第一種和第二種方法的所有優(yōu)點。

    缺點:

    • 它假定EJB容器的默認行為以及開發(fā)人員對此的了解。 如果你使用一個以上的EJB圖。它不會起作用。 此外,它甚至不會 ,如果你的EJB正在實施一個以上的工作界面(不一定是EJB視圖)。
  • 具有

    在這種情況下,有趣的是,因為您沒有使用Java implements子句,所以實際上接口和EJB中的方法可以具有不同的簽名。 任何此類不匹配都會導致容器拋出異常。 還請注意,業(yè)務接口方法實現(xiàn)上缺少@Override批注。 這是因為我們沒有用Java術語實現(xiàn)任何接口。

    public interface LocalA {void localA(); }@Stateless @Local(LocalA.class) public class MeineEJB {public void localA() {} }

    優(yōu)點:

    • 有關接口類型的信息是松散耦合的。 您可以將API交付給客戶端,而不必關心EJB語義。 如果您將其隱藏在外立面上,那么最終用戶(甚至是開發(fā)人員)甚至不必知道它在幕后使用EJB技術。

    缺點:

    • 具有上面討論的第二種方法的所有缺點。
    • 您聲明為@Local接口的某些方法未實現(xiàn)的知識在很大程度上取決于使用的IDE。 Intellij IDEA會將其標記為錯誤,但AFAIR Eclipse則不會。
    • 在我看來,這是最重要的缺點的組合,因此是定義EJB視圖的最糟糕的方法。
  • 遠程業(yè)務界面視圖

    本地業(yè)務接口視圖的情況1、2和4對遠程業(yè)務接口視圖也有效。 點號 3是一個例外。 容器將永遠不會假設任何有關遠程接口的信息。 如果EJB正在實現(xiàn)某個接口并且未定義接口的類型,則它將始終假定它是本地的。

    無接口視圖

    我確定閱讀完上述部分后,您將能夠確定使用以下兩種方法定義無接口EJB視圖的利弊。 因此,我將不在這里討論它們。

  • EJB注釋為

    該EJB可以(但不是必須)實現(xiàn)某些接口(普通Java或業(yè)務本地/遠程接口)。 @LocalBean僅對EJB類有效。

    @Stateless @LocalBean public class MeineEJB {public void localMethod() {} }
  • EJB沒有任何特殊的注釋。

    該容器假定,如果將一個類注釋為EJB,但未實現(xiàn)任何接口,并且沒有任何與視圖相關的注釋–它將公開一個無接口視圖。

    @Stateless public class MeineEJB {public void localMethod() {} }
  • EJB部署描述符(ejb-jar.xml)

    前面的所有部分都在考慮使用批注定義的EJB視圖。 您還可以使用部署描述符( ejb-jar.xml )定義EJB視圖。 例:

    public interface LocalA {void localA(); }public interface RemoteA {void remoteA(); }@Stateless public class MeineEJB {public void localA() {}public void remoteA() {} }<ejb-jar xmlns='http://java.sun.com/xml/ns/javaee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd' version='3.1'><enterprise-beans><session><ejb-name>MeineEJB</ejb-name><business-local>com.piotrnowicki.remotelocalejb.LocalA</business-remote><business-remote>com.piotrnowicki.remotelocalejb.RemoteA</business-remote><local-bean/></session></enterprise-beans> </ejb-jar>

    上面的代碼和DD定義了一個EJB,它公開了三個視圖(本地業(yè)務,遠程業(yè)務和無接口)。 在語義上與以下內(nèi)容相同:

    @Stateless@Local(LocalA.class)@Remote(RemoteA.class)@LocalBeanpublic class MeineEJB {public void localA() {}public void remoteA() {}}

    參考:在Piotr Nowicki主頁博客上,我們的JCG合作伙伴 Piotr Nowicki 定義了EJB 3.1視圖(本地,遠程,無接口) 。

    翻譯自: https://www.javacodegeeks.com/2013/03/defining-ejb-3-1-views-local-remote-no-interface.html

    ejb 2.0 3.0

    總結

    以上是生活随笔為你收集整理的ejb 2.0 3.0_定义EJB 3.1视图(本地,远程,无接口)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。