申し訳ありませんが、この質問は愚かに聞こえますが、Jerseyを使用してRESTfulサービスの一部を開発した後、自分自身に質問しました-RESTが単なるアーキテクチャであり、SOAPのようなプロトコルではない場合、なぜJAX-RSのような仕様が必要ですか?
私は実際に「サーブレットとHTTPを介したRESTfulサービスとの違い」などの質問を探して、コミュニティの回答をまとめると、次のようになりました。
これらの回答によれば、JAXBを使用するサーブレットを作成し(自動シリアル化を処理するため)、サーブレットコードでGET/POST/PUT/DELETEを効率的に使用すると、ジャージーのようなツールを使用せず、したがって、JAX-RS。
私はこの声明を渡すのがひどく間違っていることを知っています、私を修正してください。
PS:この疑問は、実際にPHPでRESTfulサービスを開発しなければならなかったときに生じました。 RESTful PHP=コードをいくつか試した後、それらは同じ古いPHPスクリプトであり、XML/JSONを処理するためのヘルパーメソッドを備えています。
JAX-RS/Jerseyを使用する理由
短い答え
RESTfulサービスの開発が容易になるためです。
ロングアンサー
JAX-RSは、任意のJavaアプリケーションサーバー:GlassFish、WebLogic、WebSphere、JBossなど)にデプロイできるRESTfulサービスを簡単に作成できる標準です。
JAX-RSはJava EEの一部であり、JAX-RSを他のJava EEテクノロジーとともに使用すると、RESTfulサービスの作成がさらに容易になります。
JAX-RSサービスのサンプル
package org.example;
import Java.util.List;
import javax.ejb.*;
import javax.persistence.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {
@PersistenceContext(unitName="CustomerService",
type=PersistenceContextType.TRANSACTION)
EntityManager entityManager;
@POST
@Consumes(MediaType.APPLICATION_XML)
public void create(Customer customer) {
entityManager.persist(customer);
}
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") long id) {
return entityManager.find(Customer.class, id);
}
@PUT
@Consumes(MediaType.APPLICATION_XML)
public void update(Customer customer) {
entityManager.merge(customer);
}
@DELETE
@Path("{id}")
public void delete(@PathParam("id") long id) {
Customer customer = read(id);
if(null != customer) {
entityManager.remove(customer);
}
}
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("findCustomersByCity/{city}")
public List<Customer> findCustomersByCity(@PathParam("city") String city) {
Query query = entityManager.createNamedQuery("findCustomersByCity");
query.setParameter("city", city);
return query.getResultList();
}
}
詳細情報:
RESTは、本質的にサーブレットを使用するアーキテクチャです。
いいえそうではありません。 RESTはサーブレットを使用して実装できるアーキテクチャスタイルですが、本質的にはサーブレットを使用せず、本質的にJavaとは関係がありません。
JAX-RSは、RESTful Webサービス用のJava APIを定義するJSR仕様です。
Jerseyは、JAX-RSの特定の実装です。
Jerseyを使用するか、JAX-RS仕様に準拠しようとするかについては、あなた次第です。それがあなたの仕事をより簡単にしてくれるなら、素晴らしい!誰もあなたを強制していなければ。