この率直な質問でごめんなさい。しかし、多くの人がこれらの2つの用語を毎日使用していますが、私にはわかりません。私はこれについていくつかの調査を行い、それが別々に何であるかを知っていました。しかし、それがどのように関連しているかを理解していません。最初に、これら2つについて理解したことを共有します。
JAXBは、スキーマとJavaオブジェクト間、およびXMLインスタンスドキュメントとJavaオブジェクトインスタンス間)の変換を可能にするXMLからJavaへのバインディングテクノロジーです。内部的に、JAXBはこのすべての変換を行いますxmlとJavaの間。これはxmlのパーサーであり、xmlのどのコンポーネントがJavaのコンポーネントに対応するかを認識し、壊れます。この回答の変換JAXBからは、xjc(またはcodgenプラグイン)などのツールによって実行されます。マッピングは次のようになります。
xsd:string Java.lang.String
xsd:integer Java.math.BigInteger
JaxRsは異なります。これは、リクエストを処理するための仕様のセットです。 「GET( "/ foo")」とは、URL/fooでget呼び出しを処理することを意味します。それはそれだけを述べています。それはどのように行われますか?はい、それはこの仕様の実装と呼ばれます。 restlet、resteasy、jersey、Apachecxfなどの実装がいくつかあります。これは、数学で実装するロジックと方法に類似しています。アルゴリズムのアイデアはバケット検索です。これは任意の方法で実装できます。 Java用語では、JaxRsはインターフェースであり、これらの4つのrestlet、resteasy、jersey、Apachecxfはインターフェースの実装です。
今、私の理解が正しいかどうか言ってください。次に、それらがどのように関連しているかを教えてください。助けてください 。可能であれば、絵による説明がより役立つでしょう。
あなたの理解は基本的に正しいです。 JAXBとJAX-RSはどちらもJava Community Process(JCP)標準であり、複数の実装があります。
[〜#〜] jaxb [〜#〜]-JavaドメインオブジェクトをXMLとの間で変換するための標準化されたメタデータとランタイムAPIを定義します。
JAX-RS-RESTfulサービスを作成するための標準化されたメタデータとランタイムAPIを定義します。デフォルトでは、application/xml
メディアタイプJAX-RSは、JAXBを使用してオブジェクトをXMLとの間で変換します。
例
次の例では、GET
操作が実行されると、JAX-RS実装はCustomer
を返します。 JAXB implを使用して、Customer
のインスタンスをクライアントが実際に受信するXMLに変換します。
package org.example.service;
import javax.ejb.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import org.example.model.*;
@Stateless
@LocalBean
@Path("/customers")
public class CustomerResource {
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") int id) {
Customer customer = new Customer();
customer.setId(id);
customer.setFirstName("Jane");
customer.setLastName(null);
PhoneNumber pn = new PhoneNumber();
pn.setType("work");
pn.setValue("5551111");
customer.getPhoneNumbers().add(pn);
return customer;
}
}