бегаю следующий простой пример для приложения Джерси на сервере Grizzly:разница между управлением в IntelliJ и работает с JAR-файла
@Path("example")
public class example {
@POST
public Response someMethod(@Context Request r) {
System.out.println("Received request at : " + LocalDateTime.now());
Response response = Response.ok().build();
return response;
}
}
public class GrizzlyServerMain {
public static HttpServer startServer(String BASE_URI) throws IOException {
// Scans for JAX-RS resources and providers in the specified code-package
final ResourceConfig resourceConfig = new PackagesResourceConfig("Application");
// create and start a new instance of grizzly http server exposing the Jersey application at BASE_URI
return GrizzlyServerFactory.createHttpServer(BASE_URI, resourceConfig);
}
public static void main(String[] args) throws IOException {
String BASE_URI = "http://0.0.0.0:8000";
// Base URI the Grizzly HTTP server will listen on
startServer(BASE_URI);
//noinspection ResultOfMethodCallIgnored
System.in.read();
}
}
Когда я запускаю его из IntelliJ, все работает, как ожидалось.
Подключен к целевой VM, адрес: '127.0.0.1:61163', транспорт: 'гнездо' 30 декабря, 2016 4:00:07 PM com.sun.jersey.api.core.PackagesResourceConfig init INFO: Сканирование для корневых ресурсов и классов поставщиков в пакетах: Приложение Dec 30, 2016 4:00:08 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: найдены классы ресурсов root: класс Приложение . Класс приветствия Application.example 30 декабря 2016 г. 4:00:08 PM com.sun.jersey.api.core.ScanningResourceConfig init INFO: Нет найдены классы поставщиков. 30 декабря 2016 г. 16:00:08 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Инициирование заявки на Джерси, версия 'Джерси: 1.19.3 24.10.2006 15:43 " 30 декабря 2016 г. 4:00:08 PM org.glassfish.grizzly.http.server.NetworkListener начало INFO: начато прослушиватель, связанный с [0.0.0.0:8000] 30 декабря 2016 г. 4:00:08 org. glassfish.grizzly.http.server.HttpServer start INFO: [HttpServer] Начато Полученный запрос: 2016-12-30T16: 00: 13.097 Полученный запрос: 2016-12-30T16: 00: 14.319 Полученный запрос по адресу: 2016-12-30T16: 00: 15.583 Отключено от целевой виртуальной машины, адрес: '127.0.0.1:61163', transport: 'so cket»
Но когда я создаю файл JAR со всеми зависимостями, и как только я отправить запрос от клиента, я получаю:
ВНИМАНИЕ: Исключение при выполнении FilterChain java.lang .IllegalStateException at org.glassfish.grizzly.http.server.io.OutputBuffer.reset (OutputBuffer.java:217) at org.glassfish.grizzly.http.server.Response.reset (Response.java:732) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead (HttpServerFilter.java:168) at org.glassfish.grizzly.filter chain.ExecutorResolver $ 9.execute (ExecutorResolver.java:119) в org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter (DefaultFilterChain.java:265) в org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart (DefaultFilterChain.java : 200) на org.glassfish.grizzly.filterchain.DefaultFilterChain.execute (DefaultFilterChain.java:134) на org.glassfish.grizzly.filterchain.DefaultFilterChain.process (DefaultFilterChain.java:112) в org.glassfish.grizzly .ProcessorExecutor.execute (ProcessorExecutor.java:78) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent (TCPNIOTransport.java:815) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java : 112) at org.glassfi sh.grizzly.strategies.WorkerThreadIOStrategy.run0 (WorkerThreadIOStrategy.java:115) в org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100 (WorkerThreadIOStrategy.java:55) в org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable .run (WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:567) at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:547) на java.lang.Thread.run (Unknown Source)
Можете ли вы сказать мне, что я могу делать неправильно?
Ваше приложение отображается зависит от Glassfish сервера. Ваша банка не включает сервер. Я не знаю, как, или даже если вы захотите, сделать это. –
@ChristopherSchneider Я бы не подумал, когда вы выбираете «Build Artifacts» в IntelliJ, он ставит все, что нужно коду в файле JAR. Как вы пришли, чтобы конкретно проверить эту проблему? Кажется, я не вижу подсказки в сообщении об исключении. PS, я думаю, что вижу Grizzly в файле JAR (study_jersey.jar \ org \ glassfish \ grizzly - ZIP-архив, распакованный размер 9992,959 байт) –
'java.lang.IllegalStateException at org.glassfish.grizzly'. Вы сказали, что пытаетесь создать отдельную банку, и я видел звонки в Glassfish, сервер. –