Skip to content

Commit 48d4c13

Browse files
zackman0010laurit
andauthored
Enable instrumentation of Spring EJB clients (#11104)
Co-authored-by: Lauri Tulmin <[email protected]>
1 parent ebc38b4 commit 48d4c13

File tree

8 files changed

+340
-183
lines changed

8 files changed

+340
-183
lines changed

instrumentation/spring/spring-rmi-4.0/javaagent/build.gradle.kts

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ dependencies {
2020
library("org.springframework:spring-context:4.0.0.RELEASE")
2121
library("org.springframework:spring-aop:4.0.0.RELEASE")
2222
testLibrary("org.springframework.boot:spring-boot:1.1.0.RELEASE")
23+
testImplementation("org.apache.tomee:openejb-core:8.0.16")
24+
testImplementation("org.apache.tomee:openejb-ejbd:8.0.16")
25+
testImplementation("org.apache.tomee:openejb-client:8.0.16")
2326

2427
// rmi remoting was removed in spring 6
2528
latestDepTestLibrary("org.springframework:spring-context:5.+") // documented limitation
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.spring.rmi.v4_0;
7+
8+
import com.google.auto.service.AutoService;
9+
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesBuilder;
10+
import io.opentelemetry.javaagent.extension.ignore.IgnoredTypesConfigurer;
11+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
12+
13+
@AutoService(IgnoredTypesConfigurer.class)
14+
public class SpringRmiIgnoredTypesConfigurer implements IgnoredTypesConfigurer {
15+
16+
@Override
17+
public void configure(IgnoredTypesBuilder builder, ConfigProperties config) {
18+
// The Spring EJB classes are ignored in the AdditionalLibraryIgnoredTypesConfigurer, but
19+
// are required when utilizing Spring's local-slsb and remote-slsb to access EJBs through RMI.
20+
builder.allowClass("org.springframework.ejb.access.");
21+
}
22+
}

instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/client/ClientInstrumentation.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.javaagent.instrumentation.spring.rmi.v4_0.client;
77

8+
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass;
89
import static io.opentelemetry.javaagent.instrumentation.spring.rmi.v4_0.SpringRmiSingletons.clientInstrumenter;
910
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
1011
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -25,7 +26,8 @@ public class ClientInstrumentation implements TypeInstrumentation {
2526

2627
@Override
2728
public ElementMatcher<TypeDescription> typeMatcher() {
28-
return named("org.springframework.remoting.rmi.RmiClientInterceptor");
29+
return named("org.springframework.remoting.rmi.RmiClientInterceptor")
30+
.or(extendsClass(named("org.springframework.ejb.access.AbstractSlsbInvokerInterceptor")));
2931
}
3032

3133
@Override

instrumentation/spring/spring-rmi-4.0/javaagent/src/test/groovy/SpringRmiTest.groovy

-182
This file was deleted.

0 commit comments

Comments
 (0)