Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java can';不要开始使用jersey用户指南_Java_Rest_Jersey_Grizzly_User Guide - Fatal编程技术网

Java can';不要开始使用jersey用户指南

Java can';不要开始使用jersey用户指南,java,rest,jersey,grizzly,user-guide,Java,Rest,Jersey,Grizzly,User Guide,请帮帮我。我尝试了很长一段时间来启动rest应用程序示例,但我做不到。 使用“我被卡住了”。以下是示例: 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; ... pub

请帮帮我。我尝试了很长一段时间来启动rest应用程序示例,但我做不到。 使用“我被卡住了”。以下是示例:

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()方法的主要类是什么?这里没有此类的导入。

如果您阅读了指南中此代码上面的段落,它解释了指南中的示例仅突出显示了部分真实代码。完整的代码作为MyResource类在com.example包中找到

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

这是主课的答案。 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。从Maven原型创建新项目,其中包括执行命令:

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 generator完成它的魔术,然后将副本依赖项复制到pom.xml中

我只拿了下面那两个。不要忘记在那里添加测试范围标记。结合前面添加的grizzly http服务器jaxws依赖项,我得到的POM条目如下所示:


org.glassfish.jersey
针织面料
2.27
聚甲醛
进口
org.glassfish.jersey.containers
jersey-container-grizzly2-http
测试
org.glassfish.jersey.inject
泽西-hk2
测试
并复制在src/Main/java目录树中生成的Main.java类,该目录树取决于您在-Dpackage参数的生成器中使用的值

忽略同样存在的MyResource类,如果您在上面的变量中添加了适当的包值,那么应该使用并测试您自己的REST资源API目标

<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>