使用Seam的Web服务

时间:2009-06-07 12:55:18

标签: web-services seam

我是Seam的新手,想要使用Seam开发Webservice。我有一个激进的截止日期我可以找到使用Seam开发Web服务的详细信息。任何好的文档,书籍,网站等。

1 个答案:

答案 0 :(得分:4)

the other question中所述,您可以使用JAX-WS。但是,如果你更愿意使用REST服务(JAX-RS),那么:

  • Seam Docs
  • 中阅读JAX-WS
  • 查看StéphaneÉpardaud的文章 here;或
  • 查看Sun Jersey这是JAX-RS的实现。

编辑:来自Seam团队的Norman Richards刚刚发布了blog article about Seam and JAX-RS。看起来非常棒,可能比泽西岛还要多。

我上周看了泽西岛,并且对你需要的代码很少感到惊讶。这是一个小指南:

  1. 下载Jersey Jars和 JAXB Jars(因此您可以输出XML 和/或JSON)并将它们添加到类路径
  2. 将Jersey servlet添加到您的 web.xml(在下面的示例中,url-patternservice/*
  3. 注释持有你的Bean 使用JAXB注释的数据
  4. 使用。创建一个Service类 泽西注释。
  5. 以下是服务的示例:

    @Path("/users")
    public class UsersService {
      @GET
      @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
      public Users getUsers() {
        return UserQuery.getUsers();
      }
    }
    

    这是Users类:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "users")
    public class Users {
      @XmlElement(name="users")
      private List<User> users = new ArrayList<User>();
    
      public List<User> getUsers() {
        return this.users;
      }
    
      public void setUsers(List<User> users) {
        this.users = users;
      }
    }
    

    这是User类:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "user")
    public class User implements Serializable {
      @XmlElement(name="id")
      private long userId;
    
      @XmlElement(name="firstName")
      private String firstName;
    
      @XmlElement(name="lastName")
      private String lastName;
    
      @XmlElement(name="email")
      private String email;
    
      public User() {}
    
      public User(long userId, String firstName, String lastName, String email) {
        this.userId = userId;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
      }
    
      //And the getter/setters
    }
    

    然后,您可以通过 http://yourhost/service/users 访问该服务 它将生成XML或JSON,具体取决于客户端的HTTP Accepts标头。很酷吧?