
рд╣рд╛рдп рд╣рдорд░!
рдпрд╣ рдкреБрд╕реНрддрдХ рдЬрд╛рд╡рд╛ рдИрдИ рдХреА рдирдИ рдкреАрдврд╝реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдЖрдк рдЬрд╛рд╡рд╛ рдИрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдХреНрд╖реНрдордЬреАрд╡реЛрдВ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЖрдзреБрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдкреАрдЖрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рдЧрд╛рдЗрдб рдирд╣реАрдВ рд╣реИ - рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдФрд░ рддрдХрдиреАрдХреЗрдВ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ, рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓рд╛ рд╣реИ, рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдзрд╛рдУрдВ рдкрд░ рдХрд░реАрдм рдзреНрдпрд╛рди рджреЗ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдФрд░ рдХреНрд▓рд╛рдЙрдб рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рдкреБрд╕реНрддрдХ рд╢реБрд░реБрдЖрддреА рдФрд░ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╕рд╛рдереА рд╣реЛрдЧреА, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдПрдкреАрдЖрдИ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрд╛рд╡рд╛ рдИрдИ рдореЗрдВ рдПрдХ рдЖрдзреБрдирд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рд╕реЛрдЪ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред ред
рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо
рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред рд╢рд╛рдорд┐рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЖрд░рдВрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдгред
рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕, рдПрдХ рдереНрд░реЗрдб рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз рдпрд╛ рдХреЙрд▓ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрд╡реЗрджрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ, рд╕рд╛рде рд╣реА рд▓реЗрдирджреЗрди рдЬреИрд╕реЗ рдХреНрд░реЙрд╕-рдХрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдордХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди
рдЬрдм HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдзрд╛рдЧрд╛ рд▓реВрдк рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдХреЗ, JAX-RS UsersResource; рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ JAX-RS рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди рдИрдЬреЗрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдСрдкрд░реЗрд╢рди рдордзреНрдпрд╕реНрдереЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ EJB рдирдИ рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╡реНрдпрд╛рдкрд╛рд░ рдкрджреНрдзрддрд┐ рдЬрд┐рд╕рдиреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд▓реЗрдирджреЗрди рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ, рдХрдВрдЯреЗрдирд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рд▓реЗрди-рджреЗрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд░реНрдХрд┐рдЯ рдХреА рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐ рдСрдкрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреА рд╣реИред рд╕рдм рдХреБрдЫ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдордп рдЧреНрд░рд╛рд╣рдХ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рд╕рдордХрд╛рд▓рд┐рдХ рд╕реАрдбреАрдЖрдИ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡реЗ рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рд╕реЗ рдбреЛрдореЗрди рдИрд╡реЗрдВрдЯ рдХреА рдЯреНрд░рд┐рдЧрд░рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдирджреЗрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдпрджрд┐ рд▓реЗрди-рджреЗрди рдХрд╛ рдЪрд░рдг рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд▓реЗрди-рджреЗрди рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдпрд╛ рд╕рдлрд▓ рд▓реЗрдирджреЗрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╛ рдпрджрд┐ рд▓реЗрди-рджреЗрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╕реАрдбреАрдЖрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рддреБрд░рдВрдд рд╣реЛрдиреЗ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддреА рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди
рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд┐рд╖реНрдкрд╛рджрди рдХрдИ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдмрд╛рд░ рдЖрдкрдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрд╛рд╡рд╛ рдИрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдФрд░ рдкреНрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рд╡реЗ рдЗрди рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдЙрд╕рдХреЗ рдереНрд░реЗрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рд╡рд╛ рдИрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрдИ рдПрдкреАрдЖрдИ рд╣реИрдВред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ EJB рддрд░реАрдХреЗрдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ EJB рдпрд╛ EJB рд╡рд░реНрдЧ рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП @Asynchronous рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рддреБрд░рдВрдд рд▓реМрдЯрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдлреНрдпреВрдЪрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рдеред рд╡реЗ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди EJBs рддрдХ рд╕реАрдорд┐рдд рд╣реИ:
@Asynchronous @Stateless public class Calculator { public void calculatePi(long decimalPlaces) {
рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдмрдВрдзрди рд╕реЗрд╡рд╛рдкреНрд░рдмрдВрдзрд┐рдд CDI рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдпрд╛ рдЬрд╛рд╡рд╛ рдПрд╕рдИ рдХрдВрд╕рд░реНрдЯрд┐рдмрд┐рд▓рд┐рдЯреА рдХрдВрдЯреНрд░реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдИрдИ рдореЗрдВ рдПрдХреНрдЬрд┐рдХреНрдпреВрдЯрд░ рд╕рд░реНрд╡рд┐рд╕ рдФрд░ рд╢реЗрдбреНрдпреВрд▓реНрдб рдПрдХреНрд╕реЙрд░реНрд╕реНрдХреЛрд░ рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдХрдВрдЯреЗрдирд░-рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрдВрдЯреЗрдирд░-рдЪрд╛рд▓рд┐рдд рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ManagedExecutorService рдФрд░ ManagedScheduledExecutorService рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдПрд╕рдИ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреВрд░рдХред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд┐рдд рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрджреНрджреЗрджрд╛рд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП:
import javax.annotation.Resource; import javax.enterprise.concurrent.ManagedExecutorService; import java.util.Random; import java.util.concurrent.CompletableFuture; @Stateless public class Calculator { @Resource ManagedExecutorService mes; public CompletableFuture<Double> calculateRandomPi(int maxDecimalPlaces) { return CompletableFuture.supplyAsync(() -> new Random().nextInt(maxDecimalPlaces) + 1, mes) .thenApply(this::calculatePi); } private double calculatePi(long decimalPlaces) { тАж } }
рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрдмрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреВрд░рдХ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдп рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЕрднреА рднреА рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЧрдгрдирд╛ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рдж рдХреА рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрджреНрдпрдо рдЖрд╡реЗрджрди рдореЗрдВ рдирдП рдзрд╛рдЧреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдИрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ CDI рдШрдЯрдирд╛рдПрдБрд╕реАрдбреАрдЖрдИ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░реАрдо рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХреЛ @ObservesAsync рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд╛рдпрд░рдЕрдВрд╕рд┐рдВрдХ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реАрдбреАрдЖрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
@Stateless public class CarManufacturer { @Inject CarFactory carFactory; @Inject Event<CarCreated> carCreated; public Car manufactureCar(Specification spec) { Car car = carFactory.createCar(spec); carCreated.fireAsync(new CarCreated(spec)); return car; } }
рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░-рдкреНрд░рдмрдВрдзрд┐рдд рдереНрд░реЗрдб рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
import javax.enterprise.event.ObservesAsync; public class CreatedCarListener { public void onCarCreated(@ObservesAsync CarCreated event) {
рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реАрдбреАрдЖрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдИрдЬреЗрдмреА рд╡рд┐рдзрд┐ рдореЗрдВ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдИрд╡реЗрдВрдЯреНрд╕ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣реИрдВрдбрд▓рд░ рд╡рд┐рдзрд┐ рдИрдПрдПрд╕рдмреА рдмрд┐рдЬрдиреЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде @ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдирд╛рдЙрдВрд╕рдореЗрдВрдЯ рд╣реИред рдЬрд╛рд╡рд╛ рдИрдИ 8 рдХреЗ рд▓рд┐рдП рд╕реАрдбреАрдЖрдИ рдорд╛рдирдХ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдерд╛ред рдЬрд╛рд╡рд╛ рдИрдИ 8 рдФрд░ рдмрд╛рдж рдореЗрдВ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд╖реЗрддреНрд░рдЪреВрдВрдХрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрдм рддрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдорд┐рдд рд╣реИред рдЕрдиреБрд░реЛрдз рдпрд╛ рд╕рддреНрд░ рдХреЗ рднреАрддрд░ рдПрдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдПрдВ рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рдереАрдВ, рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрдЧреА - рдЕрдиреБрд░реЛрдз рдФрд░ рд╕рддреНрд░ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдбреНрд╕, рдЬреИрд╕реЗ рдХрд┐ рдЕрдиреБрд╕реВрдЪрд┐рдд рдирд┐рд╖реНрдкрд╛рджрдХ рд╕реЗрд╡рд╛ рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдпрд╛ рд╕рддреНрд░ рдХреЗ рднреАрддрд░ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рди рд╣реЛ рдЬреЛ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд╕рдХреНрд░рд┐рдп рдереЗред рд╕рдорд╛рди рдПрдореНрдмреЗрдбреЗрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛рд░реНрдп рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдореЗрдВ рд╕реАрдорд┐рдд рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдмрд╛рд╣рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмрд▓реНрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рд╕реЗ рднреА - рдПрдХ рдХрд╛рд░реНрдп рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рдпреВрдирд┐рдХреНрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЖрд╡рдзрд┐рдХ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ - рдпреЗ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВред рдИрдЬреЗрдмреА рдИрдЬреЗрдмреА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдорд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдпрд╛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рдмрд╛рдж рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рд╣рд░ рджрд╕ рдорд┐рдирдЯ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрдХреНрд░реАрдп рдЯрд╛рдЗрдорд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:
import javax.ejb.Schedule; import javax.ejb.Startup; @Singleton @Startup public class PeriodicJob { @Schedule(minute = "*/10", hour = "*", persistent = false) public void executeJob() {
рдХрд┐рд╕реА рднреА рдИрдЬреЗрдмреА - рдПрдХрд▓, рд░рд╛рдЬреНрдп рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ - рдЯрд╛рдЗрдорд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХрд▓ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рджреЗрд░реА рд╕рднреА рд╕рдХреНрд░рд┐рдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдордп рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рдВрдЧрд▓рдЯрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдИрдЬреЗрдмреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд░ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдорд░ рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ JVM рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рддрдХ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИред рдХрдВрдЯреЗрдирд░ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдорд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВред рд╕реНрдерд╛рдпреА рдЯрд╛рдЗрдорд░, рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИред рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдЯрд╛рдЗрдорд░ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдПрдХ рдмрд╛рд░ рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╢реЗрдбреНрдпреВрд▓ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЯрд╛рдЗрдорд░ рдХреЛ рдпреВрдирд┐рдХреНрд╕ рдЬреИрд╕реЗ рдХреНрд░реЛрди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП, рдИрдЬреЗрдмреА рдЯрд╛рдЗрдорд░ рдХреЛ рдХрдВрдЯреЗрдирд░ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЯрд╛рдЗрдорд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдорд░ рдФрд░
рдЯрд╛рдЗрдордЖрдЙрдЯ рдмреИрдХрдмреИрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реИред
рдХрдВрдЯреЗрдирд░-рдкреНрд░рдмрдВрдзрд┐рдд рд╢реЗрдбреНрдпреВрд▓рд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИрдЬреЗрдмреА рдХреЗ рдмрд╛рд╣рд░ рдЖрд╡рдзрд┐рдХ рдФрд░ рд╕реНрдердЧрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдмрдВрдзрд┐рдд рджреЗрд░реА рдХреЗ рдмрд╛рдж рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ ManagedScheduledExecutorService рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдмрдВрдзрд┐рдд рдШрдЯрдХреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдХрд╛рд░реНрдп рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд┐рдд рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
@ApplicationScoped public class Periodic { @Resource ManagedScheduledExecutorService mses; public void startAsyncJobs() { mses.schedule(this::execute, 10, TimeUnit.SECONDS); mses.scheduleAtFixedRate(this::execute, 60, 10, TimeUnit.SECONDS); } private void execute() { тАж } }
StartAsyncJobs () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдереНрд░реЗрдб рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди () рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рджрд╕ рд╕реЗрдХрдВрдб рдмрд╛рдж рдФрд░ рдлрд┐рд░ рд╣рд░ рджрд╕ рд╕реЗрдХрдВрдб рдкрд╣рд▓реЗ рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред
JAX-RS рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛JAX-RS рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЕрдиреБрд░реЛрдз рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЕрд╡рд░реБрджреНрдз рди рдХрд░реЗрдВред рднрд▓реЗ рд╣реА HTTP рдХрдиреЗрдХреНрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдкрд░ рд▓рдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рд╕реНрдЯреНрд░реАрдо рдЕрдиреНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреА рд╣реИред рдЕрдиреБрд░реЛрдз рдкреНрд░рд╡рд╛рд╣ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЕрдиреБрд░реЛрдз рднрдВрдбрд╛рд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реИред рдЕрдиреБрд░реЛрдз рд╕реНрдЯреНрд░реАрдо рдХреЛ рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, JAX-RS рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдЕрдиреБрд░реЛрдз рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред HTTP рдХрдиреЗрдХреНрд╢рди рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╛ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг JAX-RS рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
@Path("users") @Consumes(MediaType.APPLICATION_JSON) public class UsersResource { @Resource ManagedExecutorService mes; тАж @POST public CompletionStage<Response> createUserAsync(User user) { return CompletableFuture.supplyAsync(() -> createUser(user), mes); } private Response createUser(User user) { userStore.create(user); return Response.accepted().build(); } }
рдЕрдиреБрд░реЛрдз рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡реНрдпрд╕реНрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, JAX-RS рд╡рд┐рдзрд┐ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдЙрд▓рдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рдгреЛрдВ рдХреА рд╡рд╛рдкрд╕реА JAX-RS API рдореЗрдВ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдИ рддрдХрдиреАрдХ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рджреЗрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд┐рдзрд┐ рдореЗрдВ AsyncResponse рдкреНрд░рдХрд╛рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.container.Suspended; @Path("users") @Consumes(MediaType.APPLICATION_JSON) public class UsersResource { @Resource ManagedExecutorService mes; тАж @POST public void createUserAsync(User user, @Suspended AsyncResponse response) { response.setTimeout(5, TimeUnit.SECONDS); response.setTimeoutHandler(r -> r.resume(Response.status(Response.Status.SERVICE_UNAVAILABLE).build())); mes.execute(() -> response.resume(createUser(user))); } }
рдирд┐рд░реНрдорд┐рдд рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдз рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рддрдХ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдХреЙрд▓ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧрдгрдирд╛ рдЬрд╛рд░реА рд░рд╣реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред EJBs рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд JAX-RS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк @Asynchronous annotation рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рд╕реЗрд╡рд╛ рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рди рдХрд░реЗрдВред
JAX-RS рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ HTTP рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд░реА рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдХрдИ рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ рдШрдЯрдХ рдЗрди рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдФрд░ рдФрд╕рдд рдореМрд╕рдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд╣реБрдБрдЪ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
import java.util.stream.Collectors; @ApplicationScoped public class WeatherForecast { private Client client; private List<WebTarget> targets; @Resource ManagedExecutorService mes; @PostConstruct private void initClient() { client = ClientBuilder.newClient(); targets = тАж } public Forecast getAverageForecast() { return invokeTargetsAsync() .stream() .map(CompletableFuture::join) .reduce(this::calculateAverage) .orElseThrow(() -> new IllegalStateException(" ")); } private List<CompletableFuture<Forecast>> invokeTargetsAsync() { return targets.stream() .map(t -> CompletableFuture.supplyAsync(() -> t .request(MediaType.APPLICATION_JSON_TYPE) .get(Forecast.class), mes)) .collect(Collectors.toList()); } private Forecast calculateAverage(Forecast first, Forecast second) { тАж } @PreDestroy public void closeClient() { client.close(); } }
InvokeTargetsAsync () рд╡рд┐рдзрд┐ рдЕрдиреБрд╕реВрдЪрд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП рдЙрдкрд▓рдмреНрдз рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдХрдВрдкреНрд▓реАрдЯрдЯреЗрдмрд▓ рд╕рд┐рд╡реЗрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреЙрд▓ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдЬреЙрдЗрди () рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧреАред
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЬрд┐рдиреНрд╣реЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд▓реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡реЗ рдПрдХ рд╕рд╛рде рдХрдИ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдзреАрдореА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореМрд╕рдо рд╕реЗрд╡рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдзреАрдореА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЙрдореНрдореАрдж рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдирд╣реАрдВред
JAX-RS рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреВрд░реНрдгрддрд╛ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╣реИ, рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдкреНрдб рдХреЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЧрджреНрджреЗрджрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХреЙрд▓ рддреБрд░рдВрдд рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдЪрд░рдг рдХреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдЬреЗрдПрдХреНрд╕-рдЖрд░рдПрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЧреНрд░рд╛рд╣рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрд░рдПрдХреНрд╕ () рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
public Forecast getAverageForecast() { return invokeTargetsAsync() .stream() .reduce((l, r) -> l.thenCombine(r, this::calculateAverage)) .map(s -> s.toCompletableFuture().join()) .orElseThrow(() -> new IllegalStateException(" ")); } private List<CompletionStage<Forecast>> invokeTargetsAsync() { return targets.stream() .map(t -> t .request(MediaType.APPLICATION_JSON_TYPE) .rx() .get(Forecast.class)) .collect(Collectors.toList()); }
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдиреБрд╕реВрдЪрд┐рдд рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - JAX-RS рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛ред рдЖрд░рдПрдХреНрд╕ () рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдПрд╕рд┐рдВрдХреНрд╕ () рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдиреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рднрд╡рд┐рд╖реНрдп рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рдИрдИ рдХрдВрдЯреЗрдирд░-рдкреНрд░рдмрдВрдзрд┐рдд рдХрд▓рд╛рдХрд╛рд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛ рдИрдИ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ
рдЬрд╛рд╡рд╛ рдИрдИ рдПрдкреАрдЖрдИ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдорд╛рдирдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрддрдиреА рджреА рдЧрдИ рд╣реИред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдкрд░рд┐рдЪрд┐рдд рдПрдкреАрдЖрдИ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдкреНрд░реЛрдЪ рдорд┐рд▓реЗрдВрдЧреЗред рдЬрд╛рд╡рд╛ рдИрдИ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдкреАрдЖрдИ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рд╣реИред
рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ: рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рддрдХрдиреАрдХреА рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдбреЛрдореЗрди рддрд░реНрдХ рдХреЛ рд╕рд░рд▓ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЕрдиреНрдп рдЧреБрдгреЛрдВ рд╕реЗ рдкреВрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдбреЛрдореЗрди рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдпрд╛ рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд▓рд┐рдП рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдЬреНрдпрд╛рджрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред рдЬреЗ 2 рдИрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХрдИ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рднрдВрдбрд╛рд░рдг рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдиреЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рддрд░реНрдХ рдХреЛ рдЙрд▓рдЭрд╛ рджрд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХрдард┐рди рдмрдирд╛ рджрд┐рдпрд╛ред
рдЬрд╛рд╡рд╛ рдИрдИ рдореЗрдВ, рдбреЛрдореЗрди рд▓реЙрдЬрд┐рдХ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рд▓реИрд╕ рд╕рд░рд▓ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдВрдЯреЗрдирд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдерд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рд▓реЗрдЦрди рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдИрдИ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╢реБрджреНрдз рддрд░реНрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╣рдЯрд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдзреНрдпрд╛рдп 7 рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рд╡рд╛ рдИрдИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВред
рдкреВрд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд рдЬрд┐рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрд▓рдЯрд╛ (рдЖрдИрдУрд╕реА) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - "рд╣рдореЗрдВ рдХреЙрд▓ рди рдХрд░реЗрдВ, рд╣рдо рдЦреБрдж рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред" рдпрд╣ JAX-RS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдЬрдирд░реЗрдЯрд░ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдЬреИрд╕реЗ рдХреНрд░реЙрд╕-рдХрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝рдХрд░, рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд░рд┐рд╢реНрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг, рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╡рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ JSON рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдФрд░ JSON-B рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдкрд╖реНрдЯ, рдХреНрд░рдорд╛рджреЗрд╢рд┐рдд рд░реВрдк рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рднреАред
рдПрдХ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдЬреЛ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╡рд╣ рд╕рдордЭреМрддреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬрд╛рд╡рд╛ рдИрдИ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдпрд╛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╕рд░ рдХрдИ рд╕реНрддрд░реЛрдВ рдкрд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрдиреНрд╡реЗрдВрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ JAX-RS рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ JAX-RS рдХрд╛ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрдоред Xml XML рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛ рдИрдИ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЙрджреНрдпрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ XML рдХреЗ рдРрд╕реЗ рдЧрд╣рди рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдИрдИ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдордВрдЪ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирдХреЛрдВ рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдЯреЗрдирд░ рдПрдкреАрдЖрдИ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдпрджрд┐ рдкреВрд░реЗ рдЬрд╛рд╡рд╛ рдИрдИ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдареАрдХ рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╣рдЬ рдПрдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ JSON-B рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рдмреАрди рд╕рддреНрдпрд╛рдкрди рддрдХрдиреАрдХ рдХреЗ JAX-RS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдирдХреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛ рдИрдИ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрдо рддреМрд░ рдкрд░ рд╕рд╣рдордд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рднреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдкреБрд╕реНрддрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдирдП рдЬреНрдЮрд╛рди рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЛрдореЗрди рдореЙрдбрд▓, рд╕рд╛рде рд╣реА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Iterative Refactoring рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдорд╕реНрдпрд╛-рдЙрдиреНрдореБрдЦ рдбрд┐рдЬрд╛рдЗрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рдордЭ рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреЛрдб рд▓реЗрд╡рд▓ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рд╕рд╛рд╣рд┐рддреНрдп рд╣реИред - , , . , . , .
- . , , тАФ , , - . тАФ , , . . , , .
, . , .
, , , . , , - . , , , - , . , . 7.
, . , , , . Java EE : , , . .
. , , , . . 6 , .
. , , , . , . , , . , . . , . - .
рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
(Sebastian Daschner) тАФ Java-, , Java (EE). JCP, Java EE, JSR 370 374 . Java Java - Oracle.
IT-, JavaLand, JavaOne Jfokus. JavaOne Rockstar JavaOne 2016. Java (Steve Chin) Java, . JOnsen тАФ Java, .
(Melissa McKay) тАФ 15- , . Java-, . , , .
JCrete () JOnsen . IT- , JavaOne4Kids JCrete4Kids. JavaOne 2017 Denver Java User Group.
┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗
рд╕рд╛рдордЧреНрд░реА┬╗
рдЕрдВрд╢20% тАФ
Java EE