我正在尝试访问Hello world(目前)应用程序中的资源。 但是,我得到的HTTP状态为404-在Tomcat上部署它并单击URL:localhost:8080 / test / rest时找不到。 这是我的pom.xml依赖关系:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.26-b03</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.26-b03</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.26-b03</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
这是我的web.xml配置:
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>HelloWorld Jersey Service </servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name >jersey.config.server.provider.packages</param-name>
<param-value >com.latin.translator.app</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name >HelloWorld Jersey Service </servlet-name >
<url-pattern >/test/*</url-pattern >
</servlet-mapping>
</web-app>
java代码是:
@Path("/test")
public class Test {
@GET
@Produces(TEXT_PLAIN)
@Path("/rest")
public String test() {
return "Great success";
}
}
您有任何想法我在做什么错吗?
答案 0 :(得分:2)
TRy localhost:8080 / test / test / rest
<servlet-mapping>
<servlet-name >HelloWorld Jersey Service </servlet-name >
<url-pattern >/test/*</url-pattern >
</servlet-mapping>
这说根是测试的,所以jesrsey的url是localhost:8080 / test /
现在
@Path("/test")
public class Test {
现在说下一个URL路径是test,所以url是localhost:8080 / test / test
@Path("/rest")
public String test() {
return "Great success";
}
将/ rest用作下一个网址,因此其localhost:8080 / test / test / rest
答案 1 :(得分:0)
您需要扩展javax.ws.rs.core.Application
类。
@ApplicationPath("/") // the context root of you application
public class JaxRsConfig extends Application {
private final Set<Class<?>> classes;
public JaxRsConfig() {
HashSet<Class<?>> c = new HashSet<>();
c.add(Test.class); //repeat for all JAX-RS classes in your application
classes = Collections.unmodifiableSet(c);
}
@Override
public Set<Class<?>> getClasses() {
return classes;
}
}
使用此方法,您不需要web.xml文件。
答案 2 :(得分:-1)
由于指定了提供程序包,因此您可以尝试使用以下url-localhost:8080 / com.latin.translator.app / test / rest