2、JAXM和EJB
JAXM(Java API for XML Messaging)是一种类似于JMS(Java Message Service,Java消息服务)的消息通信的应用程序接口。JMS是一种用于在面向消息的中间件之上发送和接收消息的应用程序接口,而JAXM则是在 Web服务中传递消息的应用程序接口。因为它主要以传输基于XML文件的SOAP消息为主,所以可以说JAXM是面向文档的。JAXM用户利用SAAJ (SOAP with Attachments API forJava)集成,接收和管理SOAP消息,其中SAAJ主要是用来管理SOAP消息中的XML结构。
JAXM技术与上面所说的JAX-RPC存在很大的不同,后者主要使用方法调用的机制,并在Java RMI代理(proxy)之间隐藏SOAP消息。基于JAX-RPC技术,开发人员只会看见远程接口,即方法、参数和返回值。而在JAXM的作用下,开发人员将直接处理SOAP协议并开发自己专用的SOAP消息。类似于JAX-RPC,JAXM可以用来与任何遵循SOAP开发的Web服务组件交换SOAP 消息。比如说,一个enterprise bean可以利用JAXM来与用PERL开发的Web服务交换SOAP消息。
现在一些EJB 2.1开发人员推荐使用JAXM作为开发新的消息驱动bean的基础,即基于JAXM的消息驱动bean(JAXM-based message-driven bean,JAXM-MDB)。JAXM-MDB可以传输SOAP消息并作用为Web服务的组件。基于JAXM-MDB,开发人员可以实现单工的消息传输接口,或双工,即可接收可发送的消息传输接口(见下图6)。就目前来说,因为消息驱动bean组件可以广泛用到任意类型的消息系统,这种想法应该是可行的。
JAX-RPC和JAXM可以允许enterprise bean来访问其他平台的Web服务,并利用无状态的会话bean和消息驱动bean来开发相应的Web服务模块。这些应用程序接口是相对灵活的,适合于将EJB模块扩展为Web服务框架。

图6 JAXM-MDB
