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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

  • 遠程業務界面視圖,
  • 本地業務界面視圖,
  • 無接口視圖

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

本地業務界面視圖

  • EJB正在實現此接口。

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

    優點:

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

    缺點:

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

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

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

    優點:

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

    缺點:

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

    因為它是EJB唯一實現的接口,所以容器假定它必須是本地業務接口。 如果EJB實現多個接口,那么容器將無法識別哪個接口是您的本地業務接口。

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

    優點:

    • 具有上述第一種和第二種方法的所有優點。

    缺點:

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

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

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

    優點:

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

    缺點:

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

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

    無接口視圖

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

  • EJB注釋為

    該EJB可以但不一定要實現某些接口(普通Java或業務本地/遠程接口)。 @LocalBean僅對EJB類有效。

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

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

    @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,它公開了三個視圖(本地業務,遠程業務和無接口)。 在語義上與以下內容相同:

    @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 3.1视图(本地,远程,无接口)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。