Domanda

Io non sono un fan di JSF. Spring MVC fa un sacco di senso per me e l'ho usato in passato.

Mi può parlare fuori di esso o fornire suggerimenti per la sua integrazione bene in JEE6 e condividere e grattacapi con CDI.

Non mi dispiacerebbe avere un contesto di applicazione solo per la roba MVC, ma se uso @Inject o @EJB nei miei controller MVC, che sta per andare a torto?

Seam3 sembra interessante anche se è pronto per la produzione?

È stato utile?

Soluzione

  

Mi può parlare fuori di esso o fornire suggerimenti per la sua integrazione bene in JEE6 e la quota e trucchi con CDI

Forse mi sbaglio, ma penso che si deve in qualche modo a fare una scelta tra CDI e la parte DI di primavera, uno di loro deve essere responsabile della creazione di oggetti per la magia che si verifichi. Quindi, se si desidera utilizzare CDI con Spring MVC, che avrebbe dovuto fare i vostri fagioli controller CDI. Da JavaOne 2010: "Cosa facciamo adesso" Java EE 6 pannelli note :

  

SpringMVC e CDI? => Tecnicamente possibile: uso fagioli CDI come controller (ma Reza dice che non stanno vedendo una domanda sufficiente per SpringMVC per fare il lavoro).

Ho anche calorosamente suggerisco di dare un'occhiata al Java EE 6 (CDI / EJB 3.1) XOR molla del nucleo Reloaded .

  

Non mi dispiacerebbe avere un contesto di applicazione solo per la roba MVC, ma se uso @Inject o @EJB nei miei controller MVC, che sta per andare a torto?

Primavera offre built-in sostegno "a iniettare" dalla JSR-330 e fornisce anche qualche magia per @EJB. Se questo è tutto quello che stai cercando, primavera funzionerà. Ma questo è proprio quello che non CDI (JSR-299) ti dà.

Altri suggerimenti

Un'altra opzione sarebbe quella di utilizzare JAX-RS come controller (con l'implementazione di Jersey è possibile inoltrare controllo a un JSP), e utilizzare JSP di per la visualizzazione. In questo modo non avrebbe dovuto preoccuparsi di integrazione primavera con Java EE.

Ad esempio, si potrebbe avere un HomeController:

@Path("/")
@Stateless
public class HomeController {

    @Context
    HttpRequest request; // Injects request object so you set attributes.

    @EJB // Inject your EJB
    EmployeeServiceLocal employeeService;

    @GET
    public Viewable getHomePage() {

        Employee employee = employeeService.getEmployee();
        request.setAttribute("employee", employee);
        return new Viewable("/home.jsp", null);
    }
}

Ciò indirizzarvi ad un JSP chiamato home.jsp, e si sarebbe in grado di ottenere i dati sulla JSP tramite l'oggetto richiesta. Si noti che JAX-RS è utilizzato per RESTful Web Services, in modo da capire cosa sta succedendo nel seguente codice che avrebbe dovuto avere una comprensione di REST.

Utilizzando CDI a partire dalla primavera spiega come costruire un ponte CDI a molla con un BeanFactoryPostProcessor che importa tutte fagioli da una CDI BeanManager in un contesto di applicazione della sorgente.

Pascal ha ragione quando dice che devi fare una scelta tra la primavera DI e CDI, ma con questo approccio è possibile effettuare la scelta per modulo .

In una disposizione tipica WAR, v'è un modulo web utilizzando un certo numero di moduli di servizio e persistenza in WEB-INF / lib. Con il ponte CDI-to-Spring, è possibile attivare i moduli WEB-INF / lib in archivi di fagioli CDI, mentre il modulo web è non un archivio di fagioli e utilizza solo primavera DI.

Il ponte accede al BeanManager CDI via JNDI e crea un fagiolo fabbrica di primavera per ciascun bean CDI.

Sto usando questo ponte proprio per il vostro caso d'uso: L'integrazione di un frontend web Spring MVC con un Java EE 6 backend

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