Jboss 什么';混合Spring MVC和CDI/JEE6的最佳方式是什么?

Jboss 什么';混合Spring MVC和CDI/JEE6的最佳方式是什么?,jboss,java-ee-6,glassfish-3,cdi,Jboss,Java Ee 6,Glassfish 3,Cdi,我不是JSF的粉丝。SpringMVC对我来说很有意义,我过去也用过它 你能说服我放弃它吗?或者提供一些技巧,让我把它很好地集成到JEE6中,并与CDI共享和获取信息 我不介意只为MVC的东西设置一个应用程序上下文,但是如果我在MVC控制器中使用@Inject或@EJB,会出现什么错误呢 Seam3看起来很有趣,但它已经准备好生产了吗 你能说服我放弃它吗?或者提供一些技巧,让我把它很好地集成到JEE6中,并与CDI共享和获取信息 也许我错了,但我认为你必须在CDI和Spring的DI部分之间做出

我不是JSF的粉丝。SpringMVC对我来说很有意义,我过去也用过它

你能说服我放弃它吗?或者提供一些技巧,让我把它很好地集成到JEE6中,并与CDI共享和获取信息

我不介意只为MVC的东西设置一个应用程序上下文,但是如果我在MVC控制器中使用@Inject或@EJB,会出现什么错误呢

Seam3看起来很有趣,但它已经准备好生产了吗

你能说服我放弃它吗?或者提供一些技巧,让我把它很好地集成到JEE6中,并与CDI共享和获取信息

也许我错了,但我认为你必须在CDI和Spring的DI部分之间做出选择,其中一个必须负责创建对象以实现魔法。因此,如果您想将CDI与SpringMVC结合使用,就必须制作控制器CDIBeans。发件人:

SpringMVC和CDI?=>技术上可行:使用CDIBeans作为控制器(但Reza说,他们认为SpringMVC的需求不足以完成这项工作)

我还热情地建议大家看看

我不介意只为MVC的东西设置一个应用程序上下文,但是如果我在MVC控制器中使用@Inject或@EJB,会出现什么错误呢


Spring为@EJB提供了内置功能,也提供了一些魔力。如果这就是你想要的,Spring会有用的。但这并不是CDI(JSR-299)提供的功能。

另一种选择是使用JAX-RS作为控制器(通过Jersey实现,您可以将控制转发给JSP),并使用JSP进行查看。这样,您就不必担心Spring与javaee的集成

例如,您可以有一个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);
    }
}
这将引导您到一个名为home.JSP的JSP,您将能够通过请求对象在JSP上获取数据。请注意,JAX-RS用于RESTful Web服务,因此要理解下面代码中的内容,您必须了解REST。

说明如何使用BeanFactoryPostProcessor构建CDI到Spring的桥接器,该处理器将所有Bean从CDI BeanManager导入Spring应用程序上下文

Pascal说得对,您必须在SpringDI和CDI之间做出选择,但通过这种方法,您可以对每个模块进行选择

在典型的WAR布局中,有一个web模块在web-INF/lib中使用许多服务和持久性模块。使用CDI到Spring桥,您可以将WEB-INF/lib模块转换为CDIBean归档,而WEB模块不是bean归档,只使用SpringDI

桥通过JNDI访问CDIBeanManager,并为每个CDIBean创建一个Spring工厂bean


我使用此桥正是为了您的用例:集成Spring MVC web前端和Java EE 6后端。

是的,请阅读Adam发表的文章a。我现在在一个绿地项目上,我想做的选择全在JEE6上。。。除了JSF之外我们都不太喜欢JSF模型。如果没有其他东西的话,我们将使用JAX-RS来完成所有的事情——这是我们的浏览器API,这是我们的自动化API。只是绑定的错误处理对于面向用户的页面要好一点。还有@pickles,您最终解决了关于“如何在没有这个愚蠢的JSF的情况下使用完整的JEE6堆栈”的难题了吗?