resteasy的使用

来源:互联网 发布:禁忌搜索算法 特赦规则 编辑:程序博客网 时间:2024/05/20 15:57

RESTEasy是JBoss的开源项目之一,是一个RESTful Web Services框架。RESTEasy的开发者Bill Burke同时也是JAX-RS的J2EE标准制定者之一。JAX-RS是一个JCP制订的新标准,用于规范基于HTTP的RESTful Web Services的API。JAXB-XML绑定:将XML映射成成面向对象的数据类。这个过程也有J2EE标准,而RESTEasy是全面支持JAXB的。

我们已经有SOAP了,为什么需要Restful WebServices?用Bill自己的话来说:"如果是为了构建SOA应用,从技术选型的角度来讲,我相信REST比SOAP更具优势。开发人员会意识到使用传统方式有进行SOA架构有多复杂,更不用提使用这些做出来的接口了。这时他们就会发现Restful Web Services的光明之处。"

SOA和WOA所作用的抽象层面也有所不同。前者是一种系统层面的架构模式,致力于实施可被多种应用程序消化的新业务功能;而后者则是一种接口层面的架构模式,专注于各种服务功能以何种方式提供给应用程序。

web.xml

<web-app>   <display-name>Archetype Created Web Application</display-name>   <context-param>      <param-name>javax.ws.rs.core.Application</param-name>      <param-value>com.service.ChannelApplication</param-value>   </context-param>   <context-param>      <param-name>resteasy.servlet.mapping.prefix</param-name>      <param-value>/1.0</param-value>   </context-param>   <listener>      <listener-class>         org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap      </listener-class>   </listener>   <servlet>      <servlet-name>Resteasy</servlet-name>      <servlet-class>         org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher      </servlet-class>   </servlet>   <servlet-mapping>      <servlet-name>Resteasy</servlet-name>      <url-pattern>/1.0/*</url-pattern>   </servlet-mapping></web-app>
Java类
import java.util.HashSet;import java.util.Set;import javax.ws.rs.core.Application;public class ChannelApplication extends Application{   HashSet<Object> singletons = new HashSet<Object>();   public ChannelApplication()   {      singletons.add(new GsmModemChannelService());        }   @Override   public Set<Class<?>> getClasses()   {      HashSet<Class<?>> set = new HashSet<Class<?>>();      return set;   }   @Override   public Set<Object> getSingletons()   {      return singletons;     }}

Service @Path(value="smsmessaging")public class GsmModemChannelService {   @POST@Path("outbound/requests")@Produces("text/html")public String sendMessage(@FormParam("address") String address,@FormParam("message") String message,@FormParam("senderName") String senderName) {return "test";}@GET@Path("inbound/messages")@Produces("application/json")public List<Record> getMessages() {return getRecordList();}@GET@Path("inbound/messages/{sendAddress}/messages.html")@Produces("text/html")public String getMessageBySender(@PathParam("sendAddress") String sendAddress) throws Exception {List<Record> list = new ArrayList<Record>();for (Record r : getRecordList()) {if (r.getFromAddr().equals(sendAddress)) {list.add(r);}}JettisonMappedContext context = new JettisonMappedContext(RecordList.class);StringWriter writer = new StringWriter();Marshaller marshaller = context.createMarshaller();marshaller.marshal(new RecordList(list), writer);return writer.toString();}}

import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;import com.magima.messenger.gsmmodem.job.Record;@XmlRootElement(name="listing")public class RecordList {     private List<Record> records;    public RecordList(){        }    @XmlElement(name="records")public List<Record> getRecords() {return records;}public RecordList(List<Record> records) {this.records = records;}     }