Pergunta

Eu não sou fã do JSF. O MVC da primavera faz muito sentido para mim e eu o usei no passado.

Você pode me convencer ou fornecer dicas para integrá -lo bem ao JEE6 e compartilhar e entender o CDI.

Não me importo de ter um contexto de aplicativo apenas para o material do MVC, mas se eu usar @inject ou @ejb nos meus controladores MVC, o que vai dar errado?

Seam3 parece interessante, porém, está pronto para a produção?

Foi útil?

Solução

Você pode me convencer ou fornecer dicas para integrá -lo bem ao JEE6 e compartilhar e pegam o CDI

Talvez eu esteja errado, mas acho que você de alguma forma precisa fazer uma escolha entre o CDI e a parte da primavera, um deles deve ser responsável por criar objetos para que a magia ocorra. Portanto, se você quiser usar o CDI com o Spring MVC, terá que fazer com que seus controladores CDI Beans. A partir de Javaone 2010: Java EE 6 Painel "O que fazemos agora?" notas:

Springmvc e CDI? => Tecnicamente possível: use o CDI Beans como controladores (mas Reza diz que não está vendo a demanda suficiente para que a SpringMVC faça o trabalho).

Eu também sugiro calorosamente dar uma olhada Java EE 6 (CDI / EJB 3.1) XOR Spring Core Reloaded.

Não me importo de ter um contexto de aplicativo apenas para o material do MVC, mas se eu usar @inject ou @ejb nos meus controladores MVC, o que vai dar errado?

A primavera fornece incorporado Apoio a "AT inject" do JSR-330 e também fornece alguma mágica para @EJB. Se é isso que você está procurando, a primavera funcionará. Mas não é isso que o CDI (JSR-299) lhe dá.

Outras dicas

Outra opção seria usar o JAX-RS como controlador (com a implementação da camisa, você pode encaminhar o controle para um JSP) e usar o JSP para sua visualização. Dessa forma, você não precisaria se preocupar em integrar a primavera com Java EE.

Por exemplo, você pode ter um controlador de volta:

@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);
    }
}

Isso o direcionaria para um JSP chamado Home.jsp, e você poderá obter seus dados no JSP através do objeto Solicitação. Observe que o JAX-RS é usado para serviços da Web RESTful, para entender o que está acontecendo no código abaixo, você teria que entender o descanso.

Usando CDI da primavera Explica como construir uma ponte CDI-Spring com um abordagem do BeanFactoryPosts que importa todos os grãos de um CDI BeanManager para um contexto de aplicação de primavera.

Pascal está certo ao dizer que você precisa fazer uma escolha entre a primavera DI e o CDI, mas com essa abordagem você pode fazer a escolha por módulo.

Em um layout típico de guerra, há um módulo da Web usando vários módulos de serviço e persistência no Web-Inf/Lib. Com a ponte CDI para primavera, você pode transformar os módulos Web-Inf/Lib em arquivos de feijão CDI, enquanto o módulo da web é não Um arquivo de feijão e usa apenas a mola di.

A ponte acessa o CDI BeanManager via JNDI e cria um feijão de fábrica de primavera para cada feijão CDI.

Estou usando esta ponte com precisão para o seu caso de uso: integrando um front -end da Web MVC Spring com um back -end Java EE 6.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top