2011-10-11 9 views

risposta

111

vista del client remoto

Quando il vostro EJB e dei suoi clienti saranno in un ambiente distribuito - che significa EJB e clienti risiederanno su macchine virtuali separate Java. Esempio: EJB ospitati su WebSphere Application Server e Servlet che utilizzano API EJB ospitate su un server Tomcat.

locale vista cliente

Solo quando è garantito che altri bean enterprise o clienti potranno affrontare solo il fagiolo all'interno di una singola JVM. Esempio, EJBs e Servlet distribuiti sullo stesso server WebSphere.

No-Interface vista

è quasi uguale a vista client locale, ma ci sono differenze. In questo caso, la classe bean non è necessaria per implementare le interfacce di visualizzazione client. Tutti i metodi pubblici della classe 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 classe bean piuttosto che il tipo di un'interfaccia locale. Questa è una comodità introdotta come parte di Java EE6.

differenza tra la visualizzazione client locale e non-interfaccia vista

In caso di mancata interfaccia vista, il client e il bean bersaglio deve essere confezionato 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.

È possibile utilizzare la vista client locale rispetto alla visualizzazione senza interfaccia in base allo scenario di utilizzo dell'API. È molto probabile che per la visualizzazione senza interfaccia ricevano funzionalità flessibili nelle specifiche future.

Motivo

Storicamente o in altro modo, un cliente che desidera utilizzare i servizi EJB doveva "cercare" il fagiolo sul contenitore (con alcuni 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 pooling, le transazioni gestite dal contenitore, ecc. Quindi, un client non può creare un'istanza esplicita di un EJB con l'operatore new. 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.

+4

Mi chiedo se sia davvero il caso, che una vista client locale possa essere utilizzata tra diverse applicazioni aziendali. Nella specifica EJB 3.2, sezione 3.2.2, si afferma che il richiamo di bean da diverse applicazioni attraverso le viste client locali è specifico del fornitore e potrebbe non essere supportato nei contenitori. Hai in mente qualche app server specifico? – mcmil

+0

Cosa succede? se "nuovo" un EJB (ciò potrebbe accadere se il client e il bean si trovano nella stessa applicazione) – lovespring

+2

Se si utilizza 'new', si ottiene una nuova istanza. È tutto. Quella nuova istanza non avrà alcun "supporto" dal contenitore in termini di raggruppamento, impostazione del suo contesto ecc. Si sta eseguendo da soli. –

3

ai sensi dell'articolo 3.2.2 del EJB 3.1 Specification:

L'accesso a un bean enterprise attraverso la vista client locale è necessaria solo di essere sostenuti per i clienti locali confezionati all'interno della stessa applicazione come il bean enterprise che fornisce la vista del 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 di esporre una visualizzazione client locale senza dover dichiarare un'interfaccia separata .

Problemi correlati