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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

  • 遠(yuǎn)程業(yè)務(wù)界面視圖,
  • 本地業(yè)務(wù)界面視圖,
  • 無(wú)接口視圖

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

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

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

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

    優(yōu)點(diǎn):

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

    缺點(diǎn):

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

    EJB必須定義應(yīng)該作為本地業(yè)務(wù)接口公開(kāi)的接口(這是默認(rèn)設(shè)置,請(qǐng)參見(jiàn)第3點(diǎn)。)

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

    優(yōu)點(diǎn):

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

    缺點(diǎn):

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

    因?yàn)樗荅JB唯一實(shí)現(xiàn)的接口,所以容器假定它必須是本地業(yè)務(wù)接口。 如果EJB實(shí)現(xiàn)多個(gè)接口,那么容器將無(wú)法識(shí)別哪個(gè)接口是您的本地業(yè)務(wù)接口。

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

    優(yōu)點(diǎn):

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

    缺點(diǎn):

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

    在這種情況下,有趣的是,因?yàn)槟鷽](méi)有使用Java implements子句,所以實(shí)際上接口和EJB中的方法可以具有不同的簽名。 任何此類(lèi)不匹配都會(huì)導(dǎo)致容器拋出異常。 另請(qǐng)注意,業(yè)務(wù)接口方法實(shí)現(xiàn)上缺少@Override批注。 這是因?yàn)槲覀儧](méi)有使用Java術(shù)語(yǔ)實(shí)現(xiàn)任何接口。

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

    優(yōu)點(diǎn):

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

    缺點(diǎn):

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

    本地業(yè)務(wù)接口視圖的情況1、2和4對(duì)遠(yuǎn)程業(yè)務(wù)接口視圖也有效。 點(diǎn)號(hào) 3是一個(gè)例外。 容器將永遠(yuǎn)不會(huì)承擔(dān)有關(guān)遠(yuǎn)程接口的任何事情。 如果EJB正在實(shí)現(xiàn)某個(gè)接口,并且未定義接口的類(lèi)型,則它將始終假定它是本地的。

    無(wú)接口視圖

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

  • EJB注釋為

    該EJB可以但不一定要實(shí)現(xiàn)某些接口(普通Java或業(yè)務(wù)本地/遠(yuǎn)程接口)。 @LocalBean僅對(duì)EJB類(lèi)有效。

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

    該容器假定,如果將一個(gè)類(lèi)注釋為EJB,但未實(shí)現(xiàn)任何接口,并且沒(méi)有任何與視圖相關(guān)的注釋–它將公開(kāi)一個(gè)無(wú)接口視圖。

    @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定義了一個(gè)EJB,它公開(kāi)了三個(gè)視圖(本地業(yè)務(wù),遠(yuǎn)程業(yè)務(wù)和無(wú)接口)。 在語(yǔ)義上與以下內(nèi)容相同:

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

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

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

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

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

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