我正在尝试制作一个小型 jax-rs 演示。
我有这个资源类:
@Path("/cart")
public class ShoppingCartResource {
@EJB
private ShoppingCartService shoppingCartService;
@GET
public String getCart() {
ShoppingCart cart = shoppingCartService.getCart();
return "cart with "+cart.getProducts().size()+" items";
}
}
这个类被打包在一个名为 rest-1.0-SNAPSHOT.war 的 *.war 中,它本身在一个名为 ear-1.0-SNAPSHOT.ear 的 *.ear 中,我放置在 jboss 7.1.3 的 /deployments 目录中
我的 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_3_0.xsd"
version="3.0">
</web-app>
我的application.xml(在耳朵里)是由maven自动生成的:
<?xml version="1.0" encoding="UTF-8"?>
<application 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/application_6.xsd" version="6">
<display-name>ear</display-name>
<module>
<ejb>services-impl-1.0-SNAPSHOT.jar</ejb>
</module>
<module>
<web>
<web-uri>rest-1.0-SNAPSHOT.war</web-uri>
<context-root>/rest</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>
当我启动 jboss 时,它开始了我的战争,从日志中可以看出:
09:52:19,392 INFO [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web context: /rest
09:52:19,401 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "ear-1.0-SNAPSHOT.ear"
但无论我尝试什么网址,我都无法访问此资源。我试过了:
- 本地主机:8080/休息/购物车
- 本地主机:8080/ear-1.0-SNAPSHOT/rest/cart
我不断收到 404。资源绑定在哪里,或者如果它没有真正绑定,我做错了什么?