Skip to content

Add Oracle WebLogic 14.1.2 support #4549

Description

Is your feature request related to a problem?

The supported technologies matrix 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://<apm-server>: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:

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 (Weblogic exception on agent startup : Class not Found weblogic.security.SSL.jsseadapter.JaSSLContextImpl #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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions