2

私はRESTとプロトコルバッファatmを調べています。したがって、サンプルアプリケーションを作成する[this][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)at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1300)atcom.sun。 jersey.server.impl.application.WebApplicationImpl.access $ 700(WebApplicationImpl.java:163)at com.sun.jersey.server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:769)atcom.sun.jersey。 server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:765)at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)atcom.sun。

4

1 に答える 1

2

GrizzlyServerFactory.create2つのパラメータを取ります:

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

Map<String, String>2番目のパラメータとして使用するのは間違っています。

を扱う別の質問については、GrizzlyへのJerseyサービスインスタンスの公開を参照してくださいGrizzlyServerFactory

于 2012-09-11T07:10:05.513 に答える