|
|
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Делаем некое веб-приложение, при создании оно автоматом привязывается к установленному GF. Ок. Теперь нам естественно понадобилось отладить немного. Обходился вариантами: - выводить сообщения в лог (стандартный логгер или где-то в базу) - выводить сообщения на страницу НО иногда надо просто пройтись по брейкпоинтам. Для этого брал нужную часть веб-приложения и делал из нее приложение SE. Но это же ужас какой-то, надоело ) Можно ли как-то дебажить в нетбинзе веб-приложения? Для этого видимо он должен стартовать их не в GlassFishe, а сам? В общем каг? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 12:13 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDS- выводить сообщения в лог (стандартный логгер или где-то в базу) - выводить сообщения на страницу А вы упёртый. Для начала небольшой ликбез. Любое приложение для JVM можно запустить в режиме отладки через параметры командной строки. Ну, то есть это параметр JVM, а не приложения. Любая внятная IDE поддерживает Remote Debug, для которого достаточно указать параметры отладки JVM чтобы приаттачить IDE к запущеной JVM. Продвинутые IDE содержат в себе интеграцию с серверами приложений. И как можно было не запустить GF и NB, даже представить себе не могу. Это же неразрывная парочка. Теперь по делу Мануал у NB на столько большой и подробный, что там точно должно быть. Надо только поискать. Но, вот первая ссылка из гугла содержит пошаговые инструкции https://netbeans.org/bugzilla/show_bug.cgi?id=195166 Мануал GF по запуску в режиме отладки https://docs.oracle.com/cd/E19798-01/821-1752/beafc/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 12:20 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDS, И нет никакой "эмуляции" NB запускает GF с параметрами отладки и коннектится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 12:25 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSДелаем некое веб-приложение, при создании оно автоматом привязывается к установленному GF. Ок. Теперь нам естественно понадобилось отладить немного. Обходился вариантами: - выводить сообщения в лог (стандартный логгер или где-то в базу) - выводить сообщения на страницу НО иногда надо просто пройтись по брейкпоинтам. Для этого брал нужную часть веб-приложения и делал из нее приложение SE. Но это же ужас какой-то, надоело ) Можно ли как-то дебажить в нетбинзе веб-приложения? Для этого видимо он должен стартовать их не в GlassFishe, а сам? В общем каг? ) junit + mock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 13:40 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Atum1junit + mock Блин, хотел же написать про юниттесты и забыл :) Тоже правильно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 13:51 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Blazkowicz , спасибо, помогло :). Действительно оказалось, достаточно остановить GF, а при запуске в режиме отладки NB, сам его запускает в соотв. режиме. При этом даже когда сервер остановлен, если зайти в NB, в Сервис-Серверы, то запустк GF по правой кнопке ни просто, ни в режиме отладки почему-то задизейблены. Если потыкать в консоли GF, пытаясь выставить debug, то при перезапуске признак все равно сброшен почему-то (или ототбражается как-то не всегда нормально). junit + mock, не знаю что это, пока хотелось бы научиться довольствоваться обычным идэешным дебагом ) BlazkowiczИ как можно было не запустить GF и NB, даже представить себе не могу. Это же неразрывная парочка. Запускаются нормально не спорю, не воткнул сразу как именно в отладке запустить. С документацией все не подружусь никак :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 14:18 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
В отладке запускаемся, другая засада - не видит коннекта к бд. Открыл консоль GF - оказалось, что при запуске в отладочном режиме из-под NB, почему-то не подхватились коннекты и датасорсы, которые прописал, когда запускал GF как обычно из консоли. Ок. Запустил GF из-под NB, зашел в адимнку GF, прописал заново такие же коннекты. НО коннект(ping) не проходит: ) Ping Connection Pool failed for test_conn. Class name is wrong or classpath is not set for : oracle.jdbc.pool.OracleDataSource Please check the server.log for more details. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:19 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
В логе вроде по-русски пишет: RAR8054: Exception while creating an unpooled [test] connection for pool [ test_conn ], Class name is wrong or classpath is not set for : oracle.jdbc.pool.OracleDataSource Но куда бежать непонятно ) Где, как надо прописать classpath for oracle.jdbc.pool.OracleDataSource? И вообще странно, что он не подхватывает пул, которые был настроен ранее при запуске GF и консоли. Что-то не так делаю наверно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:31 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Может первое впечатление, но кодить на java - это какой-то адский ад - пол дня лазишь, настраиваешь конфиги, пути прописываешь и это еще с IDE, если руками все связывать вообще повеситься наверно проще ) Короче нашел, что NB, создает свой GF, положил ему туда jdbc, все законнетилось. (AppData\Roaming\NetBeans\8.0.2\config\GF_4.1\domain1\lib) Отсюда понятно и почему не скопировались датасорсы с исходного экземпляра GF. Всем спасибо пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 16:09 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSМожет первое впечатление, но кодить на java - это какой-то адский ад - пол дня лазишь, настраиваешь конфиги, пути прописываешь и это еще с IDE, если руками все связывать вообще повеситься наверно проще ) Так и есть. Программить на Java всё равно что Oracle админить. Только хардкор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 16:47 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
И еще небольшой вопросик. Вот мы в дебаге запускаем сервлет, который через пул потоков стартует еще несколько потоков. Все дебажится, все норм. Теперь нам надо прервать выполнение. Жмем "Завершить процесс отладки" Shift+f5. В IDE приложение будто бы останавливается, но на GF по изменениям в БД видно, что оно по-прежнему фигачит. Т.о., чтобы остановить его, приходится рестартовать GF (при чем путем перезапуска NB, что тоже как-то через ж. похоже)). Можно наверно: 1. попробовать рестартовать GF из консоли (но не факт, что NB его потом подхватит) 2. выставлять где-то флаг, что мол пора закругляться, а в потоках периодически посматривать на него и если что завершать потоки Но хотелось бы завершать все потоки именно по нажатию Shift+f5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:51 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDS, JEE спецификация настоятельно не рекомендует стартовать новые потоки в JEE приложениях. В частности это может привести к утечкам памяти. А так, смотреть надо почему не останавливается. Потоки, возможно, не демоны и фигачат без остановки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 08:47 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJEE спецификация настоятельно не рекомендует стартовать новые потоки в JEE приложениях. В частности это может привести к утечкам памяти. А так, смотреть надо почему не останавливается. Потоки, возможно, не демоны и фигачат без остановки? Да. Немного смотрел похожую тему . 1. Странно это как-то имхо. Есть стандартные классы по многопоточности, но использовать их почему-то именно в сервлетах например нельзя, т.к. могут быть утечки памяти. Ничего не понимаю ) Звучит немного абсурдно по-моему. 2. Но как тогда правильно оформлять? То есть на GF в виде сервлета вешается приложение, которое запускается по @Schedule допустим, раз в неделю и выполняет определенную работу и крайне желательно выполнять ее в неск. потоков. Можно конечно разбить на некс. сервлетов, но вариант не очень устраивает. А так да, точно - они же не демоны ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 11:54 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSНо как тогда правильно оформлять? не писать веб в стиле: "Запихнуть десктоп в сервлет". Т.е. отвязать длительные задачи от HTTP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 12:20 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSДа. Немного смотрел похожую тему . 1. Странно это как-то имхо. Есть стандартные классы по многопоточности, но использовать их почему-то именно в сервлетах например нельзя, т.к. могут быть утечки памяти. Ничего не понимаю ) Звучит немного абсурдно по-моему. JEE sucks JDS2. Но как тогда правильно оформлять? То есть на GF в виде сервлета вешается приложение, которое запускается по @Schedule допустим, раз в неделю и выполняет определенную работу и крайне желательно выполнять ее в неск. потоков. Можно конечно разбить на некс. сервлетов, но вариант не очень устраивает. А так да, точно - они же не демоны ) http://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/package-summary.html Просто для работы с потоками и асинхронными задачами нужно использовать JEE API либо средства контейнера вместо JCU Точно так же JEE не рекомендует работать с файловой системой напрямую, например. Ну и раз твои потоки не демоны, то, конечно же, контейнер ждет их штатного завершения. Нужно вызывать хотя бы executionservice.destroy() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 12:28 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Petro123не писать веб в стиле: "Запихнуть десктоп в сервлет". Т.е. отвязать длительные задачи от HTTP. Отлично. Мне тоже ближе этот подход ) Заранее сори, за наверно совсем тупой вопрос ) Какой тип приложения тогда оптимальнее создать в NB, чтобы можно было повесить его в GF и чтобы оно отрабатывало в фоне по расписанию? ) (при этом похоже, нюансы многопоточности все равно остаются). Можно обойтись и вообще без GF, а написать обычное SE-приложение, и запускать его шедулером операционки по расписанию, но это как-то не очень имхо. ) Blazkowicz, спасибо, попробую попробовать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 13:08 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSМожно обойтись и вообще без GF, а написать обычное SE-приложение, и запускать его шедулером операционки по расписанию, но это как-то не очень имхо. ) Про Оккама слышал? Какие проблемы в этой задаче решает GF? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 13:10 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSнюансы многопоточности все равно остаются). нужно повесить задачи на другого)). У этого друго уже есть всё для потоков. Т.к. задачу ты не озвучил, то эти другие: - СУБД - операционка - контейнер аппСервера - различные шедулеры --- даже класс Таймер в десктопе (выводит событие фонового потока в основной поток ГУИ) Это в общем виде как то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 13:17 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПро Оккама слышал? Какие проблемы в этой задаче решает GF? В моем понимании именно для этой задачи особо никаких, если же в целом, то субьективно сейчас: - все приложения лежат в одном месте, т.е. централизованно управляются (имхо, не критично, можно организовать и другими способами) - имеет свой пул подключений к БД (имхо в текущем режиме тоже не факт, что есть острая необходимость использовать пул, единственный плюс - удобно, если меняются параметры подключения к БД, перенастроил подключение в пуле аппсервера и все) - косвенно выполняет роль шедуллера, ну или контейнера для приложений, которые можно запускать по расписанию В контексте именно этой отдельной задачи (да и для большинства, которые сейчас крутятся на нем) хватило бы и просто шедуллера, т.е. по-мне так GF - вообще лишнее звено ), но дабы было единообразие и все лежало в одном месте, все кладем туда ) Petro123нужно повесить задачи на другого)). - СУБД отпадает, - операционка тоже - контейнер аппСервера (т.е. например TomCat?) - различные шедулеры (тоже подошло бы имхо) В итоге, во вс. случае пока, видимо все равно придется размещать их на гласфише. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:17 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDS- контейнер аппСервера (т.е. например TomCat?) какая разница. Хоть глассфишь JDSно дабы было единообразие и все лежало в одном месте, все кладем туда тебя бы админом))) Вот ты бы покрутился. У него 1500 всяких разных инструментов и все разные. А ты от нечего делать все задачи в один контейнер)). JDSединственный плюс - удобно, если меняются параметры подключения к БД, перенастроил подключение в пуле аппсервера и все) как будто в десктопе или без пула коннект не так правится одним движением. Или ты об JNDI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:55 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDS- все приложения лежат в одном месте, т.е. централизованно управляются (имхо, не критично, можно организовать и другими способами) Более чем не критично. Любой файловый менеджер справится с этим ещe лучше. JDS- имеет свой пул подключений к БД (имхо в текущем режиме тоже не факт, что есть острая необходимость использовать пул, единственный плюс - удобно, если меняются параметры подключения к БД, перенастроил подключение в пуле аппсервера и все) То есть, нужна примитивная админка, но для этого взяли целый JEE контейнер. JDS- косвенно выполняет роль шедуллера, ну или контейнера для приложений, которые можно запускать по расписанию Вот как раз приложения нельзя запускать по расписанию. Можно запускать приложения, которые запускают задачи по расписанию. JDS- операционка тоже Почему? Что в винде, что в линуксе, нормальные скедулеры. Фигач туда чего хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 15:50 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
BlazkowiczБолее чем не критично. Любой файловый менеджер справится с этим ещe лучше. Согласен ) BlazkowiczВот как раз приложения нельзя запускать по расписанию. Можно запускать приложения, которые запускают задачи по расписанию. Возможно, именно это и происходит в итоге, если называть вещи правильно ) BlazkowiczПочему? Что в винде, что в линуксе, нормальные скедулеры. Фигач туда чего хочешь. 1. В итоге это все выливается имхо в :) : Petro123тебя бы админом))) Вот ты бы покрутился. У него 1500 всяких разных инструментов и все разные. А ты от нечего делать все задачи в один контейнер)). 2. Как бы уже юзается аппсервер, ну вот туда ты бы и класть все подобного рода приложения. 3. Скорее всего, есть и приложения, которые отрабатывают/запускаются по тем же http-запросам, а не только по расписанию. И по большому счету, вроде как все работает, вопрос только по поводу использования многопоточности в контексте возможных утечек. Попробую посмотреть еще раз, тынц, который давали выше ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 16:32 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Т.е. вместо ExecutorService в JEE надо юзать ManagedExecutorService ? (A ManagedExecutorService extends the Java™ SE ExecutorService to provide methods for submitting tasks for execution in a Java™ EE environment.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 16:36 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
JDSвопрос только по поводу использования многопоточности в контексте возможных утечек когда переходим на уровень операционки, то поток заменяется разработчиком в процесс. Ну, или процесс-приложение в вирт.машине. Пришли опять к задаче - что ты там параллелишь? В контексте одной бизнес-задачи? А не запускаешь 150 JVM процессов или 150 win32 процессов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 17:04 |
|
||
|
Эмуляция сервера приложений в NetBeans
|
|||
|---|---|---|---|
|
#18+
Petro123Пришли опять к задаче - что ты там параллелишь? В контексте одной бизнес-задачи? А не запускаешь 150 JVM процессов или 150 win32 процессов. Задача одна конечно, делаем как в SE: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 18:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39074642&tid=2124814]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 506ms |

| 0 / 0 |
