Не могу начать с джерси руководство пользователя
Помоги мне, пожалуйста. Я долго пытался запустить пример приложения 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);
}
}
но я не могу понять, что такое класс Main с методом startServer()? Здесь нет импорта для этого класса.
3 ответа
Вот ссылка на основной класс. 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);
}
Если вы прочитаете параграф над этим кодом в руководстве, это объясняет, что пример в руководстве выделяет только часть реального кода. Полный код находится в пакете com.example как класс MyResource.
Последним фрагментом кода, сгенерированным в этом каркасном проекте, является класс модульного теста MyResourceTest, который находится в том же пакете com.example, что и класс MyResource, однако этот класс модульного теста помещается в исходный каталог тестового проекта проекта maven src. /test/java (некоторые комментарии кода и импорт JUnit были исключены для краткости):
Вы пропустили всю главу 1.1. Создание нового проекта из Maven Archetype, который включает в себя выполнение команды:
mvn архетип: генерировать -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId= простой сервис -Dpackage = com.extype \Dar 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>
и скопируйте класс Main.java, который генерируется в дереве каталогов src/main/java, которое зависит от значений, которые вы использовали в генераторе в параметре -Dpackage.
Игнорируйте класс MyResource, который также существует, если вы поместите правильное значение пакета в указанную выше переменную, ваши собственные цели API ресурса REST должны быть использованы и протестированы.