Eclipse Oxygen много бавно стартиране на сървъра при отстраняване на грешки в GAE проекти. Процесът на сървъра виси в състояние на изчакване на спиране

Имам проект Maven Java GAE (Google App Engine) в Eclipse Oxygen Release 4.7.2 и Google Cloud Tools за Eclipse плъгин версия 1.5.0. Пускам своя Eclipse в машина с Windows 10.

Имам прост клас Servlet в моя код:

package it.ale.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "HelloAppEngine", urlPatterns = { "/hello" }, loadOnStartup = 1)
public class HelloAppEngine extends HttpServlet {

    @Override
    public void init() throws ServletException {

        super.init();

        System.out.println("Print something.");

    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");

        response.getWriter().print("Hello App Engine!\r\n");

    }

}

когато поставя точка на прекъсване за отстраняване на грешки на който и да е ред от функцията "public void init()", например на реда:

System.out.println("Print something.");

и стартирам сървъра в режим DEBUG (Debug As -> App Engine), стартирането на сървъра е невероятно БАВНО и достигам до съобщението за грешка:

server app engine Standard на localhost не успя да стартира в рамките на 240 секунди. Ако сървърът изисква повече време, опитайте да увеличите времето за изчакване в редактора на сървъра.


АКТУАЛИЗАЦИЯ 16 януари 2018 г.:

междувременно, докато идва грешката, Eclipse замръзва и след това Java процесът на стартирания сървър остава да виси. Така че не мога да рестартирам сървъра, освен ако не убия процеса на Java сървъра.

Това е екранна снимка, която представя тази точка

Имайте предвид, че в долния десен ъгъл Java процесът на сървъра все още не е спрян

Това е екранна снимка, която показва чакащото състояние на спиране

Така че не мога да рестартирам сървъра, освен ако не убия процеса на Java сървъра.

@BriandeAlwis Има ли някакъв журнал, който мога да предоставя, за да ви помогна по-добре? Може би е проблем с интегрирането на Google Cloud SDK „gcloud“?


АКТУАЛИЗАЦИЯ 16 януари 2018 г.:

Опитвам се да понижа версията в Google Cloud SDK:

  • Google Cloud SDK 172.0.0
  • app-engine-java 1.9.56
  • app-engine-python 1.9.60
  • bq 2.0.26
  • ядро 2017.09.15
  • gsutil 4.27

но проблемът си остава.

Сега се върнах към най-актуалната версия, подчертавайки отново проблема.

  • Google Cloud SDK 184.0.0
  • app-engine-java 1.9.60
  • app-engine-python 1.9.65
  • bq 2.0.28
  • ядро 2018.01.15
  • gsutil 4.28

person Alessandro Guerrini    schedule 12.01.2018    source източник
comment
Хм, нещо не е наред: правя това през цялото време и стартирането е секунда или две. Run еднакво бавно ли е като Debug? Или можете да опитате Debug, но с деактивирани точки на прекъсване (Изпълни › Пропусни всички точки на прекъсване)?   -  person Brian de Alwis    schedule 15.01.2018
comment
Благодаря ви за отговора. Не, бягането е много бързо, около секунда или две. Проблемът възниква само когато тази INIT точка на прекъсване е активна. Ако деактивирам тази точка на прекъсване, DEBUG е бърз като RUN, около секунда или две. Забравих да ви кажа, че подчертах този проблем на машина с Windows 10. Мислех, че проблемът е в моя компютър, но вече подчертах същия проблем на две други машини с Windows 8.   -  person Alessandro Guerrini    schedule 15.01.2018
comment
Забравих ... JVM, който използвам в момента, е Oracle JDK 8 версия 1.8.0_151. Имах същия проблем с предишна версия Oracle JDK 8 версия 1.8.0_74.   -  person Alessandro Guerrini    schedule 15.01.2018
comment
Подозирам, че това е бъг в Eclipse JDT, който срещнах също. Открих, че изтриването на точките на прекъсване в изгледа Променливи и след това повторното създаване на точките на прекъсване обикновено ще свърши работа.   -  person Brian de Alwis    schedule 16.01.2018
comment
Съжалявам, @BriandeAlwis, но не мисля, че това е проблемът. Когато стартирам операцията Debug As, Eclipse замръзва, докато не стигна до грешката „server app engine Standard at localhost не може да стартира в рамките на 240 секунди. Ако сървърът изисква повече време, опитайте да увеличите времето за изчакване в редактора на сървъра.' След това не виждам нищо в изгледа с променливи и освен Java процесът на стартирания сървър остава да виси. Така че не мога да рестартирам сървъра, освен ако не убия процеса на Java сървъра. Скоро се опитвам да актуализирам публикацията.   -  person Alessandro Guerrini    schedule 16.01.2018
comment
Ах, вашата актуализация е полезна: не разбрах, че вашият екземпляр на Eclipse също замръзва. Мога да възпроизведа и това. Това е грешка — нека разгледаме това при проблема с CT4E.   -  person Brian de Alwis    schedule 16.01.2018


Отговори (3)


Това е поправено след Google Cloud Tools за Eclipse 1.6.0.

За тези, които се интересуват от подробностите, вижте https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/2727.

person Chanseok Oh    schedule 31.01.2018

Можете да коригирате този проблем, като изтриете съществуващия си сървър и премахнете всичките си точки на прекъсване и рестартирате отново проекта си в машината за приложения

Прозорец->Покажи изглед->други->Сървъри (търсене на сървъри, ако не съществува) Прозорец->Покажи изглед->други->Точки на прекъсване (търсене на точки на прекъсване, ако не съществува)

след това просто щракнете с десния бутон върху сървърите и ги изтрийте, обновете работното си пространство и стартирайте проекта, той ще работи. Честито кодиране.

person Tharindu Dananjaya    schedule 03.09.2019

Актуализирах плъгина до версия 1.5.1 и най-накрая видях, че проблемът с бавното стартиране, както в DEBUG, така и в RUN, е решен.

Във всеки случай установих, че следният проблем продължава:

Междувременно открих друг бъг ... опитайте да замените кода на функцията INIT с този код:

@Override
public void init() throws ServletException {

    super.init();

    if (true) {
          throw new RuntimeException();
    }

    System.out.println("Print something.");

}

по този начин принуждавам изключение от началото. Опитайте да щракнете върху Изпълни като -> App Engine и опитайте да спирате сървъра. Сървърът остава окачен в състояние „СПИРА“.

Това означава, че ако има изключение в кода за стартиране, сървърът няма да се изключи повече.

person Alessandro Guerrini    schedule 01.02.2018
comment
Другият проблем, който споменахте, е github.com/GoogleCloudPlatform/google-cloud-eclipse/ бройки/1964. Това ще бъде коригирано в следващото издание на CT4E. - person Chanseok Oh; 23.02.2018