Skip to content

Commit cafbeb3

Browse files
authored
Merge pull request #2 from newrelic-experimental/serverTweak
Server tweak
2 parents f6f9612 + 88b29a6 commit cafbeb3

File tree

59 files changed

+1020
-257
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1020
-257
lines changed

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ include 'webmethods-isclient-9.x'
44
include 'webmethods-b2b-server-10.x'
55
include 'webmethods-b2b-server-9.x'
66
include 'webmethods-adapter'
7+
include 'softwareag-adapter'
78
include 'webmethods-dispatch'
89
include 'webmethods-jms'
910
include 'webmethods-sap'

softwareag-adapter/build.gradle

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
// Build.gradle generated for instrumentation module webmethods-adapter
3+
4+
apply plugin: 'java'
5+
6+
dependencies {
7+
// Declare a dependency on each JAR you want to instrument
8+
// Example:
9+
// implementation 'javax.servlet:servlet-api:2.5'
10+
11+
// New Relic Java Agent dependencies
12+
implementation 'com.newrelic.agent.java:newrelic-agent:6.4.0'
13+
implementation 'com.newrelic.agent.java:newrelic-api:6.4.0'
14+
implementation fileTree(include: ['*.jar'], dir: 'lib')
15+
implementation fileTree(include: ['*.jar'], dir: '../libs')
16+
implementation fileTree(include: ['*.jar'], dir: '../test-lib')
17+
}
18+
19+
jar {
20+
manifest {
21+
attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.softwareag-adapter'
22+
attributes 'Implementation-Vendor': 'New Relic Labs'
23+
attributes 'Implementation-Vendor-Id': 'com.newrelic.labs'
24+
attributes 'Implementation-Version': 1.0
25+
}
26+
}
27+
28+
verifyInstrumentation {
29+
// Verifier plugin documentation:
30+
// https://github.com/newrelic/newrelic-gradle-verify-instrumentation
31+
// Example:
32+
// passes 'javax.servlet:servlet-api:[2.2,2.5]'
33+
// exclude 'javax.servlet:servlet-api:2.4.public_draft'
34+
}
7.28 KB
Binary file not shown.

webmethods-adapter/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
apply plugin: 'java'
55

66
dependencies {
7-
// Declare a dependency on each JAR you want to instrument
8-
// Example:
9-
// implementation 'javax.servlet:servlet-api:2.5'
7+
implementation group: 'javax.resource', name: 'javax.resource-api', version: '1.7.1'
8+
109

1110
// New Relic Java Agent dependencies
1211
implementation 'com.newrelic.agent.java:newrelic-agent:6.4.0'

webmethods-b2b-server-10.x/src/main/java/com/newrelic/instrumentation/webmethods/b2bserver/WebMethodsUtils.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.newrelic.agent.service.ServiceFactory;
1111
import com.newrelic.api.agent.Config;
1212
import com.newrelic.api.agent.NewRelic;
13+
import com.wm.driver.comm.b2b.WmMessage;
14+
import com.wm.io.comm.IMessage;
1315
import com.wm.lang.flow.FlowElement;
1416
import com.wm.lang.flow.FlowRoot;
1517
import com.wm.lang.flow.FlowState;
@@ -77,6 +79,16 @@ public static String[] getMetricName(String... names) {
7779
return namesArray;
7880
}
7981

82+
public static void addIMessage(Map<String,Object> attributes, IMessage message) {
83+
if(message != null) {
84+
addValue(attributes, "IMessage-Command", message.getCommand());
85+
if(message instanceof WmMessage) {
86+
addValue(attributes, "IMessage-ContentType", ((WmMessage)message).getContentType());
87+
}
88+
addValue(attributes, "IMessage-UUID", message.getUUID());
89+
}
90+
}
91+
8092
private static void processConfig(Config config) {
8193
init();
8294
String s = config.getValue(SERVICE_IGNORE);

webmethods-b2b-server-10.x/src/main/java/com/wm/app/b2b/server/HTTPDispatch.java

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.wm.app.b2b.server;
2+
3+
import com.newrelic.api.agent.NewRelic;
4+
import com.newrelic.api.agent.Trace;
5+
import com.newrelic.api.agent.Transaction;
6+
import com.newrelic.api.agent.TransactionNamePriority;
7+
import com.newrelic.api.agent.TransportType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
import com.newrelic.instrumentation.webmethods.b2bserver.HTTPHeaderWrapper;
11+
import com.wm.net.HttpHeader;
12+
13+
@Weave
14+
public abstract class HTTPDocHandler {
15+
16+
@Trace(dispatcher = true)
17+
public boolean process(ProtocolState state) {
18+
String requestURL = state.getRequestUrl();
19+
if(requestURL != null && !requestURL.isEmpty()) {
20+
NewRelic.getAgent().getTracedMethod().addCustomAttribute("RequestURL", requestURL);
21+
}
22+
Transaction transaction = NewRelic.getAgent().getTransaction();
23+
if(!transaction.isWebTransaction()) {
24+
transaction.convertToWebTransaction();
25+
}
26+
HttpHeader header = state.getRequestHeader();
27+
if(header != null) {
28+
HTTPHeaderWrapper wrapper = new HTTPHeaderWrapper(header);
29+
transaction.acceptDistributedTraceHeaders(TransportType.HTTP, wrapper);
30+
}
31+
transaction.setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "HTTPDocHandler", "HTTPDocHandler");
32+
NewRelic.getAgent().getTracedMethod().addCustomAttribute("RequestURI", state.getHttpRequestUrl());
33+
return Weaver.callOriginal();
34+
}
35+
36+
}

webmethods-b2b-server-10.x/src/main/java/com/wm/app/b2b/server/HTTPHandler.java

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.wm.app.b2b.server;
2+
3+
import com.newrelic.api.agent.NewRelic;
4+
import com.newrelic.api.agent.Trace;
5+
import com.newrelic.api.agent.Transaction;
6+
import com.newrelic.api.agent.TransactionNamePriority;
7+
import com.newrelic.api.agent.TransportType;
8+
import com.newrelic.api.agent.weaver.Weave;
9+
import com.newrelic.api.agent.weaver.Weaver;
10+
import com.newrelic.instrumentation.webmethods.b2bserver.HTTPHeaderWrapper;
11+
import com.wm.net.HttpHeader;
12+
13+
@Weave
14+
public abstract class HTTPMessageHandler {
15+
16+
@Trace(dispatcher = true)
17+
public boolean process(ProtocolState state) {
18+
String requestURL = state.getRequestUrl();
19+
if(requestURL != null && !requestURL.isEmpty()) {
20+
NewRelic.getAgent().getTracedMethod().addCustomAttribute("RequestURL", requestURL);
21+
}
22+
Transaction transaction = NewRelic.getAgent().getTransaction();
23+
if(!transaction.isWebTransaction()) {
24+
transaction.convertToWebTransaction();
25+
}
26+
transaction.setTransactionName(TransactionNamePriority.FRAMEWORK_HIGH, false, "HttpHandler", "HTTPMessageHandler");
27+
HttpHeader header = state.getRequestHeader();
28+
if(header != null) {
29+
HTTPHeaderWrapper wrapper = new HTTPHeaderWrapper(header);
30+
transaction.acceptDistributedTraceHeaders(TransportType.HTTP, wrapper);
31+
}
32+
NewRelic.getAgent().getTracedMethod().addCustomAttribute("RequestURI", state.getHttpRequestUrl());
33+
return Weaver.callOriginal();
34+
}
35+
}

0 commit comments

Comments
 (0)