0

我正在尝试在 Websphere Liberty Profile 8.5.5 上启动 SOLR 4.3.1。我将 solr.war 放入 dropins 文件夹,并将日志记录 jar(log4j-1.2.16.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar)添加为全局库。在 solr 启动期间,会引发以下异常:

java.lang.NullPointerException: 
at com.ibm.websphere.ras.TruncatableThrowable.getStackTrace(TruncatableThrowable.java:247)
at [internal classes]
at com.ibm.ws.logging.internal.impl.BaseTraceFormatter.formatMessage(BaseTraceFormatter.java:234)
at com.ibm.ws.logging.internal.impl.BaseTraceFormatter.formatMessage(BaseTraceFormatter.java:191)
at com.ibm.ws.logging.internal.impl.BaseTraceService.publishLogRecord(BaseTraceService.java:447)
at com.ibm.ws.logging.internal.impl.LoggerHandlerManager$BaseTrLoggerHandler.publish(LoggerHandlerManager.java:69)
at java.util.logging.Logger.log(Unknown Source)
at com.ibm.ws.logging.internal.WsLogger.log(WsLogger.java:158)
at com.ibm.ws.logging.internal.WsLogger.logp(WsLogger.java:354)
at com.ibm.ws.webcontainer.webapp.WebApp.logMessage(WebApp.java:2981)
at [internal classes]
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:165)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:155)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
at [internal classes]

有人在 Websphere Liberty 上成功使用 SOLR 吗?

4

3 回答 3

0

我在 Liberty(8.5.5 之前的版本)上成功运行了 solr:

a)我在apps目录中提取了war文件,而不是把它放在dropins中,例如serverDir/apps/solr.war

b) 我在 server.xml 中定义了应用程序:

<application id="solr" location="solr.war" />

c) 我启用了 jsp 和 jndi 功能:

<featureManager>
    <feature>jsp-2.2</feature>
    <feature>jndi-1.0</feature>
</featureManager>

d) 我没有做任何事情来添加我记得的 slf4j 罐子。我绝对没有创建或定义任何全局库。我的 WEB-INF/lib 包含:

./WEB-INF/lib/slf4j-jdk14-1.6.1.jar
./WEB-INF/lib/jcl-over-slf4j-1.6.1.jar
./WEB-INF/lib/log4j-over-slf4j-1.6.1.jar
./WEB-INF/lib/slf4j-api-1.6.1.jar

我弄乱了过滤器和东西,它运行没有问题。正如霍莉所说,这里有一个你必须发现的根本原因,她的解决方法将允许你这样做。

于 2013-08-07T10:15:44.537 回答
0

我刚刚在 Liberty 中运行 SOLR 4.9.0。我必须做的一些步骤: 1. 将 solr.war 从 \example\webapps 提取到 Liberty 服务器应用程序目录作为 solr.war 2. 修改 server.xml

<application id="solr" location="solr.war" />

<featureManager>
    <feature>jsp-2.2</feature>
    <feature>jndi-1.0</feature>
</featureManager>
  1. 按照说明下载http://www.slf4j.org/dist/slf4j-1.6.6.zip以禁用https://wiki.apache.org/solr/SolrLogging上的日志记录, 将 .jar 之后复制到 web-inf 目录

    ./WEB-INF/lib/slf4j-jdk14-1.6.1.jar ./WEB-INF/lib/jcl-over-slf4j-1.6.1.jar ./WEB-INF/lib/log4j-over-slf4j- 1.6.1.jar ./WEB-INF/lib/slf4j-api-1.6.1.jar

  2. 将默认端口从 9080 更改为 8983,以便更轻松地使用加载示例

我也在运行 Java 8 并使用 eclipse 来控制我的 Liberty 配置文件

于 2014-07-14T16:39:52.397 回答
0

看起来有些东西正在尝试记录一条具有 Throwable 类型参数的消息,但该 Throwable 对象已覆盖 getStackTrace() 以返回 null。查看 messages.log 的内容会很有用 - 应该显示未处理的日志,包括 Throwable 参数是什么类。

作为一种解决方法,禁用控制台日志记录应该可以防止该问题:

<logging consoleLogLevel="OFF"/>

messages.log 文件中仍将提供完整的日志。一旦您阻止了 Liberty 的此堆栈跟踪,您将需要使用 messages.log 文件来识别从 Solr 中抛出的异常并找出如何修复该根本原因。

于 2013-07-17T12:58:39.670 回答