繁体   English   中英

使用apache cxf的RESTful Web服务

[英]RESTful web service with apache cxf

我已经使用apache cxf在Java中开发了SOAP Web服务,现在我已经在RESTful中开发了相同的服务。

我在雄猫上部署Web服务时遇到了一些麻烦。 实际上,我不知道如何配置我的web.xml或任何其他XML文件。

在线上有很多示例,但到目前为止我所尝试的所有方法均无效。

为了构建项目,我使用了Ant构建工具。

有人知道一些好提示吗?

这里我的服务类用来测试教程

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

@Path("/book")
public class BookService {

@GET
@Path("{id}")
@Produces({"application/xml","application/json"})
public Book getBookForId(@PathParam("id") int id) {
    Book book = null
    book = DB.getBookForId();
    if(book == null){
        return Response.status(Response.Status.BAD_REQUEST).build();
    }else{
        return Response.ok(book).build();
    }
}

}

而且我的web.xml大多数时候看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
    <display-name>REST</display-name>


<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

Apache CXF的示例和其他示例“很容易理解”,但是快速的是,我到目前为止所做的工作不起作用。

我的Web服务已部署在我的tomcat上,但是每次出现这样的错误:

 Servlet.service() for servlet [Jersey Web Application] in context with path [/WebServices] threw exception [L''exécution de la servlet a lancé une exception] with root cause
java.lang.AbstractMethodError:     javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

我知道这种错误是愚蠢的,但我没有得到Zzz。

我必须使用jdk 1.6.0.45,所以我不能尝试使用jdk 1.7和更高版本的示例。 事实是大多数例子告诉使用Jersey 2.18 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM