簡體   English   中英

如何在Angular 2中調試Maven插件中的Java

[英]How to debug java in maven plug with angular 2, tomee in docker

我有一個帶有2個maven插件的項目。

  1. 插件在Java中。
  2. 另一個插件是angular2。
  3. 在這2個Maven插件上是docker。

在docker容器中,tomee和mysql運行。 我想用前端調試Java,這意味着通過點擊http://localhost:8080/mywebapp ,系統應在我在后端(java文件)中設置的斷點處停止。 我正在使用IntelliJ。

有人知道怎么做嗎?

由於您在Docker容器中運行應用程序,因此唯一的方法是遠程調試。 你可以,

  1. 請按照以下步驟附加遠程調試信息。 這意味着除了tomcat 8080端口外,您還必須公開其他端口。
  2. 公開DockerFile中的端口並將其映射到主機上。 可以使用-p標志或執行此操作
  3. 在intellij-idea中,進行遠程調試 這是當您點擊http://localhost:8080/mywebapp

根據Gauraj的建議,我修改了3個文件:1. docker-compose.yml:

    version: '2.0'

    services: 
      db:
        build: 04.MySQL/

      tomee:
        build: .
        depends_on:
          - db
        command: >
          /bin/bash -c "
            while ! nc -z db 3306;
            do
              echo sleeping;
              sleep 5;
            done;
            echo Connected!;
            catalina.sh run;
          "
        links: 
          - db:db
        ports:
          - "8080:8080"
          - "8000:8000"

      ssl:
         build: 05.ProxySSL/
         links:
          - tomee
         ports:
          - "443:443"
          - "80:80"

2. Dockerfile:

FROM java:8-jdk

MAINTAINER "Software Engineering, RWTH Aachen University"

ENV PATH /usr/local/tomee/bin:$PATH

RUN mkdir -p /usr/local/tomee

WORKDIR /usr/local/tomee

# curl -fsSL 'https://www.apache.org/dist/tomee/KEYS' | awk -F ' = ' '$1 ~ /^ +Key fingerprint$/ { gsub(" ", "", $2); print $2 }' | sort -u
ENV GPG_KEYS \
    BDD0BBEB753192957EFC5F896A62FC8EF17D8FEF \
    223D3A74B068ECA354DC385CE126833F9CF64915 \
    7A2744A8A9AAF063C23EB7868EBE7DBE8D050EEF \
    82D8419BA697F0E7FB85916EE91287822FDB81B1 \
    9056B710F1E332780DE7AF34CBAEBE39A46C4CA1 \
    A57DAF81C1B69921F4BA8723A8DE0A4DB863A7C1 \
    B7574789F5018690043E6DD9C212662E12F3E1DD \
    B8B301E6105DF628076BD92C5483E55897ABD9B9 \
    DBCCD103B8B24F86FFAAB025C8BB472CD297D428 \
    F067B8140F5DD80E1D3B5D92318242FE9A0B1183 \
    FAA603D58B1BA4EDF65896D0ED340E0E6D545F97
RUN set -xe \
    && for key in $GPG_KEYS; do \
        gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
    done

RUN set -x \
    && curl -fSL https://dist.apache.org/repos/dist/release/tomee/tomee-1.7.4/apache-tomee-1.7.4-plus.tar.gz.asc -o tomee.tar.gz.asc \
    && curl -fSL http://apache.rediris.es/tomee/tomee-1.7.4/apache-tomee-1.7.4-plus.tar.gz -o tomee.tar.gz \
    && gpg --batch --verify tomee.tar.gz.asc tomee.tar.gz \
    && tar -zxf tomee.tar.gz \
    && mv apache-tomee-plus-1.7.4/* /usr/local/tomee \
    && rm -Rf apache-tomee-plus-1.7.4 \
    && rm bin/*.bat \
    && rm tomee.tar.gz*

RUN apt update && apt install -y netcat-openbsd

RUN mkdir -p /usr/local/tomee/webapps

COPY 03.dockerconfig/tomcat-users.xml /usr/local/tomee/conf/

COPY 01.Backend/lib/ /usr/local/tomee/lib/

COPY 01.Backend/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar /usr/local/tomee/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar

COPY 01.Backend/target/macoco-be.war /usr/local/tomee/webapps/macoco-be.war
COPY 02.Frontend/MaCoCoLive/target/MaCoCoLive.war /usr/local/tomee/webapps/MaCoCoLive.war
COPY 01.Backend/target/apache-tomee/bin/catalina.sh /usr/local/tomee/bin/catalina.sh

EXPOSE 8080 4200 8000

CMD ["catalina.sh", "jpda run"]
  1. catalina.sh文件:

    JPDA_SUSPEND =“ y”
    JDPA_OPTS -agentlib:jdwp = transport = dt_socket,地址= 8000,服務器= y,掛起= $ JPDA_SUSPEND

我的遠程調試配置: 在此處輸入圖片說明

然后在運行“ docker-compose build”和“ docker-compose up”。 但是,當我調試它時,IntelliJ會顯示錯誤:“無法打開調試器端口(localhost:8000):java.io.IOException“握手失敗-連接已永久關閉。

剛才我已經弄清楚了如何在Netbeans中制作它!

我認為不可能在IntelliJ中的Docker內部進行遠程調試TomEE,因為IntelliJ嘗試訪問Docker不允許的Docker映像中的catalina.sh。 但是在Netbeans中,該服務器與IDE集成在一起,因此不需要訪問catalina.sh。

我的操作有些棘手:首先運行“ mvn clean install docker:stop docker:start -DskipTests tomee:run”,然后啟動Docker內部的Tomee服務器。 然后將此TomEE服務器添加到Netbeans(每次重新運行mvn命令之后,我都需要再次添加此服務器)。

然后只需創建斷點並調試maven項目即可。

之后,端口8080被Netbeans占用,因此我無法訪問localhost:8080。 但是我可以運行“ npm start”以在Port4200中啟動前端,然后通過前端中的每個操作,它將在后端的斷點處停止。

據我了解,您已經找到了解決遠程調試問題的方法。 如果您仍然對通過IntelliJ進行遠程調試感興趣,請隨時使用我的GitHub演示。 只需按照我的博客上的說明進行操作,即可立即使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM