рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ (EJB 3.0 рдореЗрдВ)

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХрд╛ рдХрд╛рдлреА рд╣рд┐рд╕реНрд╕рд╛ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдк рдмрд╕ рдХреЛрдб рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдИрдЬреЗрдмреА 3.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╡рд┐рд╡рд░рдг рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рддреЛ рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред



рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░реНрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рди рддрд░реАрдХреЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд░реНрд╡рд▓реЗрдЯреНрд╕ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдЪреЗрди рдХреЗ рд╕рдорд╛рди рд╣реИред

рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдХреНрд▓рд╛рд╕ рдХреЛ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЬреЛ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░реЗрдЧреАред рдЗрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╣реЛрдиреЗ рджреЗрдВред

public class SimpleLogger{ @AroundInvoke public Object addLog(InvocationContext context){ //-   return context.proceed(); } 

рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЛ @AroundInvoke рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╛рдж рдореЗрдВ рд╣рдо рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред

рдЕрдм, рд╣рдореЗрдВ рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕рдореЗрдВ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 public class Summ { @Interceptors (SimpleLogger.class) public double getResult(){ // } } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрдм рдХреЛрдИ рд╕рдорди рд╡рд░реНрдЧ рдХреЗ getResult рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, SimpleLogger рд╡рд░реНрдЧ рдХреА addLog рд╡рд┐рдзрд┐ рдХреЛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ getResult рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рджреЗрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрд╡рд░реЛрдзрди рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЗрд╕рдореЗрдВ @AroundInvoke рдПрдиреЛрдЯреЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдирд┐рдЬреА рд╕рдВрд░рдХреНрд╖рд┐рдд рдпрд╛ рдкреИрдХреЗрдЯ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдпрд╛ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдПрдиреЛрдЯреЗрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдСрдмреНрдЬреЗрдХреНрдЯ <рд╡рд┐рдзрд┐ рдирд╛рдо> (InvocationContext <рдЪрд░ рдирд╛рдо>) рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред

рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд┐рдВрдЧ рдореЗрдердб рдХреЗ рдЕрдВрджрд░ рдПрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд░рд┐рдлрд░реЗрдВрд╕.рдкреНрд░реЛрд╕реЗрд╕реНрдб () рдХреЙрд▓ рдХрд░рдХреЗ рдмрд┐рдЬрдиреЗрд╕ рдореЗрдердб рдпрд╛ рдЪреЗрди рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЙрд▓ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рдХреЛ рднреА рдирд┐рд╖реНрдкрд╛рджрди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

InvocationContext рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣рдореЗрдВ рдХреЙрд▓ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 public interface InvocationContext { public Object getTarget(); public Method getMethod(); public Object[ ] getParametrs(); public void setParametrs(Object[ ] ); public java.util.Map<String,Object> getContextData(); public Object proceed(); } 



рдЖрдк рдЗрдВрдЯрд░рд╕реЗрдкреНрдб рдмреАрди рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рдХреЙрд▓рдмреИрдХ рддрд░реАрдХреЛрдВ рдХреЛ рднреА рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 public class SimpleLogger{ @PostConstruct public void init(InvocationContext context){ //  ,   context.getTarget() context.proceed(): } @PreDestroy public void remove(InvocationContext context){ //-  context.proceed(): } } 

рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рддрдерд╛рдХрдерд┐рдд "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░" рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрдЧреАред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреЛ рдХреЗрд╡рд▓ рддреИрдирд╛рддреА рд╡рд┐рд╡рд░рдгрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ

 <interceptor-binding> <ejb-name>*<ejb-name> <interceptor-class> ru.interceptortest.Validate</interceptor-class> </interceptor-binding> 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрд╕рдХреЗ рдПрдиреЛрдЯреЗрд╢рди @ExcludeDefaultInterceptors рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВред
рдЖрдЗрдП рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯреЗрдб рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╕рд░реНрд╡рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред

 public class SimpleLogger { @AroundInvoke public Object logAction(InvocationContext context) throws Exception { System.out.println("object - " + context.getTarget().getClass()); System.out.println( "method - " + context.getMethod()); return context.proceed(); } } 

рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рдЕрдВрдХрдЧрдгрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдПрдиреЛрдЯреЗрд╢рди @Interceptors (SimpleLogger.class) рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред

 @Stateless public class Count implements Serializable{ double firstArgument=0; double secondArgument=0; //     @Interceptors(SimpleLogger.class) public double getSummResult() { return getFirstArgument()+ getSecondArgument(); } } 

рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ getSummResult () рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ impleLogger.logAction рд╕рд░реНрд╡рд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛:

 object - class ru.interceptorexample.Count method - public double ru.interceptorexample.Count.getSummResult() 

рдПрдХ рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝реЗрдВред

 public class LifeLogger { @AroundInvoke public Object logAll(InvocationContext context) throws Exception { System.out.println("LogAll object - " + context.getTarget()); System.out.println("LogAll method - " + context.getMethod()); return context.proceed(); } @PostConstruct public Object logCreate(InvocationContext context) throws Exception { System.out.println("create - " + context.getTarget().getClass().getClass); return context.proceed(); } } 

рдФрд░ рдХрд╛рдЙрдВрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝реЗрдВред

 public double getMultiplyResult(){ return getFirstArgument() * getSecondArgument(); } 

рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреВрд░реЗ рд╡рд░реНрдЧ рдХреЛ рдПрдиреЛрдЯреЗрд╢рди @ рдЗрдиреНрдЯрд░рд╕реЗрдкреНрдЯрд░реНрд╕ (LifeLogger.class) рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм, рдЬрдм getMultiplyResult рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм рдЧрдгрдирд╛ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ LifeLogger рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╕рд░реНрд╡рд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛:

 create - class ru.interceptorexample.Count 

рдФрд░:

 LogAll object - class ru.interceptorexample.Count LogAll method - public double ru.interceptorexample.Count.getMultiplyResult() 

рдФрд░ рдпрджрд┐ рдЖрдк getSummResult рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ LifeLogger рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ SimpleLogger рд╕рд░реНрд╡рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

 LogAll object - class ru.interceptorexample.Count LogAll method - public double ru.interceptorexample.Count.getSummResult() object - class ru.interceptorexample.Count method - public double ru.interceptorexample.Count.getSummResult() 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, log4j рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпреЗ рдЙрджрд╛рд╣рд░рдг рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереЗ рдХрд┐ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рддрдВрддреНрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕реНрд░реЛрдд, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
1. oracle.com рд╕реЗ рдирд┐рдпрдорд╛рд╡рд▓реА
2. рдИрдЬреЗрдмреА 3 рдПрдХреНрд╢рди рдореЗрдВ - рджреЗрдмреВ рдкрд╛рдВрдбрд╛, рд░реЗрдЬрд╛ рд░рд╣рдорд╛рди, рдбреЗрд░реЗрдХ рд▓реЗрди рдЖрдИрдПрд╕рдмреАрдПрди: 1-933988-34-7

рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ рдЬреАрдердм рд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗрдЯрдмрд┐рди рдФрд░ рдЧреНрд▓рд╛рд╕рдлрд┐рд╢ рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред github.com/tsegorah/JavaInterceptorsExample.git

Source: https://habr.com/ru/post/In146753/


All Articles