Che cos’è la visualizzazione locale / remota e senza interfaccia in EJB?

Sto cercando di capire quale sia lo scopo e perché abbiamo bisogno delle diverse visualizzazioni client in EJB. Qualcuno potrebbe provare a spiegare?

Vista client remoto

Quando il tuo EJB e i suoi client si troveranno in un ambiente distribuito, ovvero gli EJB ei client risiederanno su macchine virtuali Java separate. Esempio: EJB ospitati su WebSphere Application Server e Servlet che utilizzano API EJB ospitate su un server Tomcat.

Vista client locale

Solo quando è garantito che altri bean enterprise o client indirizzeranno il bean solo all’interno di una singola JVM. Esempio, EJBs e Servlet distribuiti sullo stesso server WebSphere.

Vista senza interfaccia

È quasi uguale alla vista client locale, ma ci sono differenze. In questo caso, la class bean non è necessaria per implementare le interfacce di visualizzazione client. Tutti i metodi pubblici della class bean vengono automaticamente esposti al chiamante. la vista senza interfaccia acquisisce sempre un riferimento EJB, proprio come le visualizzazioni locali o remote, tramite l’iniezione o la ricerca JNDI; ma, il tipo Java del riferimento EJB è il tipo di class bean piuttosto che il tipo di un’interfaccia locale. Questa è una comodità introdotta come parte di Java EE6.

Differenza tra vista client locale e vista senza interfaccia

In caso di visualizzazione senza interfaccia, il client e il bean di destinazione devono essere pacchettizzati nella stessa applicazione (EAR). In caso di vista locale, il client può essere impacchettato in un’applicazione separata rispetto all’applicazione aziendale. Quindi, questo offre maggiore flessibilità in termini di granulosità dei componenti.

È ansible utilizzare la vista client locale vs nessuna interfaccia in base allo scenario di utilizzo dell’API. È molto probabile che per la visualizzazione senza interfaccia ricevano funzionalità flessibili nelle specifiche future.

Ragionare

Storicamente o meno, un cliente che desidera utilizzare i servizi EJB doveva “cercare” il bean sul contenitore (con determinati contesti iniziali). Questo perché tutte le invocazioni sono effettuate tramite uno speciale riferimento EJB (proxy) fornito dal contenitore. Ciò consente al contenitore di fornire tutti i servizi bean aggiuntivi come il pool, le transazioni gestite dal contenitore, ecc. Quindi, un client non può creare un’istanza esplicita di un EJB con un new operatore. La vista client viene fornita tramite determinate interfacce a cui il cliente avrebbe accesso. La realizzazione del proxy sul lato server viene eseguita in base a queste interfacce. Diverse visualizzazioni client sono definite per suite diversi scenari di distribuzione come menzionato sopra.

Come da Sezione 3.2.2 della Specifica EJB 3.1:

È necessario che l’accesso a un bean enterprise tramite la vista client locale sia supportato solo per i client locali inclusi nella stessa applicazione del bean enterprise che fornisce la vista client locale. Le implementazioni conformi di questa specifica possono facoltativamente supportare l’accesso alla vista client locale di un bean enterprise da un client locale contenuto in un’applicazione diversa. I requisiti di configurazione per l’accesso tra applicazioni alla vista client locale sono specifici del fornitore e non rientrano nell’ambito di questa specifica. Le applicazioni che fanno affidamento sull’accesso inter-applicazione alla vista client locale non sono portabili.

La visualizzazione senza interfaccia è solo una funzione di comodità che consente a un bean di esporre una vista client locale senza dover dichiarare un’interfaccia separata.