【发布时间】:2015-02-12 06:01:23
【问题描述】:
下面的代码是我在 netbeans 中创建的新项目,但我使用了 MAVEN 作为项目类型。因为我想创建一个像下面这样的文件夹结构
+ com.kixortillan.mavenproject1
---+com.kixortillan.mavenproject1.controllers
---+com.kixortillan.mavenproject1.models
我不知道将扩展应用程序的类放在哪里。我尝试将其放入 com.kixortillan.mavenproject1 和 com.kixortillan.mavenproject1.controllers 中的测试控制器,但它显示错误 404
我拨打的网址是http://localhost:8080/mavenproject1/services/test
ApplicationConfig 类
package com.kixortillan.mavenproject1;
import java.util.Set;
import java.util.HashSet;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("services")
public class ApplicationConfig extends Application
{
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(com.kixortillan.mavenproject1.controllers.TestResource.class);
return s;
}
}
测试控制器
package com.kixortillan.mavenproject1.controllers;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
/**
* REST Web Service
*
* @author NOC
*/
@Path("test")
public class TestResource
{
@Context
private UriInfo context;
/**
* Creates a new instance of TestResource
*/
public TestResource()
{
}
/**
* Retrieves representation of an instance of com.kixortillan.mavenproject1.controllers.TestResource
* @return an instance of java.lang.String
*/
@GET
@Produces("application/xml")
public String getXml()
{
//TODO return proper representation object
throw new UnsupportedOperationException();
}
/**
* PUT method for updating or creating an instance of TestResource
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/xml")
public void putXml(String content)
{
}
}
非常感谢您能给我一个关于 jax.rs 工作原理的详细教程
【问题讨论】:
-
“我不能让它工作”是什么意思?您是否收到错误/异常?单独的类看起来不错。其目的是以编程方式配置 JAX-RS 应用程序。有了这个,你就不需要任何 web.xml
-
您能详细说明错误吗?您使用什么 URL 来访问 Web 服务?此外,继承的类可用于指定要公开为 REST 服务的类。否则,JAX RS 运行时将扫描类路径。
-
我已经编辑了这个问题。很抱歉让您感到困惑。
-
这样做。创建新项目 -> Maven -> Project From Archetype -> 搜索“jersey-quickstart-webapp” -> 选择 grizzly (不是 sun) -> 为项目命名。结果应该是一个可以从像 TomCat 这样的 servlet 容器运行的 webapp
-
您会注意到该应用使用了
web.xml。这是用来代替Application子类的。您可以使用您的Application子类并摆脱web.xml,它应该仍然可以工作。
标签: java web-services rest maven