要在服务器上使用Guice的GAE Java应用程序上的Jersey 2实现REST,您可以遵循以下步骤:
- 添加所需的依赖项到您的项目中。在您的pom.xml文件中添加以下依赖项:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-guice</artifactId>
<version>2.34</version>
</dependency>
- 创建一个Guice模块来配置Jersey和其他依赖项。创建一个类,并实现Guice的
AbstractModule
:
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
public class JerseyGuiceModule extends AbstractModule {
@Override
protected void configure() {
// 绑定您的资源类
bind(YourResourceClass.class);
// 绑定其他依赖项
// bind(YourDependency.class);
}
@Provides
@Singleton
public ServletContainer provideJerseyServletContainer() {
ResourceConfig config = new ResourceConfig();
config.packages("com.your.package"); // 指定您的资源类所在的包
return new ServletContainer(config);
}
}
- 在您的
web.xml
文件中,将Guice的GuiceServletContextListener
和Jersey的ServletContainer
配置为servlet:
<web-app>
<!-- 其他配置 -->
<listener>
<listener-class>com.google.inject.servlet.GuiceServletContextListener</listener-class>
</listener>
<filter>
<filter-name>GuiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GuiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<!-- 其他配置 -->
</web-app>
- 创建您的资源类,使用Jersey的注解来定义REST端点:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class YourResourceClass {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello, World!";
}
}
- 创建您的应用程序的入口点,并在其中设置Guice模块:
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;
public class YourApplication extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyGuiceModule());
}
}
- 部署您的应用程序到GAE,确保您的
web.xml
和appengine-web.xml
配置文件正确配置。
通过以上步骤,您将能够在服务器上使用Guice的GAE Java应用程序上的Jersey 2实现REST。您可以通过访问/api/hello
来测试您的REST端点。