IIWAB

JAX-RPC API 与 EJB 服务端点

IIWAB 1月前 ⋅ 118 阅读

一、基础概念

1. JAX-RPC

  • 全称:Java API for XML-based Remote Procedure Call
  • 定位:Java 早期 SOAP Web Service 规范(J2EE 1.4),基于 SOAP 1.1、XML RPC,用于开发、调用 SOAP Web 服务。
  • 核心:提供一套 API 定义Web Service 服务端点(Endpoint),把 Java 类暴露成可通过 SOAP 调用的远程服务。
  • 现状:已淘汰,被 JAX-WS 完全替代。

2. EJB 服务端点(EJB Endpoint)

EJB 分三类,其中会话Bean(Stateless/Stateful SessionBean) 可作为两种端点:

  1. 本地/远程 EJB 端点:基于 RMI-IIOP,Java 二进制私有协议,仅限Java客户端;
  2. Web Service 端点(EJB 发布为SOAP服务):把无状态会话Bean通过JAX-RPC/JAX-WS包装成Web Service对外暴露。

二、JAX-RPC 服务端点两种实现形式

形式1:Java Bean Endpoint(POJO 端点)

普通Java类,加JAX-RPC注解/部署描述符,无需EJB容器,Web容器(Tomcat)即可部署。 特点:轻量,只做Web服务,无事务、分布式事务、并发池等企业级能力。

形式2:EJB 服务端点(Stateless Session Bean + JAX-RPC)

无状态会话Bean作为JAX-RPC服务实现类,EJB容器托管端点。

客户端SOAP请求 → Web容器 → JAX-RPC运行时 → EJB容器 → 无状态Bean业务逻辑

优势:复用EJB原生能力:声明式事务、安全、连接池、分布式事务、持久化。

三、EJB 原生RMI端点 vs JAX-RPC Web Service端点

对比维度EJB RMI-IIOP 服务端点JAX-RPC(基于EJB)Web Service端点
通信协议RMI-IIOP 二进制协议SOAP 1.1 + HTTP + XML
跨语言仅Java客户端可用C#/PHP/Java 任意语言跨平台调用
部署容器纯EJB容器Web容器+EJB容器协同
数据格式Java序列化对象XML文本
标准规范EJB 2.x/3.x 规范JAX-RPC 1.0/1.1
安全模型EJB容器JAAS本地安全SOAP Header 安全、HTTP基础认证
适用场景内部Java微服务/企业内部调用对外异构系统集成、SOA对外接口

四、JAX-RPC 与 EJB 端点核心关联关系

  1. EJB 是业务载体,JAX-RPC 是对外Web服务包装层 无状态SessionBean本身不能直接被HTTP/SOAP调用,必须依靠JAX-RPC提供Web服务端点;
  2. 只有无状态会话Bean(Stateless) 能作为JAX-RPC端点,有状态Stateful、实体Bean不支持;
  3. 调用链路: 外部异构客户端(HTTP SOAP) → JAX-RPC端点 → 委托底层EJB执行业务; 内部Java客户端:直接RMI调用EJB远程端点,不走JAX-RPC。

五、关键区别:JAX-RPC API 本身 ≠ EJB端点

  1. 纯JAX-RPC POJO端点 不依赖EJB,普通Java类,部署在Web容器,无EJB事务、池化能力。
  2. EJB作为JAX-RPC服务端点 是组合方案:EJB提供企业级业务能力,JAX-RPC提供跨语言SOAP访问入口。

六、淘汰演进脉络

  1. J2EE1.4:JAX-RPC + EJB2.x 实现SOAP Web服务端点;
  2. JavaEE5+:废弃JAX-RPC,推出 JAX-WS 2.0(SOAP 1.2),简化注解,兼容EJB3;
  3. 现代微服务:抛弃SOAP,使用JAX-RS(RESTful)作为HTTP接口端点。

七、总结简答

  1. JAX-RPC 是早期Java SOAP Web服务API,用于构建XML RPC服务端点;
  2. 无状态会话EJB可作为JAX-RPC的服务实现端点,结合EJB事务、安全特性;
  3. EJB原生远程端点基于RMI-IIOP,仅Java互通;JAX-RPC端点基于SOAP,支持跨语言;
  4. JAX-RPC已过时,替代方案JAX-WS,REST接口使用JAX-RS。

全部评论: 0

    我有话说: