使用Apache CXF从数据库表返回记录

时间:2011-12-01 14:34:23

标签: web-services cxf

我使用Apache CXF(apache-cxf-2.5.0)使用自下而上的方法(Java第一种方法)创建Web服务。我想从数据库表中返回一些数据/记录(例如,用户名,电子邮件)。我可以编写一个返回简单响应的Java类。但是我无法找到返回响应的方法,例如从数据库表中提取的数据/记录。怎么做?

1 个答案:

答案 0 :(得分:0)

您没有提到如何访问数据库,但基本的想法是确保您返回的类在其上具有JAXB注释(特别是@XmlRootElement@XmlType),允许CXF将这些类的实例转换为XML文档片段。你用这种方式注释的类可能不应该有很多功能;它们应该存在只是为了保存数据。 (鉴于他们将拥有复杂的生命周期,我发现其他任何事情都令人困惑。)一旦注释到位,只需返回相关对象,所有转换都将自动发生。

我说的是这样一个简单的课程:

@XmlRootElement    //  <---- THIS LINE HERE!
public class UserInfo {
    public String username;
    public String email;
}

您可以根据需要将其与其他注释(例如,针对您的ORM)结合使用。当然,如果你直接用JDBC来讨论数据库以获取信息,你就不用担心了。


一个棘手的问题是,返回的对象的生命周期将超出您正在使用的数据库事务的生命周期;您可能需要分离(即,进行一些复制,尽管ORM层可能提供帮助)从DB中提取的对象以使其工作。在这种情况下,这不会引起太大关注,因为您描述的数据库非常简单(一个表,没有行间关系),但如果您使事情变得更复杂,则可能会成为一个问题。