领先一步
VMware 提供培训和认证,助您加速进步。
了解更多如今,Sun 认真对待开源,用户似乎也开始认真对待 Sun 的开源了。
GlassFish 虽然后进入开源应用服务器领域,但似乎正在获得认可。更重要的是,它实际上相当不错。Interface21 的几位成员,包括 Costin 和 Juergen,都考察了 GlassFish 并表示赞赏(尽管我们尚未在生产环境中使用过它)。据我所闻,其性能非常出色——这很可能很大程度上归功于基于 NIO 重构的 Servlet 引擎。JPA 实现 TopLink Essentials 也应该表现良好,因为它基于成熟且高性能的 TopLink 引擎。
GlassFish 已经有实际被采用的证据:例如,著名的澳大利亚酒店预订服务 Wotif.com 就是一个例子。根据我最近澳大利亚之行的经历,Wotif 是那种普通人(而不仅仅是技术人员)会谈论的网站,就像 eBay 和 lastminute.com 一样。
当然,Wotif.com 也在使用 Spring。我认为 Sun 在企业 Java 领域变得更加重要的部分原因是,他们现在更能融入更广阔的世界,并且愿意采纳并响应外部意见。
因此,Sun 已经在多个领域(尤其是在 Web 服务堆栈中)为 GlassFish 提供 Spring 支持。这尤其有趣,因为 GlassFish 的 Web 服务部分(自然地)是 RI。
GlassFish 开发者 Kohsuke Kawaguchi 最近在其博客中谈到了 JAX-WS 堆栈中的 Spring 支持。这非常棒,因为它通过提供一个 Spring 2.0 命名空间处理器来实现。请注意,同时使用了 JAX-WS 命名空间和核心 Spring Beans 命名空间,允许将 Spring Bean 定义与 JAX 特定配置混合。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:ws= "http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet" ...>
<wss:bindings id="jax-ws.http">
<wss:bindings>
<wss:binding url="/stockQuote">
<wss:service><!-- nested bean is of course fine -->
<ws:service impl="foo.MyService">
<ws:handlers>
<ref bean="myHandler" />
</ws:handlers>
</ws:service>
</wss:service>
</wss:binding>
</wss:bindings>
</wss:bindings>
<bean id="myHandler" class="foo.MyHandler" />
</beans>
这与 Spring remoting 的方式相反,后者是 remoting 技术基本调用 Spring,而不是 Spring 导出服务,但它的集成同样出色且易于使用。大概也可能导入其他 Spring 配置文件来利用现有的 Bean 定义。
Kohsuke 补充了一个有趣的观点:
由于 Spring 支持是开放式的,因此可以利用它来启用其他 JAX-WS 扩展。例如,我们可以使用它来配置 JMS 传输,或者配置 JSON 编码等。现在,Web 服务端点可以直接利用 Spring 所提供的一切:所有配置功能、声明式服务和企业集成……
JAX-WS RI 的 Spring 集成 文档 在这里。
Spring 支持在 GlassFish 社区似乎广受欢迎。我们也希望听到 Spring 社区的反馈。您希望在 GlassFish 中看到哪些集成功能?WebLogic 中已发布的一些集成功能,如增强的事务管理和 JMX/控制台集成,可能是一个不错的起点。
当然,我们在 Spring 2.0 中已经为 JPA 和 TopLink Essentials(GlassFish 中的 JPA RI 和持久化引擎)做了很多工作。Mike Keith,EJB 3.0 联合负责人、TopLink 核心开发者和 ORM 方面的全能专家,提供了极大的帮助,我们发现整个 TopLink 团队反应迅速。