java - 在哪里可以找到我的 WADL? (CXF)

标签 java web-services rest cxf

我开发了一个简单的RESTful服务使用 Apache CXF耦合到网络应用程序中并且工作正常。

我可以通过“http://localhost:8080/SpringRestProjectJava/api/books/1234”访问它,并且我也获得了正确的JSON回应。

我的理解是from this linkWADL将自动生成。

正确吗?如果是的话,我怎样才能看到WADL对于这项服务。

这是我的web.xml

  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/CustomSpringConfig.xml</param-value>
      </init-param>      
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>simplerest</servlet-name>
    <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
    <init-param>
        <param-name>jaxrs.serviceClasses</param-name>
        <param-value>org.gsdev.ws.bookservice.BookResource</param-value>
    </init-param>
    <init-param>
        <param-name>jaxrs.providers</param-name>
        <param-value>org.gsdev.ws.bookservice.provider.XstreamJsonProvider</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>simplerest</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>

这是我的BookResource.java

@Path( "books/{isbn}" )
public class BookResource {

    @GET
    @Produces ( "application/json" )
    public Book getDetails( @PathParam("isbn") String isbn){

        if( isbn.equals( "1234" )){
            Book book = new Book();
            book.setIsbn(isbn);
            book.setTitle("Learning web services by Garry");
            return book;
        }
        return null;
    }
}

最佳答案

经过不断的尝试,终于可以成功了。我认为这是由于 CXFNonSpringJaxrsServlet 造成的。我进行了以下更改,并且能够访问自动生成的 WADL

web.xml 的更改

<servlet>
    <servlet-name>simplerest</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>simplerest</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

WEB-INF中添加了cxf-servlet.xml

<jaxrs:server id="bookService" address="/bookservice">
        <jaxrs:serviceBeans>
           <ref bean="bs"/>
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean='jsonProvider' />
        </jaxrs:providers>
     </jaxrs:server>

     <bean id="bs" class="org.gsdev.ws.bookservice.BookResource"/> 
     <bean id="jsonProvider" class="org.gsdev.ws.bookservice.provider.XstreamJsonProvider"/>

关于java - 在哪里可以找到我的 WADL? (CXF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590231/

相关文章:

java web start 生成一个进程

web-services - Grails Rest简单计算器示例

java - getApplication() 和使用常规 "new"初始化实例是否相等?

java - 关于保存数据的hsql问题

c# - 多个 Web 服务共享相同的类

python - 设计 REST API 架构和实现

ajax - 如何在tomcat上允许跨域请求?

c# - 无法在 C# 中反序列化 JSON 结果。输入字符串格式不正确错误

java - Spring 数据 : How to lock a row in a transaction and make other transactions wait until it is released?

c# - 无绑定(bind)操作信息异常