Domanda

Sto avendo alcuni problemi devoloping un'applicazione basata su EJB 3 tecnologia.

Vorrei utilizzare un modello Facciata nei chicchi di sessione per disaccoppiare il mio cliente (un'applicazione web) dal mio Fagioli entità.

Sto usando uno SFSB per gestire la sessione utente.

Così ho un FacadeLoginRemote remota interfaccia, che espone al cliente i metodi doLogin(), doLogout(), ecc ... Attualmente questo SFSB comprende anche alcuni altri metodi come getCourse(int id), getResource(int id). Non tutti gli utenti possono effettivamente Scarica il corso e ottenere la risorsa , in modo che il Facciata eseguire alcune verifiche prima di tornare ai valori al cliente.

Vorrei dividere la facciata, mettendo il metodi getCourse() e getResource() in una classe speciale per loro, ma lasciando al FacadeLoginRemote le funzioni di controllo dei privilegi degli utenti.

Se faccio qualche SLSBs diversi io li esporre al cliente. Così il cliente avrebbe la possibilità di collegarsi direttamente a loro di evitare i controlli dal FacadeLoginRemote.

Mi sbaglio? Esiste un modo per fare questo?

Grazie in anticipo,

Andrea

È stato utile?

Soluzione

In primo luogo una parola di consulenza; se si sta costruendo un'applicazione web, allora è più tipico di avere il livello Web e il livello di business all'interno della stessa applicazione. Non c'è bisogno della configurazione remota in quel caso. I vostri bean di sessione verranno eseguiti nella stessa JVM come il livello Web.

Questo non vuol dire che non ci sono motivi legittimi per utilizzare interfacce remote (ci sono molti), ma leggendo la tua descrizione del problema mi pare che si potrebbe essere meglio utilizzare i fagioli locali.

In alternativa è l'applicazione web si parla di un'applicazione remota che risiede da qualcun altro sui loro server, e fare che consumano servizi da grani di EJB?

In Java EE, l'autenticazione può essere fatta nel modulo web. Specialmente se si sta utilizzando i fagioli locali, questa autenticazione (l'identità di protezione) verrà propagata automaticamente ai fagioli EJB. È possibile annotare i vostri fagioli EJB a richiedere un ruolo di protezione specifico. Se l'utente non è autenticato, lei non ha quel ruolo e il servizio verrà rifiutato.

In questo caso non importa se i tentativi del client di collegarsi direttamente ai fagioli con i metodi getCourse() etc.

Mi chiedo come è implementato il doLogin() nel vostro EJB. La mia ipotesi è che hai fatto qualcosa abitudine là, come purtroppo al meglio delle mie conoscenze EJB3 non dispone di un modo semplice per fare un account di accesso programmatico tramite un metodo specifico su una specifica di fagioli. La sicurezza è in gran parte dichiarativa, e dettagli di autenticazione dovrà quindi essere fornito dal cliente quando si accede a qualsiasi bean. Per esempio. quando si richiede fagioli da un JNDI remoto, è necessario fornire questi dettagli con la connessione JNDI iniziale al server remoto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top