2
我正在嘗試設置一個簡單的REST Web應用程序,該應用程序使用Jersey。在文檔中,似乎我應該能夠在不使用web.xml文件的情況下創建我的應用程序。從the site:不帶web.xml的澤西島設置
JAX-RS提供了聲明根資源和提供者類,和根資源和提供單實例部署無關的抽象類的應用。 Web服務可以擴展這個類來聲明根資源和提供者類。
下面顯示了這個代碼的例子:
public class MyApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(HelloWorldResource.class);
return s;
}
}
對我來說,這是說我可以用一個Application
類來實現所有我的servlet設置的。這似乎是讀取我的資源類的註釋並設置正確的URL處理機制的配置。那是對的嗎?我不需要做其他設置?
我問,因爲我創建了以下和沒有工作(我收到了404 localhost:8080/{context}/test
):
的pom.xml:
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
應用類:
@ApplicationPath("/")
public class JerseyTestApp extends Application
{
@Override
public Set<Class<?>> getClasses()
{
final Set<Class<?>> classes = new HashSet<>();
classes.add(JerseyTestController.class);
return classes;
}
}
資源分類:
@Path("/test")
public class JerseyTestController
{
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getTestMsg()
{
return "It works";
}
}