如何在Maven插件中使用angular 2来debuggingjava,在docker中使用tomee

我有一个项目与2 maven插件。

  1. 插件是在Java中。
  2. 另一个插件是angular2。
  3. 在这2个maven插件是docker工人。

在docker容器中,tomee和mysql运行。 我想通过点击http://localhost:8080/mywebapp来debuggingjava的前端,系统应该在我设置在后端(java文件)的中断点停止。 我正在使用IntelliJ。

有人知道该怎么做吗?

由于您正在运行您的应用程序在docker集装箱远程debugging是唯一的方法。 你可以,

  1. 按照以下步骤连接远程debugging信息。 这意味着你必须暴露额外的端口除了tomcat 8080端口。
  2. 在DockerFile中公开端口并将其映射到主机上。 这可以使用-p标志来完成,或者这样做。
  3. 在intellij-idea中,进行远程debugging 。 这是当你打http://localhost:8080/mywebapp

与Gauraj的build议我已经修改了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,address = 8000,server = y,suspend = $ JPDA_SUSPEND

我的远程debuggingconfiguration: 在这里输入图像说明

然后在我运行“docker-compose build”和“docker-compose up”。 但是,当我debugging它时,IntelliJ显示错误:“无法打开debugging器端口(本地主机:8000):java.io.IOException”握手失败 – 连接经常closures“。

刚才我已经想出了如何在Netbeans中做到这一点!

我想在IntelliJ中的Docker里面远程debuggingTomEE是不可能的,因为IntelliJ尝试访问Docker镜像中的catalina.sh,这是docker不允许的。 但在Netbeans中,服务器与IDE集成,所以不需要访问catalina.sh。

我所做的是有点棘手:首先运行“mvn干净安装docker:停止docker:启动-DskipTests tomee:运行”然后我有在docker启动Tomee服务器。 然后将这个TomEE服务器添加到Netbeans(每次重新运行mvn命令后,我需要再次添加此服务器)。

然后,只需制作中断点并debuggingMaven项目。

之后,port8080被Netbeans占用,所以我无法访问localhost:8080。 但是我可以运行“npm start”在Port4200启动前端,然后通过前端的每一个动作停止在后端的中断点。

据我所知,你已经find了一个远程debugging问题的解决scheme。 如果您仍然对IntelliJ远程debugging感兴趣,请随时使用我的GitHub演示。 只要按照我的博客上的指示,它应该开箱即用。