我正在尝试按照此处的示例创建工厂以注入HttpSession。不幸的是,无论我尝试什么,都无法正常工作。不知道可能是什么问题。
我试过只注入HttpServletRequest和提供程序。这是我使用提供程序的示例。尝试在provide方法中访问提供程序时,该错误是空指针异常。如果我尝试注入HttpServletRequest,那么将无法获取任何对象。我正在使用JerseyTest在GrizzlyTestContainer中运行它。为了绑定HttpServletRequest,我需要添加一些内容吗?我似乎找不到一个例子。
public class HttpSessionFactory implements Factory<HttpSession> {
private final HttpServletRequest request;
@Inject
public HttpSessionFactory(Provider<HttpServletRequest> requestProvider) {
this.request = requestProvider.get();
}
@Override
public HttpSession provide() {
return request.getSession();
}
@Override
public void dispose(HttpSession t) {
}
}
您应该@Override protected DeploymentContext configureDeployment()
在JerseyTest
中返回ServletDeploymentContext
。例如
import javax.inject.Inject;
import javax.inject.Provider;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import org.glassfish.hk2.api.Factory;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.ServletDeploymentContext;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.glassfish.jersey.test.spi.TestContainerException;
import org.glassfish.jersey.test.spi.TestContainerFactory;
import org.junit.Test;
public class ServletTest extends JerseyTest {
@Path("/session")
public static class SessionResource {
@Inject
HttpSession session;
@GET
public Response getSessionId() {
return Response.ok(session.getId()).build();
}
}
public static class HttpSessionFactory implements Factory<HttpSession> {
private final HttpServletRequest request;
@Inject
public HttpSessionFactory(Provider<HttpServletRequest> requestProvider) {
this.request = requestProvider.get();
}
@Override
public HttpSession provide() {
return request.getSession();
}
@Override
public void dispose(HttpSession t) {
}
}
@Override
protected TestContainerFactory getTestContainerFactory() {
return new GrizzlyWebTestContainerFactory();
}
@Override
protected DeploymentContext configureDeployment() {
ResourceConfig config = new ResourceConfig(SessionResource.class);
config.register(new AbstractBinder() {
@Override
protected void configure() {
bindFactory(HttpSessionFactory.class).to(HttpSession.class);
}
});
return ServletDeploymentContext.forServlet(
new ServletContainer(config)).build();
}
@Test
public void test() {
System.out.println(target("session").request().get(String.class));
}
}
我有一系列功能。我想在中一些豆子,然后将它们放在中。我应该使用什么方法? 在这里放一些豆子: 我想在这里获取bean:
问题内容: 我试图将服务注入到正在使用Jersey的Rest类中。 无论我尝试如何或以何种方式插入此类,似乎在运行时都显示为null。查看日志文件表明,在初始化Web应用程序时正在调用setJsonTestService,并且此时它不为null。但是,当稍后通过对此类的PUT请求访问它时,它为null。 我完全困惑。 该类如下所示: 有任何想法吗? 更新: web.xml(泽西) 问题答案: 尝试
我需要在java上开发简单的web服务。我是java技术新手,根据几篇文章,我决定将JAX-RS(Jersey)与嵌入式http服务器(Grizzly2)结合使用,因为它看起来适合构建REST服务,部署似乎很简单。 在我的开发环境中,所有工作都很完美(使用IntllijIdea)。 但当我尝试在测试服务器上部署时,每个请求都返回“500内部错误”(偶数/application.wadl) 简单资源
如spring boot博客所述 我尝试自定义我的对象序列化。 在我的配置中添加了一个新的配置bean之后 当我尝试输出类用户的实例时,json结果不在CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES中 也许我需要在我的Jersey配置中注册一些东西来激活我的自定义obejctMapper配置 谢谢
我遵循了以下步骤:http://springfox.github.io/springfox/docs/current/ 以下是我所做的: > build.gradle: 当我启动服务器并导航到http://localhost:8080/swagger-ui.html时,我可以看到“绿色”UI屏幕,其中只列出了basic-error-controller。我自己的控制器不在那里。 我做错了什么?谢谢
我正在编写一个公开 REST API 的简单微服务。所以我开始使用泽西岛,当然我需要将我的对象注入球衣资源中。基本上,我有2个类来定义一组资源,其中一些需要使用另一个服务。 所以基本上我有: } 该接口的2种实现(MyServiceBean和My备选ServiceBean) 而且,就我对阅读新泽西文件的理解,我定义了一个hk2活页夹: 我将此活页夹注册到ApplicationConfig类 } 并