elastic / elastic/apm-agent-java

Add Oracle WebLogic 14.1.2 support

Aperta
#4,549 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
agent-java
Lingua principale
Java
Stelle
594
Fork
338
Merge medio
1g 13h
PR unite (30g)
25

Descrizione

## Is your feature request related to a problem?

The [supported technologies matrix](https://www.elastic.co/docs/reference/apm/agents/java/supported-technologies) lists Oracle WebLogic 12.2 as the only version covered by the integration test suite. On **WebLogic 14.1.2.0.0** the agent cannot reach APM Server at all. Reverting back to 12c fixes the issue.

The agent starts and the tracer reaches `RUNNING`, then every outbound HTTP call fails because WebLogic's own HTTP client returns a null socket factory:

```
WARN co.elastic.apm.agent.report.ApmServerHealthChecker - Elastic APM server http://:8200/ is not available (Cannot invoke "javax.net.SocketFactory.createSocket()" because the return value of "weblogic.net.http.HttpClient.getSocketFactory()" is null)
java.lang.NullPointerException: Cannot invoke "javax.net.SocketFactory.createSocket()" because the return value of "weblogic.net.http.HttpClient.getSocketFactory()" is null
at weblogic.net.http.HttpClient.openServer(HttpClient.java:403) ~[com.oracle.weblogic.net.jar:14.1.2.0]
at weblogic.net.http.HttpClient.New(HttpClient.java:329) ~[com.oracle.weblogic.net.jar:14.1.2.0]
at weblogic.net.http.HttpURLConnection.connect(HttpURLConnection.java:368) ~[com.oracle.weblogic.net.jar:14.1.2.0]
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:770) ~[com.oracle.weblogic.net.jar:14.1.2.0]
at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:42) ~[com.oracle.weblogic.net.jar:14.1.2.0]
at co.elastic.apm.agent.report.HttpUtils.consumeAndClose(HttpUtils.java:62) ~[elastic-apm-agent-1.56.0.jar:1.56.0]
at co.elastic.apm.agent.report.ApmServerClient.executeForAllUrls(ApmServerClient.java:306) ~[elastic-apm-agent-1.56.0.jar:1.56.0]
at co.elastic.apm.agent.report.ApmServerHealthChecker.call(ApmServerHealthChecker.java:67) ~[elastic-apm-agent-1.56.0.jar:1.56.0]
```

Two things distinguish this from prior reports:

- It occurs on **plain HTTP**, not HTTPS.
- It is a **different failure** from #2409, which was an HTTPS `ClassNotFoundException` for `weblogic.security.SSL.jsseadapter.JaSSLContextImpl`. That was fixed by #3870, and 1.56.0 includes the fix, so the socket factory returning `null` is not covered by it.

Remaining on 12.2 is not always an available option.

## Describe the solution you'd like

Add **Oracle WebLogic 14.1.2** to the tested matrix, so the agent connects to APM Server on that version without workarounds.

## Describe alternatives you've considered

- **`-DUseSunHttpHandler=true`** makes WebLogic defer to the JDK's Sun HTTP handler instead of its own, bypassing the failing class. Reported in earlier WebLogic cases as a global flag that also alters WebLogic's own HTTP behaviour, so a trade-off rather than a clean workaround. Untested against this failure.
- **`elastic.apm.delay_agent_premain_ms`** was tried during the earlier WebLogic investigation and did not reliably help there.
- **HTTPS rather than HTTP.** A distinct WebLogic code path, and the one agent-side defect known to affect it (#2409) is fixed in 1.56.0. Untested here, and gated on the deployment having TLS available.

## Additional context

Environment where this was reproduced:

| | |
|---|---|
| WebLogic | 14.1.2.0.0, production mode, managed server started via NodeManager |
| JDK | Oracle JDK 21 |
| Agent | 1.56.0 |
| APM Server | self-managed, plain HTTP |
| OS | Linux (RHEL 8) |

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con la matrice delle tecnologie supportate e con il problema HTTP di WebLogic descritto nell’issue, confrontando la copertura di integrazione esistente della versione 12.2 con WebLogic 14.1.2. Riproduci il problema con WebLogic 14.1.2.0.0, Oracle JDK 21, agent 1.56.0 e HTTP semplice; il lavoro è completato quando l’agente raggiunge APM Server senza l’errore „null socket-factory failure“ e la versione è coperta dai test di integrazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
55/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.