osgi 컨테이너가있는 bytebuddy

basu76

bytebuddy 홈페이지의 샘플을 기반으로 간단한 자바 에이전트를 작성하려고합니다. 에이전트가 작동하지만 OSGI 런타임으로 실행하면 java.lang.NoClassDefFoundError가 발생합니다.

어떤 포인터?

java.lang.ClassNotFoundException: com.foo.javaagent.TimingInterceptor cannot be found by ..

import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.matcher.ElementMatchers;
import java.lang.instrument.Instrumentation;


    public class TimerAgent {
        public static void premain(String arguments,
                                   Instrumentation instrumentation) {
            new AgentBuilder.Default()
                    .type(ElementMatchers.nameEndsWith("World"))
                    .transform((builder, type, classLoader, module) ->
                            builder.method(ElementMatchers.any())
                                    .intercept(MethodDelegation.to(TimingInterceptor.class))
                    ).installOn(instrumentation);
        }
    }

import net.bytebuddy.implementation.bind.annotation.Origin;
import net.bytebuddy.implementation.bind.annotation.RuntimeType;
import net.bytebuddy.implementation.bind.annotation.SuperCall;

import java.lang.reflect.Method;
import java.util.concurrent.Callable;


public class TimingInterceptor {
    @RuntimeType
    public static Object intercept(@Origin Method method,
                                   @SuperCall Callable<?> callable) throws Exception {
        long start = System.currentTimeMillis();
        try {
            return callable.call();
        } finally {
            System.out.println(method + " took " + (System.currentTimeMillis() - start));
        }
    }
}
라파엘 빈터 홀터

TimingInterceptor클래스는 계측 클래스에 의해 참조 때문에 볼 수 있어야합니다. OSGi는 클래스 로더로 클래스를 분리하고 시스템 클래스 로더를 에이전트가로드되는 상위로 설정하지 않습니다. 이를 우회하려면 클래스를 보편적으로 볼 수있는 부트 스트랩 클래스 로더에 삽입해야합니다. 이렇게하려면 차단 논리를 별도의 jar에 분리 Instrumentation하고 에이전트를 설치하는 데 사용 하는 인스턴스를 통해이 jar를 부트 스트랩 클래스 로더 검색 경로에 연결합니다 . 에이전트를 설치하기 전에이를 수행해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

bytebuddy rebase 대 하위 클래스 및 OSGi의 잘못된 이름 / NoClassDefFoundError

분류에서Dev

OSGI 컨테이너의 DataSource

분류에서Dev

일부 코드 후의 OSGi 컨테이너가 실행 된 종료 (명령 줄 도구를 만드는)

분류에서Dev

karaf 컨테이너의 OSGI 통합 테스트

분류에서Dev

OSGi 컨테이너-Apache Karaf 내부의 Equinox 대 Apache Felix

분류에서Dev

OpenSAML3 리소스가 OSGi 컨테이너에서 'default-config.xml'을 찾을 수 없습니다.

분류에서Dev

Maven 프로젝트로 Karaf Osgi 컨테이너에 쉽게 배포하는 방법

분류에서Dev

ByteBuddy의 필드 설정 검사가 너무 엄격합니까?

분류에서Dev

Overlayfs / Squashfs가있는 LXC 컨테이너

분류에서Dev

앱 + DB가있는 컨테이너

분류에서Dev

Bytebuddy : 가로채는 고정 값의 get 메서드

분류에서Dev

ByteBuddy 인터셉트 된 메서드가 호출되지 않음

분류에서Dev

@Super로 bytebuddy의 개인 메서드 위임-가능합니까?

분류에서Dev

다중 Postgresql 컨테이너가있는 다중 Odoo 컨테이너

분류에서Dev

중앙 컨테이너가있는 전체 너비 배경색

분류에서Dev

번들 OSGI를 설치하는 Apache ServiceMix

분류에서Dev

개인 정적 최종 MethodHandle 필드가있는 ByteBuddy 계측 유형을 만들 수 있습니까?

분류에서Dev

ByteBuddy에서 @ Advice.AllArguments를 사용하여 인수가없는 메서드를 가로 챌 수 있습니까?

분류에서Dev

OSGi가 설치된 번들에 번들 리스너 추가

분류에서Dev

이미지 부서 또는 컨테이너가있는 양식

분류에서Dev

OSGi DS : 활성화 전에 setService가 호출되는 이유

분류에서Dev

OSGi 컨테이너의 Jersey-Grizzly 서버 내 Rest Services에 대한 응답 개체 구성 (Jersey 1x를 사용한 CORS 오류 방지)

분류에서Dev

OSGI 컨테이너 내에서 종속성 프로젝트에 대한 속성 파일을로드 할 수 없습니다.

분류에서Dev

ByteBuddy에 TypeDescription.Generic을 적절한 java.lang.reflect.Type으로 변환하는 방법이 있습니까?

분류에서Dev

이름에 숫자가있는 도커 컨테이너 정렬

분류에서Dev

내 ByteBuddy 생성 클래스가 서로를 볼 수 없습니다.

분류에서Dev

병이 OSGi 병인지 어떻게 테스트 할 수 있습니까?

분류에서Dev

순서가있는 컨테이너와 순서가없는 컨테이너를 반복

분류에서Dev

ByteBuddy 변환 중에 메서드를 늘리는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    bytebuddy rebase 대 하위 클래스 및 OSGi의 잘못된 이름 / NoClassDefFoundError

  2. 2

    OSGI 컨테이너의 DataSource

  3. 3

    일부 코드 후의 OSGi 컨테이너가 실행 된 종료 (명령 줄 도구를 만드는)

  4. 4

    karaf 컨테이너의 OSGI 통합 테스트

  5. 5

    OSGi 컨테이너-Apache Karaf 내부의 Equinox 대 Apache Felix

  6. 6

    OpenSAML3 리소스가 OSGi 컨테이너에서 'default-config.xml'을 찾을 수 없습니다.

  7. 7

    Maven 프로젝트로 Karaf Osgi 컨테이너에 쉽게 배포하는 방법

  8. 8

    ByteBuddy의 필드 설정 검사가 너무 엄격합니까?

  9. 9

    Overlayfs / Squashfs가있는 LXC 컨테이너

  10. 10

    앱 + DB가있는 컨테이너

  11. 11

    Bytebuddy : 가로채는 고정 값의 get 메서드

  12. 12

    ByteBuddy 인터셉트 된 메서드가 호출되지 않음

  13. 13

    @Super로 bytebuddy의 개인 메서드 위임-가능합니까?

  14. 14

    다중 Postgresql 컨테이너가있는 다중 Odoo 컨테이너

  15. 15

    중앙 컨테이너가있는 전체 너비 배경색

  16. 16

    번들 OSGI를 설치하는 Apache ServiceMix

  17. 17

    개인 정적 최종 MethodHandle 필드가있는 ByteBuddy 계측 유형을 만들 수 있습니까?

  18. 18

    ByteBuddy에서 @ Advice.AllArguments를 사용하여 인수가없는 메서드를 가로 챌 수 있습니까?

  19. 19

    OSGi가 설치된 번들에 번들 리스너 추가

  20. 20

    이미지 부서 또는 컨테이너가있는 양식

  21. 21

    OSGi DS : 활성화 전에 setService가 호출되는 이유

  22. 22

    OSGi 컨테이너의 Jersey-Grizzly 서버 내 Rest Services에 대한 응답 개체 구성 (Jersey 1x를 사용한 CORS 오류 방지)

  23. 23

    OSGI 컨테이너 내에서 종속성 프로젝트에 대한 속성 파일을로드 할 수 없습니다.

  24. 24

    ByteBuddy에 TypeDescription.Generic을 적절한 java.lang.reflect.Type으로 변환하는 방법이 있습니까?

  25. 25

    이름에 숫자가있는 도커 컨테이너 정렬

  26. 26

    내 ByteBuddy 생성 클래스가 서로를 볼 수 없습니다.

  27. 27

    병이 OSGi 병인지 어떻게 테스트 할 수 있습니까?

  28. 28

    순서가있는 컨테이너와 순서가없는 컨테이너를 반복

  29. 29

    ByteBuddy 변환 중에 메서드를 늘리는 방법은 무엇입니까?

뜨겁다태그

보관