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 类找到。

在这个骨架项目中生成的最后一段代码是一个MyResourceTest 单元测试类,它与MyResource 类位于同一个com.example 包中,但是,这个单元测试类被放置在maven 项目测试源目录src 中/test/java(为简洁起见,排除了某些代码注释和 JUnit 导入):

于 2013-12-23T13:26:28.510 回答
0

你跳过了整个1.1 章。从 Maven Archetype 创建一个新项目,其中包括执行命令:

mvn 原型:生成 -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

我只拍了下面这两个。不要忘记在那里添加测试范围标记。结合之前添加的 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>

并复制在 src/main/java 目录树中生成的 Main.java 类,这取决于您在-Dpackage参数中的生成器中使用的值。

忽略也存在的 MyResource 类,如果您在上面的变量中放入正确的包值,则应该使用和测试您自己的 REST 资源 API 目标。

于 2018-09-11T12:20:24.927 回答