6

お願い助けて。休憩アプリの例を起動しようと長い間試みましたが、これはできません。ジャージのユーザーガイドを使用して、私はそれに行き詰まっています。例は次のとおりです。

package com.example;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;

import org.glassfish.grizzly.http.server.HttpServer;

...

public class MyResourceTest {

    private HttpServer server;
    private WebTarget target;

    @Before
    public void setUp() throws Exception {
        server = Main.startServer();

        Client c = ClientBuilder.newClient();
        target = c.target(Main.BASE_URI);
    }

    @After
    public void tearDown() throws Exception {
        server.stop();
    }

    /**
     * Test to see that the message "Got it!" is sent in the response.
     */
    @Test
    public void testGetIt() {
        String responseMsg = target.path("myresource").request().get(String.class);
        assertEquals("Got it!", responseMsg);
    }
}

しかし、私は理解できません。startServer() メソッドを持つ Main クラスは何ですか? このクラスのインポートはありません。

4

3 に答える 3

4

Main クラスのリンクはこちらです。Main.startServer() は次のようになります。

/**
 * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
 * @return Grizzly HTTP server.
 */
public static HttpServer startServer() {
    // create a resource config that scans for JAX-RS resources and providers
    // in $package package
    final ResourceConfig rc = new ResourceConfig().packages("$package");

    // create and start a new instance of grizzly http server
    // exposing the Jersey application at BASE_URI
    return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}
于 2013-12-23T18:54:22.667 に答える
1

ガイドのこのコードの上の段落を読むと、ガイドの例では実際のコードの一部のみが強調表示されていることが説明されています。完全なコードは、com.example パッケージに MyResource クラスとして含まれています。

このスケルトン プロジェクトで生成された最後のコード片は、MyResource クラスと同じ com.example パッケージにある MyResourceTest ユニット テスト クラスですが、このユニット テスト クラスは Maven プロジェクトのテスト ソース ディレクトリ src に配置されます。 /test/java (簡潔にするために、特定のコード コメントと JUnit インポートは除外されています):

于 2013-12-23T13:26:28.510 に答える
0

1.1章全体をスキップしました。コマンドの実行を含むMaven Archetype からの新規プロジェクトの作成:

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId=simple-service -Dpackage =com.example \ -DarchetypeVersion= 2.27

すでにプロジェクトがある場合は、それを新しい別のディレクトリで実行し、Maven ジェネレーターの魔法が終了するまで待ってから、依存関係を pom.xml にコピーします。

下の2つだけ撮りました。そこにテスト スコープマーカーを追加することを忘れないでください。以前に追加したgrizzly-http-server-jaxws依存関係と組み合わせると、結果の POM エントリは次のようになります。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>2.27</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-grizzly2-http</artifactId>
      <scope>test</scope>
  </dependency>
  <dependency>
      <groupId>org.glassfish.jersey.inject</groupId>
      <artifactId>jersey-hk2</artifactId>
      <scope>test</scope>
  </dependency>
</dependencies>

-Dpackageパラメーターのジェネレーターで使用した値に依存する src/main/java ディレクトリ ツリー内で生成される Main.java クラスをコピーします。

そこにある MyResource クラスも無視します。上記の変数に適切なパッケージ値を入れる場合は、独自の REST リソース API ターゲットを使用してテストする必要があります。

于 2018-09-11T12:20:24.927 に答える