JBoss 7 RestEasy...服务未注册?

JBoss 7 RestEasy...services not being registered?

我正在将我的应用程序升级到 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!";
}
}

我试过的url是: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 的解决方案并不理想,因此首选其他方式。

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

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

最终解决了这个问题。关键是将其包含在我已有的内容中,其中每个单身人士都是休息服务:

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;
}
}