Навиштани code нисфи мубориза аст. Онро хануз дуруст кор кардан лозим аст. IDE ва абзорҳои ислоҳкунӣ дар ин кор ба мо кӯмак мекунанд.
Бо истифода аз IntelliJ IDEA ҳамчун намуна, ман пешниҳод мекунам, ки бо он шинос шавам, ки чӣ гуна мо метавонем фаҳмем, ки ҳангоми кор бо codeи мо чӣ мешавад. Debug як мавзӯи васеъ аст, бинобар ин ин барраси ғаввоси амиқро, ба монанди ғаввос пешниҳод намекунад. Аммо ман умедворам, ки snorkeling ҳатман)
Баъдан, мо бояд лоиҳаеро, ки мо дар server интихоб кардем, иҷро кунем. Ин раванд дар ҳуҷҷатҳои хурде тасвир шудааст, ки онро дар худи лоиҳа пайдо кардан мумкин аст:
Пас аз ин, дар гузориши server мо метавонем бубинем, ки чӣ гуна лоиҳаи нав "ҷойгир" шудааст:
Пас аз ин, мо ба саҳифа меравем
Агар ҳамааш хуб бошад, мо дар ин бора паёмеро дар зер мебинем:
Барои рафтан ба манбаи пайдошуда Enter-ро пахш кунед:
Ҳамин тавр, мо мебинем, ки ҳангоми бақайдгирӣ, memberController.register даъват карда мешавад.Аз афташ, ин бояд як навъ синфи java бошад. Клик кунед
Дар ҳақиқат, чунин синф вуҷуд дорад. Биёед ба он ворид шавем. Аз афташ, бояд усули бақайдгирӣ вуҷуд дошта бошад. Клик кунед
Дар ҳақиқат, мо онро ёфтем. Эҳтимол, бақайдгирӣ дар ин ҷо, дар memberRegistration.register рух медиҳад . Ctrl -ро пахш кунед ва усули "афтидан" -ро клик кунед:
Биёед ҳоло "нуқтаи шикастан" ё Нуқтаи шикастанро муқаррар кунем. Ин нишонаест, ки мегӯяд, ки иҷрои code дар куҷо бояд таваққуф кунад. Дар айни замон мо имконият пайдо мекунем, ки бисёр чизҳои ҷолибро омӯзем. Барои гузоштани он, шумо бояд дар ҷои рости рақами сатр клик кунед.
Дар саҳифаи http://localhost:8080/wildfly-hibernate4 майдонҳоро пур кунед ва тугмаи Регистрро пахш кунед. Тасвири идея дар панел чашмак мезанад:
Агар ба Idea гузаред, шумо мебинед, ки дар панели дебаг бисёр маълумоти ҷолиб мавҷуд аст:
Дар ин ҷо шумо метавонед арзиши майдонҳои an objectро бинед. Масалан, узви бақайдгирифташуда аз чӣ иборат аст:
бузург. Боз чӣ кор карда метавонем? Мо метавонем менюи контекстиро кушоем ва дар он ҷо Баҳодиҳии ифодаро интихоб кунем (ё тавассути менюи Иҷро кардан -> Баҳодиҳии ифода). Беҳтараш, дар панели идоракунии ислоҳкунанда:
Ин як қобorяти олиҷаноб дар нуқтаи танаффус аст, ки ба ҳама чизҳое, ки он нуқтаи code дастрасӣ дорад, барои иҷрои ҳама гуна codeе, ки дар он лаҳза иҷро карда мешавад, дастрасӣ дорад. Барои намуна:
Дар панели идоракунии ислоҳкунанда инчунин тугмаҳои идоракунӣ мавҷуданд, ки барои ба куҷо интиқол додани назорати ҷараёни барнома масъуланд. Оё ин ҷоду нест?) Бо пахш кардани тугмаи F8 (Step Out), мо бе ворид кардани усулҳо рамзро мегузарем. Бо пахш кардани тугмаи F9, мо дар байни сатрҳои code бо debugger қатъ мекунем ва ба ислоҳкунанда назорати иҷрои барномаро медиҳем. Агар мо тугмаи F7-ро пахш кунем (Қадам ба дохил), он гоҳ мо codeро мегузарем ва ҳар як усулеро, ки дар роҳ вохӯрем, ворид мекунем. Дар омади гап, ба ин блоки иттилоотӣ диққати махсус диҳед:
Ин риштаеро, ки мо дар он ҳастем ва усулҳои стеки риштаи ҷорӣ нишон медиҳад. Аммо ин ҳама нест. Барои роҳат шумо метавонед ҷадвали чаҳорчӯбҳоро кушоед. Барои ин, он бояд фаъол карда шавад:
Ҳоло дар ҷадвали чаҳорчӯба мо маълумотро дар бораи гузариш аз усул ба усул мебинем, зеро бо истифода аз Step Into роҳ рафтанро оғоз кард.
Тавре ки мо мебинем, мо наметавонем ҳамеша ба он ҷое, ки ҳоло барнома иҷро карда мешавад, интиқол дода шавад. Мо ҳоло дар "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)" ҳастем. Аммо дар асл мо дар амал татбиқ шуда истодаем. Инро синфи муайянкардаи ин нишон медиҳад:
Биёед инро дида бароем. Тавре ки мо медонем, он ба an objectи ҷорӣ ишора мекунад. Мо дар TransactionScopedEntityManager ҳастем. Чаро Idea наметавонад codeро ба мо нишон диҳад? Гап дар он аст, ки IntelliJ Idea айни замон дар бораи ягон TransactionScopedEntityManager намедонад, зеро он ба лоиҳаи мо пайваст нест (он дар вобастагии лоиҳа нест). Вақте ки serverи барнома кор мекунад, дар дохor он китобхонаҳои зиёде мавҷуданд. Аммо мо дар бораи онҳо хеле кам медонем, зеро ... Умуман, ба мо лозим нест, ки дохorро омӯзем, танҳо барои кор кардан лозим аст. Аммо баъзан кор ё шавқи варзиш инро талаб мекунад. Сипас, шумо бояд Idea-ро дар бораи ин китобхона хабардор кунед, то он донад, ки рамзи синфро аз куҷо гирифтан мумкин аст.
Акнун, биёед натиҷаро интизор шавем. Ӯ шуморо интизор нахоҳад буд)
Ҳоло, мо бояд рамзи сарчашмаи онро дар ҷое пайдо кунем. Ва 2 вариант вуҷуд дорад:
Акнун биёед ба тавсифи вобастагӣ гузарем. Дар ин саҳифа шумо метавонед рамзи сарчашмаро зеркашӣ кунед. Аҷоиб, ҳоло мо codeро зеркашӣ кардем. Танҳо пайваст кардани китобхона боқӣ мемонад. Он хеле содда пайваст мешавад. Мо бояд танзимоти лоиҳаро кушоем:
Дар он ҷо мо "Китобхонаҳо" -ро интихоб мекунем ва рамзҳои сарчашмаҳои гирифташударо ба бахши "Сарчашмаҳо" илова мекунем ва дар бахши "Синфҳо" мо худи файли кӯзаи китобхонаро аз феҳристи WildFly нишон медиҳем, ки онро бо истифода аз Far Manager пайдо кардем. Пас аз ин, вақте ки мо тавассути F7 паймоиш мекунем, мо мундариҷаи синфи AbstractEntityManager ва TransactionScopedEntityManagerро мебинем ва инчунин тавассути ҷустуҷӯ аз рӯи синф бо истифода аз Ctrl+N дастрас мешаванд.
Акнун нуқтаи қатъшавӣ танҳо вақте оташ мегирад, ки ном Максимorан аст. Бо пахш кардани тугмаи More, маҷмӯи васеъи танзимот барои Нуқтаҳои Танаффус ба шумо дастрас мешавад.
Ва барои навъи истиснои интихобшуда қоидаи нав эҷод кунед:
Масалан, барои NPE:
#Вячеслав
Муқаддима
Қисми навиштани codeи он ислоҳ карда мешавад. Ва агар вазифаҳои шумо дастгирии codeро дар бар гиранд, ислоҳи боз ҳам бештар хоҳад буд. Хуб, илова бар ин, бо ёрии ислоҳи ислоҳ, шумо метавонед кори китобхонаҳо ва чаҳорчӯбаҳое, ки истифода мешаванд, то андозае амиқтар тафтиш кунед, ки шумо метавонед худро дар ҷангали рамзи ягон каси дигар ғарқ кунед. Барои ғарқ кардани мо ба мо лозим аст:- Муҳити рушд: Нашри Community IntelliJ Idea Free
- Maven насб карда шудааст
- Сервери Ариза WildFly 12.0.0.Final
- Рамзи манбаъ барои мисолҳои расмӣ: Кодекси ибтидоии зуд
bin\standalone.bat
\hibernate4\README.adoc
Тавре ки дар ин ҳуҷҷат нишон дода шудааст, мо бояд фармонро дар директорияи hibernate4 иҷро кунем: mvn clean package wildfly:deploy
Мо мунтазири паёме ҳастем, ки сохтмон бомуваффақият анҷом ёфт:
http://localhost:8080/wildfly-hibernate4
ва мо бояд саҳифаеро бо варақаи " Бақайдгирии аъзоён " нишон диҳем. Ҳамин тавр, омодагии мо ба таҷрибаҳо анҷом ёфт ва мо метавонем оғоз кунем)) Барои возеҳият дар пеш расмҳои зиёде хоҳанд буд, аз ин рӯ омода шавед)
Debug дурдаст
Ҳамин тавр, мо бояд ҳолати Debug-ро танзим кунем, то IDE-и мо иҷрои codeро дар serverи барнома назорат кунад. IntelliJ Idea дар ду version меояд: ройгон (Ҷамъият) ва пулакӣ (Ultimate). Охиринро дар шакли EAP расман санҷидан мумкин аст. Дар versionи ниҳоӣ ҳама чиз оддӣ аст - serverи барномаро мустақиман аз IDE дар реҷаи дебаг оғоз кардан мумкин аст. Аммо дар versionи ҷомеа ба шумо лозим аст, ки чанд чизро дастӣ иҷро кунед. Аз ин рӯ, биёед як парвандаи мураккабтарро баррасӣ кунем, яъне. танзим дар versionи ҷомеа. Варианти ҷомеа баъзе маҳдудиятҳо дорад. Аз ҷумла, шумо наметавонед serverи барномаро аз он идора кунед. Аммо шумо метавонед ислоҳи дурдаст (Remote Debug) насб кунед, вақте ки дар ҷои алоҳида serverи фаъол бо барномае, ки ба мо лозим аст, мавҷуд аст. Биёед тавсифи танзимотро аз ин ҷо истифода барем: Debug дурдасти Wildfly дар нашри ҷомеаи IntelliJ Idea (танзимкунии Конфигуратсияи Иҷроиши дурдаст барои порти 8787). Пас аз конфигуратсия, мо конфигуратсияи нави худро дар реҷаи Debug оғоз мекунем:Раванди ислоҳ
Биёед сабтро ислоҳ кунем. Барои ин, мо бояд пеш аз ҳама дар бораи ҷойе, ки мо онро кашф мекунем, муайян кунем. Аз рӯи тиреза, ба мо тугмаи "Бақайдгирӣ" лозим аст. Биёед онро дар code пайдо кунем. Ҳамин тавр, ба мо элемент лозим аст, он бояд матн дошта бошад: "Бақайдгирӣ". Ё вай бояд бо он коре дошта бошад. Клик кунедCtrl+Shift+F
ва барои Регистрро дар нохунак ҷустуҷӯ кунед. Мо мебинем, ки яке дар index.xhtml вуҷуд дорад.
Ctrl+N
ва ҷустуҷӯ кунед:
Ctrl+F12
ва усули сабти номро ҷустуҷӯ кунед
Пайваст кардани китобхонаҳои тарафи сеюм барои ислоҳи хатогиҳо
Аввалан, худи мо бояд фаҳмем, ки он чӣ гуна китобхона аст, ки бояд пайваст карда шавад. Роҳи аввал душвортарин аст - ҷустуҷӯ дар Интернет. Суръат ва натиҷаи дарёфти натиҷа аз он вобаста аст, ки лоиҳа то чӣ андоза дуруст идора карда шудааст. Масалан, WildFly дорои анбори кушода аст. Ҳамин тавр, вақте ки мо Google-и "TransactionScopedEntityManager"-ро Google мекунем, мо ба https://github.com/wildfly/wildfly/tree/master/jpa/subsystem меравем ва мефаҳмем, ки ба мо wildfly-jpa лозим аст. Усули дуюм дуруст аст. Дар куҷо server аст, ба он ҷо нигаред. Воситаҳои гуногун метавонанд ба ин кӯмак расонанд. Масалан, дар Windows он метавонад Manager Far бошад . Дар зер намунаи алгоритми ҷустуҷӯ оварда шудааст. Пас аз насб ва ба кор андохтани он, Tab-ро барои гузаштан ба яке аз ҷадвалҳо, бо истифода азAlt+F1
ҷадвали чап ё Alt+F2
рост, ва қисмати лозимаро дар диски сахт интихоб кунед. Эҳтимол дорад, ки худи директорияи Far Manager пас аз насбкунӣ дар Manager Far кушода шавад. Барои ба решаи диск рафтан, -ро пахш кунед Ctrl + \
. Истифодаи Alt+F
равзанаи ҷустуҷӯро кушоед, ворид кардани номи директорияро оғоз кунед ва пас аз пайдо шудани директория Enter-ро пахш кунед. Ин ҷустуҷӯ оқилона аст ва он феҳристҳоеро, ки ба матни ҷустуҷӯ мувофиқанд, таъкид мекунад. Агар шумо аломатҳоеро ворид кунед, ки барои онҳо ҷузвдонҳо вуҷуд надоранд, ин гуна аломатҳоро ворид кардан ғайриимкон аст. Бо ин роҳ мо ба директорияи serverи барномаҳо меравем. Фарз мекунем, ки мо намедонем, ки модулҳо дар server дар куҷо ҷойгиранд. Шояд ин бори аввал дар ҳаёти шумост, ки шумо дар бораи як намуди WildFly мешунавед. Alt+F7
Аз ин рӯ, барои ҷустуҷӯи файлҳо фавран ин ҷо клик кунед . Ҳамин тавр, мантиқ талаб мекунад: ба мо файл бо китобхона лозим аст. Яъне ба мо зарфе лозим аст. Дар дохor синфи TransactionScopedEntityManager бояд бошад. Зеро class = файл, пас "дарбар мегирад" -ро ҷустуҷӯ кунед. Яъне чизе монанди ин:
- Тӯҳфаи муфид versioneye.com
- Анбори марказии Maven
GO TO FULL VERSION