рд╢рд╛рдпрдж рд╕рднреА рдХреЛ рдХрднреА-рдХрднреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рдордп рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдЬ рдХреА рддрд╛рд░реАрдЦ рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕рдХреА рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд░рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХрд╛рдЗрдк рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╛ рдЕрддреАрдд рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рд╕рд┐рд╕реНрдЯрдо рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдордп рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдФрд░, рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рднрдпрдВрдХрд░ рдЧреБрдЧрд▓реА рдХреЗ рдмрд╛рдж, рдПрдХ рдЫреЛрдЯрд╛ рдЬрд╛рд╡рд╛-рдПрдЬреЗрдВрдЯ рд▓рд┐рдЦрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЬреЗрд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдорд╢реАрди рдХреА рд╕рд┐рд╕реНрдЯрдо рддрд┐рдерд┐ рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛ рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рддрд┐рдерд┐ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЗрд╕рдХреА рдЕрдВрддрд┐рдо рд╕рдВрд╢реЛрдзрди рддрд┐рдерд┐ рд╣рд░ рдмрд╛рд░ рдЬрд╛рдВрдЪреА рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд▓реЗрдиреЗ рд╕реЗ рдЖрдк рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреИрд╕реЗ рд╣реЛрдЧрд╛ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рди рдХреЗрд╡рд▓ рддрд╛рд░реАрдЦ рдХреА рд╢рд┐рдлреНрдЯ, рдмрд▓реНрдХрд┐ рд╕рдордп рднреА рдЬреЛрдбрд╝реЗрдВред рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рджрд┐рдирд╛рдВрдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдЬреЗрдВрдЯ рдХреЗ рдХрд╛рдо рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ MySystem.currentTimeMillis рдХреЗ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде System.currentTimeMillis рдХреЛ рдХреЙрд▓ рдХреА рдЬрдЧрд╣ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рддрд╛рд░реАрдЦ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдПрдЬреЗрдВрдЯ рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдореЗрдирдХреНрд▓рд╛рд╕ рд╣реИ, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдЬреЗрд╡реАрдПрдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рдкреНрд░реАрдорд┐рдпрд░ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛:
public class MainClass { private static Instrumentation instrumentation;
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рд╕рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреНрд▓рд╛рд╕ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ MySystem.currentTimeMillis рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд╕рд╛рде System.currentTimeMillis рдХреЛ рд╕рднреА рдХреЙрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП javassist рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ:
public class ClassTransformer implements ClassFileTransformer { public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { if(className.startsWith("ru/javaorca/")) return null;
MySystem рд╡рд░реНрдЧ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ:
public class MySystem { public static long currentTimeMillis() { long res = System.currentTimeMillis();
рдЕрдВрддрд┐рдо DateShift рдХреНрд▓рд╛рд╕ рдмрдиреА рд╣реБрдИ рд╣реИ, рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдордп рдХреЛ рд▓реЛрдб рдХрд░рддреА рд╣реИ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордп рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИред
public class DateShift { private static volatile long lastModified = 0;
рдПрдЬреЗрдВрдЯ рдорд╛рд╡реЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдЖрдк рдЗрд╕реЗ рдмрд┐рдЯрдХреЙрдЗрди рдкрд░ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдЬреЗрдВрдЯ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ jvm рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
-javaagent:D:\development\srv\dateshift-1.4-jar-with-dependencies.jar=D:\development\srv\dateshift.txt
рд╡рд╣ рд╕рдм рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдПрдЬреЗрдВрдЯ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ рдФрд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордп рдХреЛ рдкреАрдЫреЗ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡реЗрджрди рдереЛрдбрд╝рд╛ рдЫреЛрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдареАрдХ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╕ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдХреЗ рд╕рдорд╛рди рд╣реИрдВ рдпрджрд┐ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреА рддрд╛рд░реАрдЦ рдХреЛ рд╕реАрдзреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рд╕реВрддреНрд░
https://bitbucket.org/javaorca/dateshift/src рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ