powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Async Servlets
75 сообщений из 75, показаны все 3 страниц
Async Servlets
    #40027079
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет котаны-бротаны!

1) Кто использовал сабж? Какие выгоды получили?
2) Асинк-сервлет == Async IO ?
3) Какие сервера поддерживают (JBoss, Tomcat, Jetty e.t.c)
4) Технологии Java(jakkarta)EE? Весенний ботинок spring-boot?

С пятницей вас.
...
Рейтинг: 0 / 0
Async Servlets
    #40027139
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тематически связный документ

JSR-000340 JavaTM Servlet 3.1 Final Release for Evaluation
https://download.oracle.com/otndocs/jcp/servlet-3_1-fr-eval-spec/index.html
...
Рейтинг: 0 / 0
Async Servlets
    #40027186
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один сниппет.

Код: java
1.
2.
3.
4.
@WebServlet(value = "/asyncservlet", asyncSupported = true)
public class AsyncLongRunningServlet extends HttpServlet {

}
...
Рейтинг: 0 / 0
Async Servlets
    #40027213
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Понед попробую сделать демку.
Но там же для тестов jMeter еще(
Его я не юзал. Попробуем.
...
Рейтинг: 0 / 0
Async Servlets
    #40027269
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... привычным движением руки приподнял версию jetty с девятки до одинадцатки (там между ними
какие-то нестабильные были и сломал хороший конструктор.

pom.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!--jetty.server.version>11.0.0</jetty.server.version>
        <jetty.servlet.version>11.0.0</jetty.servlet.version-->

        <jetty.server.version>9.4.35.v20201120</jetty.server.version>
        <jetty.servlet.version>9.4.35.v20201120</jetty.servlet.version>

...................

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>${jetty.server.version}</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jmx</artifactId>
            <version>${jetty.server.version}</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>${jetty.servlet.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>${httpcomponents.version}</version>
        </dependency>

...
Рейтинг: 0 / 0
Async Servlets
    #40027272
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
А как мавеном все очистить иивернуть взад) если нет веба на машинке?
Он вместо очистки на clear лезет в веб собака?
...
Рейтинг: 0 / 0
Async Servlets
    #40027275
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Какие выгоды получили?

Глубокий разбор темы от Viacheslav Kolbasin:
YouTube Video
...
Рейтинг: 0 / 0
Async Servlets
    #40027277
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Один сниппет.

Код: java
1.
2.
3.
4.
@WebServlet(value = "/asyncservlet", asyncSupported = true)
public class AsyncLongRunningServlet extends HttpServlet {

}



Сейчас вроде как все сидят на REST под spring фреймворком редко где нужен сервлет. На спринге просто ставишь опцию @Async и вроде как все.

https://www.baeldung.com/spring-async

Последний раз юзал когда надо было грузить большие файлы в блобсторе.
...
Рейтинг: 0 / 0
Async Servlets
    #40027280
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
А как мавеном все очистить иивернуть взад) если нет веба на машинке?
Он вместо очистки на clear лезет в веб собака?

Есть offline mode.
Тяпничная подготовка к работе на дому (ворчалка)

Но если maven полез в веб - то значит ему не хватает какой-то dependency и ее все равно надо скачать.
...
Рейтинг: 0 / 0
Async Servlets
    #40027281
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение апргейде версии jetty.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
package mayton.web;

import org.apache.commons.cli.*;
import org.eclipse.jetty.jmx.MBeanContainer;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.server.handler.*;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.log.Log;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServlet;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.Properties;

import static org.eclipse.jetty.servlet.ServletContextHandler.NO_SECURITY;
import static org.eclipse.jetty.servlet.ServletContextHandler.NO_SESSIONS;

public class MediaShare {

    static Logger logger = LoggerFactory.getLogger(MediaShare.class);

    public void  initJMX(Server server){
        // Setup JMX
        MBeanContainer mbContainer=new MBeanContainer(ManagementFactory.getPlatformMBeanServer());
        server.addEventListener(mbContainer);
        server.addBean(mbContainer);
        server.addBean(Log.getLog());
    }

    @NotNull
    Options createOptions() {
        return new Options()
                .addRequiredOption("h", "host", true, "Ethernet Host Interace to listen, ex: 127.0.0.1, ::::1")
                .addRequiredOption("p", "port", true, "Port number to listen, ex: 8081")
                .addRequiredOption("r", "root", true, "File root, ex: /www/html");
    }


    public void go(Properties properties) throws Exception {
        Server server = new Server();

        initJMX(server);

        server.setRequestLog((request, response) ->
                logger.info("{} {}", request.getRemoteHost(), request.getRequestURI()
        ));

        try(ServerConnector connector = new ServerConnector(server)) {

            int port = Integer.parseInt(properties.getProperty("port"));
            String host = properties.getProperty("host");

            connector.setPort(port);
            connector.setHost(host);
            connector.setName("Connector-1");

            server.setConnectors(new Connector[]{connector});

            ServletContextHandler servletContextHandler = new ServletContextHandler(NO_SESSIONS | NO_SECURITY);

            HttpServlet root = new DirectoryServlet(properties.getProperty("root"));

            servletContextHandler.addServlet(new ServletHolder(root), "/");

            ResourceHandler resourceHandler = new ResourceHandler();
            resourceHandler.setResourceBase("css");
            resourceHandler.setDirectoriesListed(false);

            HandlerCollection handlers = new HandlerCollection();

            handlers.setHandlers(new Handler[]{
                    resourceHandler,
                    servletContextHandler,
                    new DefaultHandler()}
            );

            server.setHandler(handlers);
            server.start();
            server.join();
        }
    }



Код: java
1.
2.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project jetty-media-share: Compilation failure
[ERROR] /home/mayton/git/JettyShare/jetty-media-share/src/main/java/mayton/web/MediaShare.java:[68,46] no suitable constructor found for ServletHolder(javax.servlet.http.HttpServlet)
...
Рейтинг: 0 / 0
Async Servlets
    #40027293
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще презентация по теме https://www.slideshare.net/SimoneBordet/servlet-31-async-io

Здесь возможно есть ответ на мой вопрос.

2) Асинк-сервлет == Async IO ?
...
Рейтинг: 0 / 0
Async Servlets
    #40027320
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да без разницы IO это или нет.
Разрабы сей фичи жалеют потоки контейнера или веб сервера. Их типо всего 200 штук и надо экономнее. Побыстрее освобождать.
Хотя причем тут прогеры?
...
Рейтинг: 0 / 0
Async Servlets
    #40027323
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ... какой-то лютый 3.14дец.

Вот бранч jetty-10.0.x проекта jetty.project. Стоит в конструкторе нормальный сервлет.

Код: java
1.
2.
3.
4.
5.
6.
7.
import javax.servlet.Servlet;
...
    public ServletHolder(Servlet servlet)
    {
        this(Source.EMBEDDED);
        setServlet(servlet);
    }



Вот мастер бранч. Он-же синоним одинадцатки. Какой-то штопаный кондом заменяет нормальный сервлет
на import jakarta.servlet.Servlet;

Код: java
1.
2.
3.
4.
5.
6.
7.
import jakarta.servlet.Servlet;
...
    public ServletHolder(Servlet servlet)
    {
        this(Source.EMBEDDED);
        setServlet(servlet);
    }



Да у меня чуть глаза не лопнули. Я вглядывался почему не компилируется. Туловище конструктора не меняется
но компиллятор не видит нужную перегрузку.

Ладно. Сойдем на десятку. Чорт с ним. Это поинт к тому чтоб не гнаться за модой.
...
Рейтинг: 0 / 0
Async Servlets
    #40027409
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

асинхронные сервлеты счас выглядят как велосипед - всё просто решается через websocket.
...
Рейтинг: 0 / 0
Async Servlets
    #40027438
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую связь ты увидел между WebSockets и темой топика?
...
Рейтинг: 0 / 0
Async Servlets
    #40027440
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Какую связь ты увидел между WebSockets и темой топика?
в большей части по отношению к видео.
но вопрос применения этих асинхронных штук интересен.
а также есть вопрос - не есть ли это нечто похожим на http2 ?
про которое уже есть статьи про фактически нулевой эффект от использования...
...
Рейтинг: 0 / 0
Async Servlets
    #40027446
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты - практик? Познаешь мир через физические эксперименты. Я - тоже такой.
Но хоть иногда надо открывать нормативные доки чтоб синхронизировать своё
миро-восприятие с тем как это видят разработчики фреймворков и технологий
которые ты же используешь.

В документе под названием Java Servlet Spec Version 3.1 нет вообще ни слова про WebSockets.
...
Рейтинг: 0 / 0
Async Servlets
    #40027456
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
но вопрос применения этих асинхронных штук интересен.
давай начнем в твоей теме обсуждать. Там самое место если правда интересно.
...
Рейтинг: 0 / 0
Async Servlets
    #40027463
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В документе под названием Java Servlet Spec Version 3.1 нет вообще ни слова про WebSockets.
и не должно быть. это были просто замечания. чтоб можно было при опытах обратить на это внимание и найти общее и сравнивать по ходу дела.
PetroNotC Sharp
вадя
но вопрос применения этих асинхронных штук интересен.
давай начнем в твоей теме обсуждать. Там самое место если правда интересно.
а это к тому что поддерживаю исследования и жду мнения.
...
Рейтинг: 0 / 0
Async Servlets
    #40027465
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
жду мнения.

Увы. Выше сказали что сервлеты используют единицы.
А в спринге просто ставим @Async.
...
Рейтинг: 0 / 0
Async Servlets
    #40027470
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А в спринге просто ставим @Async.
с модными течениями трудно спорить
...
Рейтинг: 0 / 0
Async Servlets
    #40027494
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного переделал с WebAppContext, но что-то не стартует.
(Не хочу использовать все эти уродские web.xml). Думаю что базовогООП и композиции
достаточно чтоб сделать все конфигурационные шаги.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
    public static void main(String[] args) throws Exception {

        Server server = new Server();

        server.setRequestLog((request, response) -> logger.info("{} {}", request.getRemoteHost(), request.getRequestURI()));

        try(ServerConnector connector = new ServerConnector(server)) {

            connector.setPort(8082);
            connector.setHost("192.168.1.200");
            connector.setName("Connector-1");

            //server.addEventListener(new AppContextListener());
            //server.addEventListener(new AppAsyncListener());

            server.setConnectors(new Connector[]{connector});

            //ServletContextHandler servletContextHandler = new ServletContextHandler(NO_SESSIONS | NO_SECURITY);

            Servlet longRunningServlet = new LongRunningServlet();

            //servletContextHandler.addServlet(new ServletHolder(longRunningServlet),      "/run");

            Servlet asyncLongRunningServlet = new AsyncLongRunningServlet();

            //servletContextHandler.addServlet(new ServletHolder(asyncLongRunningServlet), "/asyncrun");

            ResourceHandler resourceHandler = new ResourceHandler();
                resourceHandler.setResourceBase("css");
                resourceHandler.setDirectoriesListed(false);

            HandlerCollection handlers = new HandlerCollection();

            WebAppContext webAppContext = new WebAppContext();
                webAppContext.addEventListener(new AppContextListener());
                webAppContext.addEventListener(new AppAsyncListener());

                webAppContext.addServlet(new ServletHolder(longRunningServlet),      "/run");
                webAppContext.addServlet(new ServletHolder(asyncLongRunningServlet), "/asyncrun");


            handlers.addHandler(webAppContext);
            handlers.addHandler(resourceHandler);
            handlers.addHandler(new DefaultHandler());
            
            /*handlers.setHandlers(new Handler[]{
                    resourceHandler,
                    servletContextHandler,
                    new DefaultHandler()}
            );*/

            server.setHandler(handlers);
            server.start();
            server.join();
        }
    }




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
....
19:07:06,755 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[ROOT]
19:07:06,755 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
19:07:06,756 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3c72f59f - Registering current configuration as safe fallback point

[INFO ] :: Server : jetty-10.0.0; built: 2020-12-02T21:06:43.949Z; git: b9645a17373e4e9b7f30b6c0a07defcea2cb660b; jvm 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
[WARN ] :: WebAppContext : Failed startup of context o.e.j.w.WebAppContext@1807e3f6{/,null,STOPPED}
java.lang.IllegalStateException: No resourceBase or war set for context
	at org.eclipse.jetty.webapp.WebInfConfiguration.unpack(WebInfConfiguration.java:298)
	at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure(WebInfConfiguration.java:61)
	at org.eclipse.jetty.webapp.Configurations.preConfigure(Configurations.java:495)
	at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:514)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:536)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:98)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:174)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:124)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:94)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:98)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:174)
	at org.eclipse.jetty.server.Server.start(Server.java:474)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:94)
	at org.eclipse.jetty.server.Server.doStart(Server.java:419)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:98)
	at mayton.servlets.JettyMain.main(JettyMain.java:80)
[INFO ] :: AbstractConnector : Started Connector-1@128d2484{HTTP/1.1, (http/1.1)}{192.168.1.200:8082}
[INFO ] :: Server : Started Server@4d5b6aac{STARTING}[10.0.0,sto=0] @612ms
...
Рейтинг: 0 / 0
Async Servlets
    #40027496
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не хочу использовать все эти уродские web.xml
нууу, вы хотите писат в java как сишники. Не получится.
...
Рейтинг: 0 / 0
Async Servlets
    #40027499
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с вашего позволения попробую. Предыдущий вариант работал хотя сервлеты были ущербны без конфигов.
...
Рейтинг: 0 / 0
Async Servlets
    #40027503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил. Вроде работает.

Код: java
1.
webAppContext.setResourceBase("/");



И правильно отрабатывает таймауты. Полезная фича кстати.

5 секунд.

Код: java
1.
mayton@ryzen-ssd:/storage/git.java$ wget http://192.168.1.200:8082/asyncrun?time=5 -o/dev/null



Лог.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
19:32:07,602 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3c72f59f - Registering current configuration as safe fallback point

[INFO ] :: Server : jetty-10.0.0; built: 2020-12-02T21:06:43.949Z; git: b9645a17373e4e9b7f30b6c0a07defcea2cb660b; jvm 11.0.9.1+1-Ubuntu-0ubuntu1.20.04
[INFO ] :: StandardDescriptorProcessor : NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
[INFO ] :: DefaultSessionIdManager : Session workerName=node0
[INFO ] :: AppContextListener : :: call contextInitialized()
[INFO ] :: AsyncLongRunningServlet : :: init
[INFO ] :: ContextHandler : Started o.e.j.w.WebAppContext@3fa247d1{/,file:///,AVAILABLE}
[INFO ] :: AbstractConnector : Started Connector-1@128d2484{HTTP/1.1, (http/1.1)}{192.168.1.200:8082}
[INFO ] :: Server : Started Server@4d5b6aac{STARTING}[10.0.0,sto=0] @635ms
[INFO ] :: AsyncLongRunningServlet : AsyncLongRunningServlet Start::Name=qtp524241174-22 ::ID=22
[INFO ] :: AsyncLongRunningServlet : LongRunningServlet Start::Name=qtp524241174-22 ::ID=22 ::Time Taken=4 ms
[INFO ] :: AsyncRequestProcessor : Async Supported? true
[INFO ] :: AppAsyncListener : :: on Complete
[INFO ] :: JettyMain : 192.168.1.200 /asyncrun



С таймаутом в 20 секунд.

Код: java
1.
mayton@ryzen-ssd:/storage/git.java$ wget http://192.168.1.200:8082/asyncrun?time=20 -o/dev/null



Лог

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[INFO ] :: AsyncLongRunningServlet : AsyncLongRunningServlet Start::Name=qtp524241174-22 ::ID=22
[INFO ] :: AsyncLongRunningServlet : LongRunningServlet Start::Name=qtp524241174-22 ::ID=22 ::Time Taken=0 ms
[INFO ] :: AsyncRequestProcessor : Async Supported? true
[INFO ] :: AppAsyncListener : :: on timeout
[INFO ] :: AppAsyncListener : :: on Complete
[INFO ] :: JettyMain : 192.168.1.200 /asyncrun
Exception in thread "pool-1-thread-2" java.lang.IllegalStateException: AsyncContext completed and/or Request lifecycle recycled
	at org.eclipse.jetty.server.AsyncContextState.state(AsyncContextState.java:52)
	at org.eclipse.jetty.server.AsyncContextState.getResponse(AsyncContextState.java:118)
	at mayton.servlets.AsyncRequestProcessor.run(AsyncRequestProcessor.java:27)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)


Мой пример является просто копи-пастой отсюда https://www.journaldev.com/2008/async-servlet-example
. Я только адаптировал под Jetty и добавил человеческое логгирование.
...
Рейтинг: 0 / 0
Async Servlets
    #40027596
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И правильно отрабатывает таймауты. Полезная фича кстати.
я так прнял, что 8 и 20 это параметр задержки sleep.
А вот кто и почему вызвал таймаут при sleep 20сек я не понял
...
Рейтинг: 0 / 0
Async Servlets
    #40027600
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мой пример является просто копи-пастой отсюда
с вади тебе 100грамм.
Ты делаешь его работу. Он скилы повышать не хочет. Постарел.
...
Рейтинг: 0 / 0
Async Servlets
    #40027601
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос по спринг буту стартеру в консоли.
- как сделать чтобы сообщения от бд русскими не были крякозяблами?
- как увеличить скроллинг консоли в винде? На одной машинке вверх листает много. На другой мало. Где настройка?
...
Рейтинг: 0 / 0
Async Servlets
    #40027605
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
с вади тебе 100грамм.
Ты делаешь его работу. Он скилы повышать не хочет. Постарел.
мне моё решение подходит больше
...
Рейтинг: 0 / 0
Async Servlets
    #40027609
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
мне

вадя
моё

Иди к себе с миром. Тут обсуждение более широкое про асинхронность, и для всех!
...
Рейтинг: 0 / 0
Async Servlets
    #40027628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
Мой пример является просто копи-пастой отсюда
с вади тебе 100грамм.
Ты делаешь его работу. Он скилы повышать не хочет. Постарел.

Я делаю свою собсвтенную работу. В частности это перекликается с топиком https://www.sql.ru/forum/1331028/sredovyy-rsync-cherez-http
...
Рейтинг: 0 / 0
Async Servlets
    #40027638
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Вот это вроде настройка должна работать
AsyncContext asyncCtx = request.startAsync();
asyncCtx.addListener(new AppAsyncListener());
asyncCtx.setTimeout(12000);
...
Рейтинг: 0 / 0
Async Servlets
    #40027646
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я делаю свою собсвтенную работу. В частности это перекликается с топиком https://www.sql.ru/forum/1331028/sredovyy-rsync-cherez-http
если рассматривать синхронизацию двух баз - то для этих целей есть специальный инструмент- dbForge
позволяет сравнивать и структуры баз и сами данные
и заливать из одной базы в другую разницу
...
Рейтинг: 0 / 0
Async Servlets
    #40027648
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Я делаю свою собсвтенную работу. В частности это перекликается с топиком https://www.sql.ru/forum/1331028/sredovyy-rsync-cherez-http
если рассматривать синхронизацию двух баз - то для этих целей есть специальный инструмент- dbForge
позволяет сравнивать и структуры баз и сами данные
и заливать из одной базы в другую разницу

Хочешь лишить меня мотивации таким дешевым способом?
...
Рейтинг: 0 / 0
Async Servlets
    #40027667
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
))
Вадя, а почему играют в футбол или шахматы))))
...
Рейтинг: 0 / 0
Async Servlets
    #40027679
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хочешь лишить меня мотивации таким дешевым способом?
ну тут вопрос не только в мотивации - а больше в эффективности. а свои мотивации пустить на то чего еще не сделано у других
...
Рейтинг: 0 / 0
Async Servlets
    #40027686
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Что ЭФФЕКТИВНЕЕ, вкладывать в знания или в недвижимость?
...
Рейтинг: 0 / 0
Async Servlets
    #40027697
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Хочешь лишить меня мотивации таким дешевым способом?
ну тут вопрос не только в мотивации - а больше в эффективности. а свои мотивации пустить на то чего еще не сделано у других

Я отвечу на твой вопрос чуть позже в топике http-rsync.
...
Рейтинг: 0 / 0
Async Servlets
    #40027698
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Что ЭФФЕКТИВНЕЕ, вкладывать в знания или в недвижимость?
ЭФФЕКТИВНЕЕ вкладывать в то что принесёт большую выгоду.
а будет это недвижимость или знания - в каждом конкретном случае - надо оценивать по конкретному месту.

я предложил вариант, могу ещё сказать что
mayton
В частности это перекликается с топиком https://www.sql.ru/forum/1331028/sredovyy-rsync-cherez-http
было б более эффективно решить с ws.
но это предложения - ТС может их рассматривать, может пропустить мимо.
меня вот это 22246687 направило в хорошем направлении. причём это была не "рыба"....
а опыты тутошние - взяты на заметку...
...
Рейтинг: 0 / 0
Async Servlets
    #40027702
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
ЭФФЕКТИВНЕЕ вкладывать в то что принесёт большую выгоду.
а будет это недвижимость или знания - в каждом конкретном случае - надо оценивать по конкретному месту.

Значит ты согласился что эффектичнее/выгоднее надо решать по месту.
Не по твоему, вадя заднему месту, а по месту васи или пети.
...
Рейтинг: 0 / 0
Async Servlets
    #40027703
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
ws

ШО ОПЯТЬ?
...
Рейтинг: 0 / 0
Async Servlets
    #40027708
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka
Сейчас вроде как все сидят на REST под spring фреймворком редко где нужен сервлет

Говорят спринг бут с 2.0 web разъехался на servlet и reactive.
Вплоть до import
org.springframework.boot.autoconfigure.web разъехались по пакетам org.springframework.boot.autoconfigure.web — .servlet и .reactive;
))))
Смогут ли силком затянуть в реактивное Всех - большой вопрос.
...
Рейтинг: 0 / 0
Async Servlets
    #40027712
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрю на форум. Такое ощущение что нас 3 человека осталось.
...
Рейтинг: 0 / 0
Async Servlets
    #40027714
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
А пофиг.
Все на самизоляции сидят. А меня работать заставлят)
...
Рейтинг: 0 / 0
Async Servlets
    #40027740
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
вадя
пропущено...
ну тут вопрос не только в мотивации - а больше в эффективности. а свои мотивации пустить на то чего еще не сделано у других

Я отвечу на твой вопрос чуть позже в топике http-rsync.

Типа так 22247839
...
Рейтинг: 0 / 0
Async Servlets
    #40027775
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Какую связь ты увидел между WebSockets и темой топика?
в большей части по отношению к видео.
но вопрос применения этих асинхронных штук интересен.
а также есть вопрос - не есть ли это нечто похожим на http2 ?
про которое уже есть статьи про фактически нулевой эффект от использования...


вебсокет идет перпендикулярно асинк сервелетам

Для долгих задач блокирующих поток асинк сервлеты позволяют освободить эти самые общие потоки. Чаще всего какие либо долгие задачи выполняющиеся. Ну вот Сергунька привел пример с блобами,я пользовал их для генерации xslt отчетов ибо они(apache poi) не стримабл (хотя в последней версии уже стримабл но не понятно наксколько стримы настроящие).
Выделили пул потоков 10 в томкат, запустили генерацию отчетов 10 пользователей и все, сервер ушел в несознанку, даже для сервлета hello world.
По сути просто более тонкое управление потоками, одни для сложных/долгих/блокирующих задач, другие для общих. Можно для них отдельный pool настроить и отбивать запросы если перегрузка идет, при этом обычные запросы будут дальше работать не мешая общей доступности сервера.

http2 идет перпендикулярно первым, если пользоваться curl то эффект действиетльно нулевой но у некоторых сценариев прирост есть (тебе неважно, а у некоторых счета за электирочество/amazon/azure уходит ежемесячно больше чем тебе заработать за жизнь)
...
Рейтинг: 0 / 0
Async Servlets
    #40027779
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По веб-сокетам можем поднять отдельную тему. Только задайте свои вопросы чтоб был какой-то смысл.
И я тоже там кое-чего спрошу.

Вообще меня интересует эмуляция полноценного браузера в Java с поддержкой localStorage, IndexedDb.
...
Рейтинг: 0 / 0
Async Servlets
    #40027784
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
http2 идет перпендикулярно первым, если пользоваться curl то эффект действиетльно нулевой но у некоторых сценариев прирост есть (тебе неважно, а у некоторых счета за электирочество/amazon/azure уходит ежемесячно больше чем тебе заработать за жизнь)
возможно. но не факт, что улучшение из-за http/2.
mayton
Вообще меня интересует эмуляция полноценного браузера в Java с поддержкой localStorage, IndexedDb.
интересна область применения
mayton
По веб-сокетам можем поднять отдельную тему. Только задайте свои вопросы чтоб был какой-то смысл.
И я тоже там кое-чего спрошу.
если только по делу трепаться
...
Рейтинг: 0 / 0
Async Servlets
    #40027785
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
Выделили пул потоков 10 в томкат, запустили генерацию отчетов 10 пользователей и все, сервер ушел в несознанку, даже для сервлета hello world.
зачит странные настройки сервера - 1 проц? работа с диском?
...
Рейтинг: 0 / 0
Async Servlets
    #40027792
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя

mayton
Вообще меня интересует эмуляция полноценного браузера в Java с поддержкой localStorage, IndexedDb.
интересна область применения

Нужно программно пройти автентификацию через систему которая это использует.
Больше рассказать не могу ибо NDA.
...
Рейтинг: 0 / 0
Async Servlets
    #40027798
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
А почему выделили 10 потоков? Там вроде по умолчанию 200 идет? Без всякой асинхронности.
...
Рейтинг: 0 / 0
Async Servlets
    #40027799
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
lleming
Выделили пул потоков 10 в томкат, запустили генерацию отчетов 10 пользователей и все, сервер ушел в несознанку, даже для сервлета hello world.
зачит странные настройки сервера - 1 проц? работа с диском?
вот у тебя в теме для двух клиентов почему то колом вставало?
Причина?
...
Рейтинг: 0 / 0
Async Servlets
    #40027802
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

к меня прекрасно работало только порядок не нравился. колом не вставало.
...
Рейтинг: 0 / 0
Async Servlets
    #40027803
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp,

к меня прекрасно работало только порядок не нравился. колом не вставало.

Смешно
авторпроблема в том , что пока не отрабоает первые клиент - второй не получает сообщение эти 20 сек,
У вади это не "колом"
...
Рейтинг: 0 / 0
Async Servlets
    #40027822
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
У вади это не "колом"
это нормальное , с точки зрения системы, поведение.
то , что оно не удовлетворяет меня - это мои проблемы, которые я решил запуском методов в отдельных потоках.
...
Рейтинг: 0 / 0
Async Servlets
    #40027832
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
У вади это не "колом"
это нормальное , с точки зрения системы, поведение.
то , что оно не удовлетворяет меня - это мои проблемы, которые я решил запуском методов в отдельных потоках.
ты докажи что второй запрос ждет первый это нормальное поведение.
Последнее что ты высказал это удивление на слове контейнер.
...
Рейтинг: 0 / 0
Async Servlets
    #40027865
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
А почему выделили 10 потоков? Там вроде по умолчанию 200 идет? Без всякой асинхронности.


Это для примера. Если там 200 потоков и 2000тыс пользователей?.
Просто пример из жизни сервлет делал http (блокирующий) запрос на сторонний сервер в какой то момент тот сторонний сервер заклинило, стал медленно отвечать. На основном томкате быстро были выбраны все потоки и сервер ушел в несознанку. Все стоят ждут.
...
Рейтинг: 0 / 0
Async Servlets
    #40027867
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
У вади это не "колом"
это нормальное , с точки зрения системы, поведение.
то , что оно не удовлетворяет меня - это мои проблемы, которые я решил запуском методов в отдельных потоках.


Bad сектора на диске это нормальное поведение с точки зрения системы ведь там crc предусморено, и в ram ошибки тоже нормально ведь есть же ecc.
А с точки зрения пользователя это ненормально. Когда получается сервер ту бизи при открытии основной страницы если соседний пользователь/и отчетку запустил/и.
...
Рейтинг: 0 / 0
Async Servlets
    #40027880
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
>2000тыс пользователей?.
Да, это понятно.
Но ведь второй пул от программиста а не от контейнера тоже не безграничен. Тоже 200 запросов?
Ведь тоже встанет.
Не?
...
Рейтинг: 0 / 0
Async Servlets
    #40027887
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
>2000тыс пользователей?.
Да, это понятно.
Но ведь второй пул от программиста а не от контейнера тоже не безграничен. Тоже 200 запросов?
Ведь тоже встанет.
Не?


Я подчеркнул что главное это разделить нагрузку и дать возможность регулировать. Есть разного приоритера запросы, запросы создают разную нагрузку в разы и соотвественно нужно как то этим управлять.
...
Рейтинг: 0 / 0
Async Servlets
    #40027895
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Да. Спс за мысли.
Меня лично очень интересует ругулировки и выбор двух вариантов
- поставить контейнеру 400 maxThreadPool и код не менять
Или
- менять код и ставить костыли для потоков Приложения с maxThreadPool
Один фиг общее число потоков считается одинаковым в сумме)
...
Рейтинг: 0 / 0
Async Servlets
    #40027896
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл КМК в разделении. Tomcat предоставляет коробочный пул для исполнения doGet/doPost
хендлеров. Но для долгоиграющих запросов разраб делает свой пул (например на 20 потоков)
и привязывает их к "специфичному железу" или софту. Там - он хозяин.
...
Рейтинг: 0 / 0
Async Servlets
    #40027900
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
Да. Спс за мысли.
Меня лично очень интересует ругулировки и выбор двух вариантов
- поставить контейнеру 400 maxThreadPool и код не менять
Или
- менять код и ставить костыли для потоков Приложения с maxThreadPool
Один фиг общее число потоков считается одинаковым в сумме)


Я привел пример реальный из жизни. Блокирующий запрос на сторонний сервис,если стороннему серверу плохо то основному тоже становится плохо. Если сторониий сервис перезагружается то потоки на основном виснут на connection timeout . Основной сервер начинает выкидывать отказ в обслуживании.

Основной сервис не копия стороннего просто часть данных определенная функция на стороннеи сервере но проблемы на нем могут полностью парализовать работу основного.

Если сторониий сервис гарантировано стабильный то добавить можно потоков и вроде как все. Если гарантий нет ( т.е. не свое) то могут быть проблемы.

Тоже случай из жизни сторонний сервис был за reserve proxy nginx (а там админ упоротый поставил древнющий nginx без http1.1 и настроил хитро iptables) . То есть после цикла запроса ответ сторонний сервис не разрывал соединение а игнорировал.На основном потоки забивались и ждали connection timeout 3min. То есть основной сервер забивал за 30с все потоки, потом 2m30s шел отказ в обслуживании, после сокеты в apache http clietn connetion pool пересоздавались и сервер работал еще 30с и т.д.
С админом проблема так и не решилась. Пришлось временно выписывать 2000тыс потоков томкату и переписывать приложение немного.
...
Рейтинг: 0 / 0
Async Servlets
    #40027905
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Все замечательно, только J2EE стандарт не дает каждому приложению вида записная книжка создавать пул потоков.
И держать его даже если ни один запрос не пришел.
...
Рейтинг: 0 / 0
Async Servlets
    #40027917
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
Тут согласен.
Пул потоков от сервера, он честный)))).
Если внутри наш вызывает порно сайт условно тормозящий, то он честно выдаст отказ.
А если пул вручную в приложении, то я смогу скрыть отказ на...... "простите нет данных и непонятно почему".
авторЕсли сторониий сервис гарантировано стабильный то добавить можно потоков и вроде как все. Если гарантий нет ( т.е. не свое) то могут быть проблемы.
+1
...
Рейтинг: 0 / 0
Async Servlets
    #40027923
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Все замечательно, только J2EE стандарт не дает каждому приложению вида записная книжка создавать пул потоков.
И держать его даже если ни один запрос не пришел.

С тех пор как пояился Spring со встраиваемым веб-контейнером - мы живем 100% игнорируя J2EE, хотя и поддерживая
некоторые части стандарта. Иногда.

И если кто-то живет всегда по требованиям J2EE - расскажите как вы живете?
...
Рейтинг: 0 / 0
Async Servlets
    #40027928
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я не против обоих платформ.
Вот есть в спринг бут такая ручка
server.tomcat.threads.max
На собесе могут спросить - зачем это?
Вот я и интересуюсь))))
Это ведь спринг.
...
Рейтинг: 0 / 0
Async Servlets
    #40027931
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Я не против обоих платформ.
Вот есть в спринг бут такая ручка
server.tomcat.threads.max
На собесе могут спросить - зачем это?
Вот я и интересуюсь))))
Это ведь спринг.

Это чтобы нажимая кнопку F5 в браузере случайный пользователь не за-DDOS-ил систему.
...
Рейтинг: 0 / 0
Async Servlets
    #40027937
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Нееее. Это штатный нагрузочный параметр. Мин/макс
...
Рейтинг: 0 / 0
Async Servlets
    #40027946
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Я не против обоих платформ.
Вот есть в спринг бут такая ручка
server.tomcat.threads.max
На собесе могут спросить - зачем это?
Вот я и интересуюсь))))
Это ведь спринг.


ага а могут спросить зачем это если у нас undertow или jetty
...
Рейтинг: 0 / 0
Async Servlets
    #40027948
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
А jetty вроди поделка школьников. Не?
...
Рейтинг: 0 / 0
Async Servlets
    #40027976
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
А jetty вроди поделка школьников. Не?


Не пользовался. Но и у томкат были тяжелые времена когда чуть ли не без ментейнеров остался и вебсокеты сначала был thirdparty solutuin пока "сами" не переписали.
...
Рейтинг: 0 / 0
Async Servlets
    #40027980
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lleming,
А jetty вроди поделка школьников. Не?

Делает eclipse foundation. И у меня есть тайное подозрение что
это просто тестовая площадка где IBM обкатывает разные идеи
и потом затаскивает их к себе и продает за денежки... За деньжЫщи.
...
Рейтинг: 0 / 0
Async Servlets
    #40027982
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С другой стороны выбор серверов есть.
В шарпе вообще всего один и тот скороспелка.
...
Рейтинг: 0 / 0
Async Servlets
    #40027985
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У томката тоже есть преимущество. На ниве беслпатных - он наиболее хорошо стандартизирован и близок к спекам.
...
Рейтинг: 0 / 0
75 сообщений из 75, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Async Servlets
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]