Java 通过网络推送JAX-B对象
我在描述RESTful Web服务器的文本中有一些接口描述。我还有JAX-B注释对象,我希望从该接口推送和接收这些对象 我不确定对这样一项任务已经实施了多少支持。附近有一些球衣的东西,但这仍然是最新的吗 我是否必须定义一个目标URL、打开一个流、序列化xml对象(可能首先将其转换为字符串),然后将其写入流 或者,是否有一种神奇的方法,只需要一个URL和JAX-B对象,或者如果我想放置、删除、发布或获取它?JAX-RS是您在本例中想要使用的,Jersey是参考实现。JAXB是JAX-RS的默认绑定层。下面是一个支持PUT、DELETE、POST和GET的RESTful服务示例: 以下是完整示例的链接:Java 通过网络推送JAX-B对象,java,xml,rest,jaxb,jersey,Java,Xml,Rest,Jaxb,Jersey,我在描述RESTful Web服务器的文本中有一些接口描述。我还有JAX-B注释对象,我希望从该接口推送和接收这些对象 我不确定对这样一项任务已经实施了多少支持。附近有一些球衣的东西,但这仍然是最新的吗 我是否必须定义一个目标URL、打开一个流、序列化xml对象(可能首先将其转换为字符串),然后将其写入流 或者,是否有一种神奇的方法,只需要一个URL和JAX-B对象,或者如果我想放置、删除、发布或获取它?JAX-RS是您在本例中想要使用的,Jersey是参考实现。JAXB是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();
}
}