我想创建一个类的单例实例,这个类不是作为资源或服务在Jersey中涉及的,但希望它的依赖项从Jersey ServiceLocator中注入。
我可以在ResourceConfig构造函数中手动注册该类,然后将ResourceConfig传入Grizzly工厂方法,如下所示:
ResourceConfig resourceConfig = new DeviceServiceApplication();
LOGGER.info("Starting grizzly2...");
return GrizzlyHttpServerFactory.createHttpServer(BASE_URI,
resourceConfig, mServiceLocator);
我可以通过注册ContainerLifeCyclelistener
来获得对ServiceLocator
的引用。
在OnStartup(Container Container)
方法中,调用Container.GetApplicationHandler().GetServiceLocator()
。
此示例将引用存储为resourceConfig
的成员变量,您可以通过访问器在其他地方使用该变量。
class MyResourceConfig extends ResourceConfig
{
// won't be initialized until onStartup()
ServiceLocator serviceLocator;
public MyResourceConfig()
{
register(new ContainerLifecycleListener()
{
public void onStartup(Container container)
{
// access the ServiceLocator here
serviceLocator = container.getApplicationHandler().getServiceLocator();
// ... do what you need with ServiceLocator ...
MyService service = serviceLocator.createAndInitialize(MyService.class);
}
public void onReload(Container container) {/*...*/}
public void onShutdown(Container container) {/*...*/}
});
}
public ServiceLocator getServiceLocator()
{
return serviceLocator;
}
}
然后在其他地方:
MyService service
= myResourceConfig.getServiceLocator().createAndInitialize(MyService.class);
我试图通过POST检索数字数组,发送到服务器的原始数据是: 这包含一个来自javascript控制台的数组桶=[6,6,6,...]: 我使用以下代码发布: 我的服务器代码是: 服务器输出为: 为什么它不获取数组值? 编辑:在创建这个线程之前,我试着使用@FormParam,但仍然不起作用
我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?
我知道,如果我不穿运动衫,这是一件很容易的事,我会用这样的东西: 我也意识到我可以做到这一点,并完成它。 但是,如果我真的想转储通过POST提交的表单的所有内容,该怎么办? 问题是,我使用Jersey作为JAX-RS的实现,并使用上面的代码输出以下内容: 我猜想我的数据包含在这里:不过我不确定jaxrsquestattributes。 我知道我错过了一些东西。这应该不难吧? 更新 正如索蒂里奥斯所
我不想让泽西做任何依赖注射。我认为有从Jersey到Guice的桥梁,但是基于我不能在这里显示的程序需求,我需要自己创建REST控制器实例,并向Guice请求它们。 我的问题:我怎样才能禁用泽西岛的依赖注入? 我当前正在使用注释。也许我可以改用注释,以为Jersey不会在寻找这些注释。但我还是宁愿把泽西岛的依赖注射关了。我怎么能那样做?
我正在迁移一个遗留服务框架,该框架使用java序列化/反射来注册服务,并将它们作为远程endpoint(javabin over http)或本地调用无缝地调用。我已经将远程调用替换为jerseyendpoint。并使用基于hk2 aop的拦截器重新构建了现有框架的部分拦截能力。当远程客户端调用endpoint时,它工作正常。现在,我需要对服务方法的本地调用执行相同的操作,并且能够使用与远程服务方