使用 IntelliJ 的 RESTEasy 服务示例
RESTEasy Service example with IntelliJ
我无法让我的 REST 服务工作。谁能帮我找出错误?
我认为我定义的神器有问题,但我不确定。
服务class:
package services;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/message")
public class MessageRestService {
@GET
@Path("/{param}")
public Response printMessage(@PathParam("param") String msg) {
String result = "Restful example : " + msg;
return Response.status(200).entity(result).build();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>LES.Core.WebServices</display-name>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
</web-app>
Maven 依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>LES.Core.WebServices</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.9.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.4.Final</version>
</dependency>
</dependencies>
</project>
文物
模块
项目结构
Tomcat 运行 定义:
当我导航到 http://localhost:6655/LES.Core.WebServices/rest/message/name
时出现 404 错误。
编辑:对于那些想尝试的人,这里是我的项目,只需解压缩即可。
http://www.filedropper.com/lescorewebservices
您的项目设置似乎有很多问题,下面列出了要点列表,显示了为成功部署您的应用程序至少应该做些什么:
- 在 $PROJECT/src/main/ 下创建一个名为 webapp 的新文件夹文件夹并将 $PROJECT/web/WEB-INF 文件夹移动到其中(这是 Maven 识别的默认 webapp 项目结构)。
- 将新的
javax.ws.rs.core.Application
子类添加到 bootstrap 您的服务配置。应用程序路径应与您想要的路径相匹配:
@ApplicationPath( "/rest" )
public class SampleApplication extends Application
{
private static final Set< Object > singletons = new HashSet< Object >();
public SampleApplication()
{
singletons.add( new MessageRestService() );
}
@Override
public Set< Class< ? > > getClasses()
{
HashSet< Class< ? > > set = new HashSet< Class< ? > >();
return set;
}
@Override
public Set< Object > getSingletons()
{
return singletons;
}
}
- 在 webapp 部署描述符 web.xml 下为 HttpDispatcherServlet 添加
SampleApplication
作为 javax.ws.rs.Application 初始化参数:
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>app.SampleApplication</param-value>
</init-param>
</servlet>
- 将
<packaging>war</packaging>
元素添加到项目 pom.xml 文件中,以便将项目识别为 web 应用程序 并且可以在 Tomcat AS 下部署。
- 在Tomcat应用程序运行配置中,转到部署选项卡,单击+ 按钮并选择 Artifact 作为类型,然后将您的模块添加为 webapp。
- 运行 tomcat 配置,您应该会看到如下内容,突出显示您的 REST 应用程序已成功发现:
XXX INFO [RMI TCP Connection(2)-127.0.0.1] org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher. Deploying javax.ws.rs.core.Application: class SampleApplication
我无法让我的 REST 服务工作。谁能帮我找出错误? 我认为我定义的神器有问题,但我不确定。
服务class:
package services;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/message")
public class MessageRestService {
@GET
@Path("/{param}")
public Response printMessage(@PathParam("param") String msg) {
String result = "Restful example : " + msg;
return Response.status(200).entity(result).build();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>LES.Core.WebServices</display-name>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
</web-app>
Maven 依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>LES.Core.WebServices</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.9.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.4.Final</version>
</dependency>
</dependencies>
</project>
文物
模块
项目结构
Tomcat 运行 定义:
当我导航到 http://localhost:6655/LES.Core.WebServices/rest/message/name
时出现 404 错误。
编辑:对于那些想尝试的人,这里是我的项目,只需解压缩即可。 http://www.filedropper.com/lescorewebservices
您的项目设置似乎有很多问题,下面列出了要点列表,显示了为成功部署您的应用程序至少应该做些什么:
- 在 $PROJECT/src/main/ 下创建一个名为 webapp 的新文件夹文件夹并将 $PROJECT/web/WEB-INF 文件夹移动到其中(这是 Maven 识别的默认 webapp 项目结构)。
- 将新的
javax.ws.rs.core.Application
子类添加到 bootstrap 您的服务配置。应用程序路径应与您想要的路径相匹配:
@ApplicationPath( "/rest" )
public class SampleApplication extends Application
{
private static final Set< Object > singletons = new HashSet< Object >();
public SampleApplication()
{
singletons.add( new MessageRestService() );
}
@Override
public Set< Class< ? > > getClasses()
{
HashSet< Class< ? > > set = new HashSet< Class< ? > >();
return set;
}
@Override
public Set< Object > getSingletons()
{
return singletons;
}
}
- 在 webapp 部署描述符 web.xml 下为 HttpDispatcherServlet 添加
SampleApplication
作为 javax.ws.rs.Application 初始化参数:
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>app.SampleApplication</param-value>
</init-param>
</servlet>
- 将
<packaging>war</packaging>
元素添加到项目 pom.xml 文件中,以便将项目识别为 web 应用程序 并且可以在 Tomcat AS 下部署。 - 在Tomcat应用程序运行配置中,转到部署选项卡,单击+ 按钮并选择 Artifact 作为类型,然后将您的模块添加为 webapp。
- 运行 tomcat 配置,您应该会看到如下内容,突出显示您的 REST 应用程序已成功发现:
XXX INFO [RMI TCP Connection(2)-127.0.0.1] org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher. Deploying javax.ws.rs.core.Application: class SampleApplication