JBoss 7 RestEasy ...服务没有注册?

时间:2016-08-03 22:08:34

标签: java jboss resteasy

我正在将我的应用程序升级到JBoss 7.1.1,现在将使用RestEasy。我在让RestEasy工作时遇到问题。我收到错误HTTP状态404 - 无法找到相对的资源。我相信这意味着它无法找到正确的终点。我怀疑扫描和注册服务存在一些问题。我可能错了。注意:我没有使用Maven

以下是我的web.xml中与RestEasy有关的部分:

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/rest</param-value>
</context-param>

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
    </listener-class>
</listener>


<servlet>
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
</servlet>

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>  

以下是我正在使用的示例资源:

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/hello")
public class HelloResource {

@POST
@Produces("text/plain")
public String helloResource() {
    return "Hello!";
}
}

我尝试过的网址是:http://localhost:8080/[project-name]/rest/hello

我认为这就是我用于通话的全部内容。如果需要其他信息来回答我的问题,请不要犹豫。在此先感谢您的帮助!

P.S。 - 如何在WAR中构建文件?

[更新了web.xml]

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/rest</param-value>
</context-param>

  <context-param>
    <param-name>resteasy.resources</param-name>
    <param-value>com.elderscan.test.RestEasyExample</param-value>
</context-param> 

<servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
     </servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.elderscan.test.MyApplication</param-value>
    </init-param>
</servlet>


<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>  

所以这允许我成功调用RestEasyExample,但是我无法调用另一个其他的休息服务,我显然需要这样做。此外,将我的所有服务添加到xml的这种解决方案并不理想,因此另一种方式将是首选。

2 个答案:

答案 0 :(得分:1)

结束解决这个问题。关键是把它包含在我已经拥有的东西中,每个单身人士都是休息服务:

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

public MyApplication() {
    singletons.add(new RestEasyExample());
    singletons.add(new RestEasyExample2());
}

@Override
public Set<Class<?>> getClasses() {
    // TODO Auto-generated method stub
    return null;
}
@Override
public Set<Object> getSingletons() {
    return singletons;
}
}

答案 1 :(得分:0)

我认为您对自己的怀疑是正确的。尝试将此添加到您的web.xml

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param>