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