2

我是 Seam 的新手,想使用 Seam 开发 Web 服务。我的截止日期很紧迫,我可以在哪里找到使用 Seam 开发 Web 服务的详细信息。任何好的文档、书籍、网站等。

4

1 回答 1

4

另一个问题中所述,您可以使用 JAX-WS。但是,如果您更愿意使用 REST 服务 (JAX-RS),那么:

  • 在Seam Docs中阅读 JAX-WS
  • 在这里查看 Stéphane Épardaud 的文章 ;或者
  • 看看 Sun Jersey,它是 JAX-RS 的一个实现。

编辑:Seam 团队的 Norman Richards 刚刚发布了一篇关于 Seam 和 JAX-RS的博客文章。看起来很棒,可能比泽西岛更适合你。

上周我看了 Jersey 并惊讶于你需要这么少的代码。这里有一个小指南:

  1. 下载 Jersey Jars 和 JAXB Jars(这样您就可以输出 XML 和/或 JSON)并将它们添加到您的类路径中
  2. 将 Jersey servlet 添加到您的 web.xml(在下面的示例中,带有url-patternof service/*
  3. 使用 JAXB 注释对保存数据的 Bean 进行注释
  4. 使用 Jersey 注释创建一个服务类。

这是一个服务的例子:

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

这是用户类:

@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;
  }
}

这是用户类:

@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 它将根据您的客户端的 HTTP Accepts 标头生成 XML 或 JSON。很酷吧?

于 2009-06-08T22:37:38.240 回答