Я хочу подключить отладчик к моим развернутым WAR-файлам в моем доклеризованном WebLogi c 12 c. Я использую это официальное изображение WebLogic https://hub.docker.com/_/oracle-weblogic-server-12c и запускаю контейнер с помощью команды docker:
docker run -d -p 4002:4002 -p 9002:9002
-v c:/my-path-to-shared-volume:/u01/oracle/properties
-e ADMINISTRATION_PORT_ENABLED=true -e DOMAIN_NAME=docker_domain
-e JAVA_OPTS=\"-agentlib:jdwp=transport=dt_socket,address=4002,server=y,suspend=n\"
--name weblogic store/oracle/weblogic:12.2.1.3-dev-200109
Консоль weblogi c оживает при https://localhost: 9002 / console / но при попытке запустить отладчик моя IDE говорит:
Невозможно открыть порт отладчика (localhost: 4002): java .io.IOException "handshake не удалось - соединение преждевременно закрыто "
Я попытался с Visual Studio Code и IntelliJ, и получил тот же вывод. WAR'ы работают нормально, и они отвечают, когда я использую portman для достижения некоторых конечных точек службы.
UPDATE после предложений Варгана.
Я выполнил команду docker без команды -d (отсоединить) параметр, чтобы я мог читать журнал ответа контейнера в режиме реального времени. Параметр JAVA_OPTS
просто игнорировали. Поэтому я изменил параметр на JAVA_TOOL_OPTIONS
. Похоже, что сценарии запуска weblogi c внутри контейнера пытаются применить параметр Java Options дважды! См. Относительные части вывода контейнера ниже:
Домен домена: / u01 / oracle / user_projects / domains / docker_domain Взял JAVA_TOOL_OPTIONS : "-agentlib: jdwp = transport = dt_socket, address = localhost: 4002, server = y, suspend = n " Прослушивание транспорта dt_socket по адресу: 4002 Инициализация WebLogi c Инструмент сценариев (WLST) ... Добро пожаловать в WebLogi c Оболочка сценариев администрирования сервера
[...]
Запуск WLS со строкой: / usr / java / jdk-8 / bin / java -server -D java .security.egd = file: / dev /./ urandom -cp /u01/oracle/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpath = true -Dweblogi c .Name = AdminServer -D java .security.policy = / u01 / oracle / wlserver / server / lib / weblogi c .policy -D java .system.class.loader = com. oracle .classloader.weblogi c .LaunchClassLoader -javaagent: /u01/oracle/wlserver/server/lib/debugpatch-agent.jar -da -Dwls.home = / u01 / oracle / wlserver / server -Dweblogi c .hom e = / u01 / oracle / wlserver / server weblogi c .Server Подобраны JAVA_TOOL_OPTIONS:"-agentlib: jdwp = transport = dt_socket, address = localhost: 4002, server = y, suspend = n" ОШИБКА: ошибка транспорта 202: сбой привязки: адрес уже используется ОШИБКА: не удалось инициализировать транспортный dt_socket JDWP, ошибка завершения JDWP TRANSPORT_INIT (510) AGENT_ERROR_TRANSPORT_INIT (197): инициализированные транспорты [debugInit. c: 750] Остановка сервера Derby ... Сервер Derby остановлен.