我真的很困惑.我已经尝试了一个带有tomcat的Jax-rs并使用了所有的注释,我可以使用一个来调用我的服务url.所以没有Jax-rs,我可以简单地拥有一个servlet并调用我的服务.另外正如我所尝试的那样,jones-rs with jersey(正如我已经研究过它的实现JAX-RS)以及web.xml中的以下内容.
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>OutputUi</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.xxx.carbon.servlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
然后我有一个与JAX-RS相同的注释,在GET上我可以用正确的URL调用我的服务.
我的问题是,为什么球衣使用servlet?JAX-RS不使用servlet?为什么使用JAX-RS,虽然我们可以使用一个只是Servlet.
我已经读过java EE6中的web.xml是可选的.所以没有web.xml,我如何告诉应用服务器使用Jersey作为JAX-RS规范的实现?
我正在尝试按照本教程使用Java-ee实现REST服务器API .我使用Tomcat而不是Glassfish.
我可以开发一个servlet
@WebServlet(name = "hello", urlPatterns = "/")
public class HelloWorld extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("=)");
}
}
Run Code Online (Sandbox Code Playgroud)
并加入http:// localhost:9080 /我可以看到笑脸.但是当我尝试访问api路径时(http:// localhost:9080/api/recommended/all)我也得到了面子.如果我删除servlet类,我会收到404错误.我想我需要其他东西来自动构建api,但我不知道是什么.
有人能告诉我缺少什么吗?我该怎么办?
更新:在Intellij的Java Enterprise View中,我看到:
Web > HelloWorld
RESTful WS > recommend > all
Run Code Online (Sandbox Code Playgroud)
这些是我的api课程:
@ApplicationPath("/api")
public class REST_Config extends Application {
}
Run Code Online (Sandbox Code Playgroud)
而具体方法
@Path("recommend")
public class RecommenderController {
@Path("/all")
@GET
@Produces("application/json")
public JsonArray getAll(){
JsonArrayBuilder builder = Json.createArrayBuilder();
builder.add(Json.createObjectBuilder().add("1", "2.5"));
return …Run Code Online (Sandbox Code Playgroud)