Enterprise 中級

SOAPウェブサービスとJakarta RESTの比較

重量級のSOAP/WSDLエンドポイントをJSONを返すクリーンなJakarta RESTリソースに置き換える。

✕ Java EE
@WebService
public class UserWebService {
    @WebMethod
    public UserResponse getUser(
            @WebParam(name = "id") String id) {
        User user = findUser(id);
        UserResponse res = new UserResponse();
        res.setId(user.getId());
        res.setName(user.getName());
        return res;
    }
}
✓ Jakarta EE 8+
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
public class UserResource {
    @Inject
    UserService userService;

    @GET
    @Path("/{id}")
    public User getUser(@PathParam("id") String id) {
        return userService.findById(id);
    }
}
このコードに問題がありますか? お知らせください。
🪶

軽量ペイロード

JSONはSOAP XMLエンベロープよりコンパクトで、帯域幅と解析オーバーヘッドを削減します。

📐

シンプルなアノテーション

@GET・@Path・@ProducesがWSDL・@WebService・@WebMethodの煩雑さを置き換えます。

🔌

マイクロサービス対応

REST/JSONはクラウドネイティブアーキテクチャのサービス間通信の標準です。

旧来のアプローチ
JAX-WS / SOAP
モダンなアプローチ
Jakarta REST / JSON
JDKバージョン
11
難易度
中級
SOAPウェブサービスとJakarta RESTの比較
利用可能

Jakarta EE 8 / Java 11以降、広く利用可能

SOAPベースのウェブサービスはWSDLコントラクト・XMLマーシャリング・JAX-WSアノテーションに依存し、大きなオーバーヘッドが発生します。Jakarta REST(旧JAX-RS)は@GET・@Path・@Producesといった直感的なアノテーションでRESTful JSON APIを公開します。プログラミングモデルが単純で、ペイロードが小さく、現代のマイクロサービス通信のアプローチに合致しています。

共有 𝕏 🦋 in