JAX-RS с учебным приложением Protocol Buffers

Я изучаю буферы REST и протокола atm. Поэтому я нашел [этот] [1] учебник, который создает пример приложения.

К сожалению, у меня возникла проблема с импортом библиотек, которую я не могу решить:

В этой строке:

return GrizzlyServerFactory.create(uri, initParams);

Я получаю синтаксическую ошибку:

The method create(URI, ResourceConfig) in the type
GrizzlyServerFactory is not applicable for the arguments (URI,
Map<String,String>)

GrizzlyServerFactory находится в этой библиотеке, которую я импортировал:

import com.sun.jersey.api.container.grizzly.GrizzlyServerFactory;

Для справки я вставляю сюда весь класс:

package com.sampullara.jaxrsprotobuf.tutorial;

import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.core.UriBuilder;

import com.sun.grizzly.http.SelectorThread;
import com.sun.jersey.api.container.grizzly.GrizzlyServerFactory;
import com.sun.jersey.api.core.ResourceConfig;

public class Main {
    public static final URI BASE_URI = UriBuilder.fromUri("http://localhost/").port(9998).build();

    public static void main(String[] args) throws IOException {
        System.out.println("Starting grizzly...");
        URI uri = BASE_URI;
        SelectorThread threadSelector = createServer(uri);
        System.out.println(String.format("Try out %sperson\nHit enter to stop it...", uri));
        System.in.read();
        threadSelector.stopEndpoint();
    }

    public static SelectorThread createServer(URI uri) throws IOException {
        Map<String, String> initParams = new HashMap<String, String>();
        initParams.put("com.sun.jersey.config.property.packages", "com.sampullara");

        // error happens in next line - constructor doesnt exist with the given parameters
        return GrizzlyServerFactory.create(uri, initParams);
    }
}

РЕДАКТИРОВАТЬ1:

Я изменил код, но все еще не могу заставить его работать:

public static SelectorThread createServer(URI uri) throws IOException {
    //Map<String, String> initParams = new HashMap<String, String>();
    //initParams.put("com.sun.jersey.config.property.packages", "com.sampullara");
    // original code: return GrizzlyServerFactory.create(uri, initParams);

    DefaultResourceConfig rscfg = new DefaultResourceConfig();
    return GrizzlyServerFactory.create( uri , rscfg );
}

Eclipse выдает мне следующую ошибку времени выполнения:

SCHWERWIEGEND: Экземпляр ResourceConfig не содержит корневых классов ресурсов. Исключение в потоке "main" com.sun.jersey.api.container.ContainerException: Экземпляр ResourceConfig не содержит корневых классов ресурсов. на com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:99) на com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1300) на com.sun. jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:163) на com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:769) на com.sun.jersey. server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:765) на com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) на com.sun.jersey.server.impl.application .WebApplicationImpl.initiate(WebApplicationImpl.java:765) в com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java:172) в com.sun.jersey.api.container.ContainerFactory.createContainer(ContainerFactory.java :134) на com.sun.jersey.api.container.grizzly.GrizzlyServerFactory.create(GrizzlyServerFactory.java:151) a t com.sampullara.jaxrsprotobuf.tutorial.Main.createServer(Main.java:34) в com.sampullara.jaxrsprotobuf.tutorial.Main.main(Main.java:21)


person RCK69    schedule 11.09.2012    source источник
comment
Спасибо за напоминание! -> Выполнено!   -  person RCK69    schedule 11.09.2012


Ответы (1)


GrizzlyServerFactory.create принимает два параметра:

  1. java.net.URI
  2. com.sun.jersey.api.core.ResourceConfig

Использование Map<String, String> в качестве второго параметра неверно.

См. раздел Публикация экземпляра службы Jersey в Grizzly, чтобы узнать о другом вопросе, касающемся GrizzlyServerFactory.

person Community    schedule 11.09.2012
comment
Спасибо за ответ. Я уже видел, что используемый конструктор недействителен, но, к сожалению, я понятия не имею, как изменить код, чтобы он заработал (см. первый пост) - person RCK69; 11.09.2012