-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparams.json
More file actions
1 lines (1 loc) · 4.27 KB
/
params.json
File metadata and controls
1 lines (1 loc) · 4.27 KB
1
{"name":"Emaster blog","tagline":"","body":"## Настраиваем JRebel для удаленного приложения\r\nСтолкнулся с проблемой, что [JRebel](http://zeroturnaround.com/software/jrebel/) не работает с remote standalone application, т.е. без сервера приложений. Дальше были курения, как это работает и что можно сделать. Спасибо (@shelajev), собственно он и предложил мне написать об этом.\r\n\r\nДальше будет пример, как я настроил JRebel в связке с [Dropbox](https://www.dropbox.com/) под свое приложение.\r\n\r\n### Настройка проекта\r\nСначала необходимо добавить в ресурсы своего проекта конфиг **rebel.xml** с указанием пути, где необходимо брать новые классы. Мой выглядит вот так:\r\n```\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<application xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.zeroturnaround.com\" xsi:schemaLocation=\"http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd\">\r\n\t<classpath>\r\n\t\t<dir name=\"/home/emaster/Dropbox/jrebel_sync/main\">\r\n\t\t</dir>\r\n\t</classpath>\r\n</application>\r\n```\r\n\r\nДумаю [Dropbox](https://www.dropbox.com/) на вашем компьютере уже установлен или вы можете это сделать без меня :)\r\nДальше нам нужно, чтобы Dropbox следил за файлами, получаемыми после компиляции проекта. Есть два варианта, либо изменить путь для скомпилированных классов в вашем проекте, либо сделать символьную ссылку. Мне второй вариант больше нравится, сейчас это можно в любой системе сделать (вариант для Linux, Mac):\r\n```\r\nmkdir ~/Dropbox/jrebel_sync\r\ncd ~/Dropbox/jrebel_sync\r\nln -s /home/emaster/dev/MyProject/target/classes/main\r\n```\r\nТаким образом в ~/Dropbox/jrebel_sync/main будут все скомпилированные классы.\r\n\r\n### Настройка сервера\r\nДалее на сервер скачиваем [свежий JRebel](http://zeroturnaround.com/software/jrebel/download/prev-releases/), распаковываем куда-нибудь.\r\nДобавляем параметры для запуска приложения:\r\n```\r\n-javaagent:/home/emaster/jrebel/jrebel.jar\r\n-Drebel.log=true\r\n```\r\n\r\nТеперь установим на сервере [Dropbox](https://www.dropbox.com/install?os=lnx) и не забудьте его привязать к своему аккаунту. После установки в домашней директории появится Dropbox с правами только для текущего пользователя, нужно открыть доступ на чтение для всех. Выполним команду:\r\n```\r\nchmod 755 /home/emaster/Dropbox\r\n```\r\n\r\n### Testing \r\n\r\nОсталось пересобрать наш проект и убедиться, что в логах при старте приложения есть строка:\r\n```\r\nJRebel: Directory '/home/emaster/Dropbox/jrebel_sync/main' will be monitored for changes.\r\n```\r\nЕсли она присутствует, значит при любой компиляции файла Dropbox обновит его на сервера, а JRebel в свою очередь подхватит новый \r\n\r\n### Возможные проблемы\r\nПри новом билде приложения JRebel может подхватить (пока не разобрался почему) старые файлы из Dropbox. Как временный вариант можно чистить директорию target после каждого редеплоя.","google":"UA-39670620-1","note":"Don't delete this file! It's used internally to help with page regeneration."}