当前位置: 首页 > 知识库问答 >
问题:

如何在灰熊上使用球衣2.0

彭礼骞
2023-03-14

我想在灰熊上使用Guice泽西2.0。根据这个如何将guice-servlet与泽西2.0一起使用?讨论目前没有直接用于Jersey2的Guice集成,但可以使用HK2作为桥梁来实现。我还检查了Githubhttps://github.com/piersy/jersey2-guice-example-with-test中的示例项目。这个项目是使用Jetty实现的。

但我的问题是在Grizzly中实现它。在码头上,它是这样使用的

  @Inject
public MyApplication(ServiceLocator serviceLocator) {
    // Set package to look for resources in
    packages("example.jersey");

    System.out.println("Registering injectables...");

    GuiceBridge.getGuiceBridge().initializeGuiceBridge(serviceLocator);

    GuiceIntoHK2Bridge guiceBridge = serviceLocator.getService(GuiceIntoHK2Bridge.class);
    guiceBridge.bridgeGuiceInjector(Main.injector);

}

我在grizzly上的问题是,如何获取这个serviceLocator对象

谢谢你。

共有2个答案

逄皓轩
2023-03-14

添加依赖项

compile group: "org.glassfish.hk2", name: "guice-bridge", version: "2.4.0"

创建特征

public class GuiceFeature implements Feature {

    @Override
    public boolean configure(FeatureContext context) {
        ServiceLocator serviceLocator = ServiceLocatorProvider.getServiceLocator(context);

        GuiceBridge.getGuiceBridge().initializeGuiceBridge(serviceLocator);
        GuiceIntoHK2Bridge guiceBridge = serviceLocator.getService(GuiceIntoHK2Bridge.class);

        Injector injector = Guice.createInjector(new AbstractModule() {
            @Override
            protected void configure() {
                bind(YYY.class).to(ZZZ.class);
            }
        });
        guiceBridge.bridgeGuiceInjector(injector);

        return true;
    }
}

寄存器功能

ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(GuiceFeature.class);
孟海
2023-03-14

我在这里创建了示例https://github . com/olek siys/samples/tree/master/jersey 2-guice-example-with-test

灰熊初始化代码如下所示:

final URI uri = UriBuilder.fromUri("http://127.0.0.1/")
        .port(8080).build();

// Create HttpServer
final HttpServer serverLocal = GrizzlyHttpServerFactory.createHttpServer(uri, false);

// Create Web application context
final WebappContext context = new WebappContext("Guice Webapp sample", "");

context.addListener(example.jersey.Main.class);

// Initialize and register Jersey ServletContainer
final ServletRegistration servletRegistration =
        context.addServlet("ServletContainer", ServletContainer.class);
servletRegistration.addMapping("/*");
servletRegistration.setInitParameter("javax.ws.rs.Application",
        "example.jersey.MyApplication");

// Initialize and register GuiceFilter
final FilterRegistration registration =
        context.addFilter("GuiceFilter", GuiceFilter.class);
registration.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), "/*");

context.deploy(serverLocal);

serverLocal.start();
 类似资料:
  • 我一直在尝试使用Swagger生成REST API文档。 关注了链接,但无法使其生效。得到以下错误 下一步搜索并找到最接近我的问题的链接。再次遵循它,但仍然得到上述错误。我看不到swagger.json被生成。 版本信息 我是否错过了一些使其工作所需的配置?或者我需要更多的图书馆吗? 谢谢

  • 我想在Grizzly 2上运行JAX-RS 2.0/jer,但我现在不知道如何设置它。我发现了以下Maven依赖项: 我需要什么Java代码才能在灰熊上运行泽西岛?

  • 问题内容: 我想使用Jersey来实现一些Java REST服务。默认的POJO转换器JAXB处理JSON对象有点奇怪,因此我想使用Jackson转换POJO的开销很少或更少。我如何告诉J2ME框架使用另一个转换器? 我的web.xml看起来像这样: 问题答案: 只需添加jackson JAR并修改web.xml即可,如下所示: 所需的Jackson Jackson JAR(http://jack

  • 我尝试在SpringBoot(1.5.8)中使用Swagger(2.6)和Jersey(1.5) 我对公共API的调用工作正常 我试着用Jersey跟踪这个Config Swagger ui,但它仍然没有回来。 这是我的球衣配置 这是我的应用类 这是我的endpoint 当我使用Spring Rest控制器尝试类似的配置时,它工作正常,但是对于泽西岛,我看不到我的公共API。它似乎忽略了我的炫耀配

  • 我正在尝试通过jQuery POST将一些json数据发送到我本地机器中的jersey REST服务。 在我的服务器端,我有泽西方法来使用这个POST的JSON。 我正在请求中包装json数据。所以在服务器中,我可以在该包装类中获取请求中发送的所有数据。我的请求包装类是 问题pojo类 每当我从jquery发出如下请求时, 我在控制台中发现这个错误: 我可以通过从jQuery发送问题json并在方

  • 首先,问题是当我从rest servlet调用ejb时,ejb总是null。 我在jersey spring 3.0.5中开发了一个rest web服务。以及用于服务的EJB3.1。 我已经在耳朵里打包了war和jar,所以我的应用程序看起来像(我使用maven作为依赖): 我想知道如何从war文件中的类调用jar文件中的服务。据我记忆,这是通过JNDI,我需要公开ejb apis?我应该怎么做?