1.WebService能够说是跨平台的,由于它采用的是XML技术,说穿了就是把你的请求按照该WebServece的标准将参数传过去,而后服务器返回结果,固然了最重要的是参数的传递和结果的返回都是采用XML格式,但须要按照规范的,如今有SOAP和ebXML,说到XML天然有DTD或是Schema了,它用WSDL和UDDI来管理这些规范。EJB也能够说成是远程调用,但采用的协议是RIM/IIOP,客户端将方法请求按照协议封装,而后发送到服务器,服务器把结果返回给客户端。因为采用了协议,因此传输的数据咱们能够当作二进制数据和WebService(传输xml文本数据)不同。 WebService提供一个跨平台的异构方法调用,通常用来实现某种商务逻辑过程。EJB提供一个更精确的方法调用,通常又多个EJB来实现必定的商务逻辑。 通常你能够用WebService来提供用户调用,具体怎么实现用EJB来作。java
2.EJB的分布式:一个业务逻辑可能会调用分布在多台服务器上的 EJB 组件,可是这么多的组件调用必须归入一个事务范围之中。也就是说若是须要调用三个 EJB 组件,第一个调用成功,第二个调用成功,但第三个调用失败了,所以在第一和第二次调用成功时进行的事务操做(这里的事务操做不仅仅指数据库的,还有可能包括消息队列服务的事务)都必须进行回滚。可是,若是是调用三个 WebService 的话,那调用成功的那两个基本上是不可能进行回滚的,调用完了就是完了。
WebService 只是对外提供的调用接口,而 EJB 是个业务组件。一个对外的 WebService 在服务端中也是须要实现业务逻辑的,在 J2EE 中,这些业务逻辑基本上都是由 EJB 组件来实现,对外发布 WebService 接口(固然了,使用符合 JAX-WS 规范的开源框架不用 EJB 也能作到)mysql
相对于 EJB 这种服务端来讲,Servlet 只能算是一个 Web 层面调用的客户端。一个 EJB 组件不单单是只能用于 B/S 结构的应用,也能用于 C/S 结构的应用。这也能澄清不少人的误区,认为 Java Web 就是 J2EE 了,其实 J2EE 是一系列的规范集,而 Java Web 只是 J2EE 诸多规范中的一小部分。J2EE 中其余大部分规范定义的都是服务端的东西,做为具体的客户端调用,能够是 B/S 的,也能够是 C/S 的。sql
3.Webservice主要关注于解决异构系统、不一样语言系统通讯,其关注的是分布式服务开发、着手点要高、站的角度高,而ejb能够看作是分布式编程平台,经过容器和组件,简化了程序开发、调试和部署等它关注的是分布式组件开发,粒度小。数据库
Web service能够看作是异构系统、异构语言系统间通讯的一个标准,而ejb只属于J2EE规范的一部分。编程
ejb是Java EE 中的一个规范,该规范描述了分布式应用程序须要解决的问题,例如事务处理、安全、日志、分布式等,而同时呢,sun公司也实现了本身定义的这一个标准,至关于本身颁布一个标准而后,又给出了实现供别人使用,实现以不少API的方式提供给用的人。安全
ejb是按照java服务器接口定义的java类,能够理解为一个特殊的java类,放在容器里容器能够帮助该类管理事务、分布式、安全等,通常小的程序不会用到,只有大型分布式系统才会用到ejb,既然ejb是一个java类或是一个组件,颗粒较小,这也是与Webservice的区别之一,下面会说到,它就能够被其它一个或多个模块调用。服务器
包含了三种类型的Bean,能够经过注释JPA一个规范来标记,其中有一种Bean,叫MDB消息驱动bean,它的通讯机制涉及到了JMS协议。框架
ejb能够进行远程调用,可是不可以跨语言,ejb是同步调用,而平时咱们说的的ejb异步调用指的是ejb的MDB异步通讯异步