我正在将我的应用程序升级到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的这种解决方案并不理想,因此另一种方式将是首选。
答案 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>