无法开始使用泽西用户指南

时间:2013-12-23 13:19:27

标签: java rest jersey grizzly user-guide

请帮帮我。我试了很长时间才开始休息应用程序示例,但我不能这样做。 使用jersey user guide我会陷入困境。例如:

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类是什么?这个类没有导入。

3 个答案:

答案 0 :(得分:3)

以下是Main类的link。 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);
}

答案 1 :(得分:1)

如果您阅读指南中此代码上方的段落,则说明指南中的示例仅突出显示实际代码的一部分。完整的代码可以在com.example包中找到,作为MyResource类。

  

此框架中生成的最后一段代码   project是一个MyResourceTest单元测试类,位于   但是,与此单元相同的com.example包作为MyResource类   test类被放入maven项目测试源目录中   src / test / java(某些代码注释和JUnit导入已经存在   因简洁而被排除在外:

答案 2 :(得分:0)

您跳过了整个章节 1.1。从Maven原型创建新项目,其中包括执行命令:

  

MVN原型:生成   -DarchetypeArtifactId = jersey-quickstart-grizzly2 \   -DarchetypeGroupId = org.glassfish.jersey.archetypes -DinteractiveMode = false \   -DgroupId = com.example -DartifactId =简单服务 -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目标。