JBoss应用服务器7周宁静的WebServices不自动部署(JBoss AS 7 Restful

2019-09-19 06:13发布

我试图使用内置宁静Web服务与JBoss AS 7.我的web.xml是..

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

</web-app>

我的应用程序类是...

package com.robert;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("/services")

public class HelloWorld extends Application {
private Set<Object> singletons = new HashSet<Object>();

public HelloWorld() {
    singletons.add(new Library());
}

@Override
public Set<Class<?>> getClasses() {
    Set<Class<?>> classes = new HashSet<Class<?>>();
    classes.add(Library.class);
    return classes;    //To change body of overridden methods use File | Settings | File Templates.
}

@Override
public Set<Object> getSingletons() {
    return singletons;
}

}

和我的课是

import javax.ws.rs.*;

@Path("/library")
public class Library {

@GET
@Path("/books")
public String getBooks() {
    return "this is all your books";
}

@GET
@Path("/book/{isbn}")
public String getBook(@PathParam("isbn") String id) {
    // search my database and get a string representation and return it
    return "Its a good book; I read it";
}

@PUT
@Path("/book/{isbn}")
public void addBook(@PathParam("isbn") String id, @QueryParam("name") String name) {
    System.out.println("Adding book "+name);
}

@DELETE
@Path("/book/{id}")
public void removeBook(@PathParam("id") String id ){
    System.out.println("Removing book "+id);

}

}

然而,当我启动JBoss AS7 WebService的从未启动。 我没有看到它的诠释,他的JBoss管理页面,我没有看到它在

http://foobar:8080/MyWar/services/library/books

Answer 1:

好吧,我发现这个问题。 继从RestEasy的方向我已经安装了最新版本RestEasy的进入JBoss的模块。 当我恢复到默认安装它。 需要注意的是web.xml中不能包含到宁静的Servlet作为JBoss的部署汽车的任何引用部署RestEasy的,当它看到一个类的@ApplicationPath注解。 web.xml中应该是空的。



Answer 2:

您需要添加REST servlet映射

web.xml中你需要一个servlet映射添加到REST Servlet中,这样的事情

<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

其中URL模式应该匹配任何被认为是RESTFUL进行处理(或使用/ * - 这会让你休息的servlet处理这个应用程序的所有请求)

我不知道为什么,但我从来没有在JBoss管理控制台上的Web服务科看到我的任何RESTful Web服务,但我看到我的WSDL基于SOAP的Web服务在该列表中。

然而,我看到在管理控制台的管理部署部分雷斯特夫尔项目



Answer 3:

要解决您的应用程序:

  1. 使用<web-app version="3.0" ..
  2. 添加servlet映射为@奥斯汀的答案
  3. 可选,读出部分2.3.2 Servlet JAX-RS-1.1的规范 ,这将帮助您设置的休息web.xml ,虽然它是在你的榜样是多余的。

你也可以使用的HelloWorld-RS快速启动伴随jbossas-7为起点到的JavaEE 6的RESTful web应用。



文章来源: JBoss AS 7 Restful Webservices not auto deploying