First of all, thank you very much for your answer.

Since the coding experiments I have made are AI-guided, I cannot say that
they will be consistent.

Very simply, to write a simple agent that calculates the total running time
of the application I am making as an agent, from the after-before start and
end time of the methods running on the JVM.

I can do it with Aspectj using AOP technique.

I want to do it for legacy applications running on JDK8.

regards

Alexander Kriegisch via aspectj-users <aspectj-users@eclipse.org>, 17 Oca
2024 Çar, 12:25 tarihinde şunu yazdı:

> This is not trivial. So please, provide a full reproducer project on
> GitHub including the target code to be woven, so I do not have to fill in
> the gaps here.
>
> What I noticed at first glance is, that class StartAgent to be and do
> multiple things at once:
>
>    1. It is a java agent.
>    2. It tries to inject another java agent aspectjweaver into the
>    bootstrap classloader, which begs the question why you are not doing that
>    from the JVM command line, if you are already using a -javaagent
>    parameter anyway. Then the springboard agent would not even be necessary.
>    The next question would be why you think you need it on the bootstrap
>    classloader at all.
>    3. It is an aspect, i.e. it is accessing classes from aspectjweaver
>    from the system classloader already, before it even has a chance to inject
>    the jar into the bootstrap classloader.
>
> Your springboard agent should not directly import or reference any classes
> from aspectjweaver or aspectjrt before the weaver JAR has been added to
> the bootstrap loader. If later for any reason the springboard agent needs
> to kick off some action involving classes referencing weaver classes, you
> ought to load and start them via reflection, e.g. Class.forName etc.
>
> It looks as if you are making a simple matter overly complicated. The
> justification for what you are trying to do could only be a very special
> use case, which you have failed to describe. So I have no way to be sure,
> whether there is not a simpler approach. Lacking additional evidence, I
> would assume there is.
>
> BTW, are you on JDK 8 or on 9+? I am asking for a specific reason too
> early to discuss now.
> --
> Alexander Kriegisch
> https://scrum-master.de
>
>
> kypdk via aspectj-users schrieb am 17.01.2024 03:20 (GMT +07:00):
>
> Hello,
>
> What I want to do is to trigger the before advice on the agent when the
> methods run on the generator.jar
>
> Could you help me ,I would greatly appreciate it
>
> regards
>
> java -javaagent:JavaAgent.jar -jar Generator.jar
>
>
> import org.aspectj.lang.JoinPoint;
> import org.aspectj.lang.annotation.Aspect;
> import org.aspectj.lang.annotation.Before;
> import org.aspectj.weaver.loadtime.Agent;
>
> import java.io.IOException;
> import java.lang.instrument.Instrumentation;
> import java.util.jar.JarFile;
>
> @Aspect
> public class StartAgent {
>
>     public static void premain(String agentArgs, Instrumentation 
> instrumentation) {
>         System.out.println("Java Agent Started");
>
>         String aspectjWeaverPath = "aspectjweaver.jar";
>         try {
>             instrumentation.appendToBootstrapClassLoaderSearch(new 
> JarFile(aspectjWeaverPath));
>         } catch (IOException e) {
>             System.out.println(e);
>         }
>
>         Agent.premain(agentArgs, instrumentation);
>     }
>
>     @Before("execution(* *(..))")
>     public void beforeMethodExecution(JoinPoint joinPoint) {
>         System.out.println("Before method execution: " + 
> joinPoint.getSignature().toShortString());
>     }
> }
>
> <plugin>
>     <groupId>org.apache.maven.plugins</groupId>
>     <artifactId>maven-shade-plugin</artifactId>
>     <version>3.2.4</version>
>     <configuration>
>         <transformers>
>             <transformer 
> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
>                 <manifestEntries>
>                     <Premain-Class>StartAgent</Premain-Class>
>                     <Can-Retransform-Classes>true</Can-Retransform-Classes>
>                     <Can-Redefine-Classes>true</Can-Redefine-Classes>
>                     
> <Implementation-Version>${project.version}</Implementation-Version>
>                 </manifestEntries>
>             </transformer>
>         </transformers>
>
>         <filters>
>             <filter>
>                 <artifact>*:*</artifact>
>                 <excludes>
>                     <exclude>META-INF/*.SF</exclude>
>                     <exclude>META-INF/*.DSA</exclude>
>                     <exclude>META-INF/*.RSA</exclude>
>                 </excludes>
>             </filter>
>         </filters>
>     </configuration>
>     <executions>
>         <execution>
>             <phase>package</phase>
>             <goals>
>                 <goal>shade</goal>
>             </goals>
>         </execution>
>     </executions>
> </plugin>
>
>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@eclipse.org
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to