0

我们在我们的 WebSphere Application / WebSphere Commerce 系统上安装了 NewRelic java 代理,在 NewRelic 日志中我们看到:

Sep 3, 2013 22:47:53 -0400 NewRelic 14 INFO: The data collector is temporarily unavailable. This can happen periodically. In the event that availability of our servers is not restored after a period of time, then please report this to New Relic. java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
    at javax.net.ssl.DefaultSSLSocketFactory.a(SSLSocketFactory.java:11)
    at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:6)
    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:161)
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:36)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:390)
    at com.ibm.net.ssl.www2.protocol.https.b.getResponseCode(b.java:75)
    at com.newrelic.agent.transport.DataSenderImpl.connectAndSend(DataSenderImpl.java:550)
    at com.newrelic.agent.transport.DataSenderImpl.send(DataSenderImpl.java:600)
    at com.newrelic.agent.transport.DataSenderImpl.invoke(DataSenderImpl.java:480)
    at com.newrelic.agent.transport.DataSenderImpl.invokeNoRunId(DataSenderImpl.java:475)
    at com.newrelic.agent.transport.DataSenderImpl.getRedirectHost(DataSenderImpl.java:203)
    at com.newrelic.agent.transport.DataSenderImpl.connect(DataSenderImpl.java:193)
    at com.newrelic.agent.RPMService.launch(RPMService.java:194)
    at com.newrelic.agent.rpm.RPMConnectionServiceImpl$RPMConnectionTask.attemptConnection(RPMConnectionServiceImpl.java:301)
    at com.newrelic.agent.rpm.RPMConnectionServiceImpl$RPMConnectionTask.access$1100(RPMConnectionServiceImpl.java:101)
    at com.newrelic.agent.rpm.RPMConnectionServiceImpl$RPMConnectionTask$3.run(RPMConnectionServiceImpl.java:235)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:452)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:328)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:161)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:109)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:191)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:215)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
    at java.lang.Thread.run(Thread.java:738)
Caused by: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
    at javax.net.ssl.SSLJsseUtil.b(SSLJsseUtil.java:125)
    at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:3)
    at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:41)
    at javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:46)
    at com.ibm.net.ssl.www2.protocol.https.b.<init>(b.java:26)
    at com.ibm.net.ssl.www2.protocol.https.Handler.openConnection(Handler.java:1)
    at com.ibm.net.ssl.www2.protocol.https.Handler.openConnection(Handler.java:5)
    at java.net.URL.openConnection(URL.java:957)
    at com.newrelic.agent.transport.DataSenderImpl.createConnection(DataSenderImpl.java:676)
    at com.newrelic.agent.transport.DataSenderImpl.connectAndSend(DataSenderImpl.java:540)
    ... 18 more

似乎有一些关于如何更新基于 Eclipse 的 IDE 环境以在其他情况下克服此错误的文档,但没有特定于 NewRelic 的文档。有没有人在此之前看到过可以提供有关如何解决此问题的建议?

4

4 回答 4

1

New Relics Java 代理的下一个版本应该可以在不更改任何配置的情况下运行。对于 2.21.X 及更早版本,请在 support.newrelic.com 提交支持请求

于 2013-09-09T18:22:23.810 回答
0

我经历了同样的事情。正如您可能从 Robban 喜欢的文章中收集到的那样,WebSphere 在 SSLConnectionFactory 中存在一些限制,因此退出修复将只是编辑newrelic.yml并配置:

# The agent communicates with New Relic via https by
# default.  If you want to communicate with newrelic via http,
# then turn off SSL by setting this value to false.
# This work is done asynchronously to the threads that process your
# application code, so response times will not be directly affected
# by this change.
# Default is true.
ssl: false

祝你好运。

于 2013-10-30T18:01:56.653 回答
0

阅读并查看此出版物是否给您提示:

http://www-01.ibm.com/support/docview.wss?uid=swg21584437

于 2013-09-04T07:24:30.543 回答
0

New Relic 的 Java 代理 3.0.0 或更高版本应该可以完全解决这个问题,无需任何自定义配置,当然也无需关闭 SSL!发行说明。

于 2013-10-31T18:50:51.320 回答