当前位置: 首页 > 知识库问答 >
问题:

添加SSL配置后log4j不能与Jetty一起工作

杭英杰
2023-03-14

我试图使用SSL运行一个Jetty(v9)服务器(这样访问只能通过HTTPS进行)。使用普通HTTP时,一切都运行良好。然后我更改了我的launcher类,所以它看起来如下所示:

PropertyConfigurator.configure("war/WEB-INF/log4j.properties");
Server server = new Server();

WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar("war");
server.setHandler(webapp);

HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());

SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("keystore.jks");
sslContextFactory.setKeyStorePassword("<password>");
sslContextFactory.setKeyManagerPassword("<password>");

ServerConnector sslConnector = new ServerConnector(server,
        new SslConnectionFactory(sslContextFactory, "http/1.1"),
        new HttpConnectionFactory(https));
sslConnector.setPort(443);
server.setConnectors(new Connector[] { sslConnector });

LOG.info("Starting server on port 443");
server.start();
server.join();

我还运行这个来生成一个密钥库文件:

keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048
log4j:ERROR A "org.apache.log4j.RollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [sun.misc.Launcher$AppClassLoader@178b0f9] whereas object of type 
log4j:ERROR "org.apache.log4j.RollingFileAppender" was loaded by [WebAppClassLoader=8317419@7ee9eb].
log4j:ERROR Could not instantiate appender named "filer".
log4j:WARN No appenders could be found for logger (ie.search4less.quickbooks.servlet.AppServlet).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
static {
    PropertyConfigurator.configure("war/WEB-INF/log4j.properties");
}
log4j.rootLogger=INFO, filer

log4j.appender.filer=org.apache.log4j.RollingFileAppender
log4j.appender.filer.layout=org.apache.log4j.PatternLayout
log4j.appender.filer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] %-5p %c %x - %m%n
log4j.appender.filer.File=./logs/quickbooks.log
log4j.appender.filer.MaxFileSize=1MB
log4j.appender.filer.MaxBackupIndex=9
log4j.appender.filer.append=true

正如我所说的,在我将新的SSL配置代码添加到服务器启动器类之前,一切都很好,但我不明白哪里出了问题。

共有1个答案

程毅
2023-03-14

我让它起作用了。这个问题实际上与SSL配置无关。在添加这些SSL配置更改之间,我将lib目录移动到WEB-INF中,其中包含了我的所有依赖项(包括log4j和slf4j jar)。这引起了某种冲突。把他们从那里移走就解决了。

 类似资料:
  • 我使用Liferay MVC框架创建了一个简单的portlet,并为portlet设置添加了一个ConfigurationActionImpl类和Configuration.jsp。我已经使用标记来显示标签。 没有PACL就可以正常工作。 使用PACL时,它不会显示映射到属性文件中键的值。它显示的钥匙是完好无损的。与其他PACL错误一样,控制台中不会报告任何错误。 这两行是在我部署portlet时

  • 我的log4j2中有此配置。xml文件: 我将此文件放在src/resources中,并遵循以下指南:guide,但当我运行项目时,出现以下错误:

  • 我在为Spring Cloud Config服务器定义多个基于svn的配置存储库时遇到了问题。我已经建立了三个配置库。一个用于开发,单位和生产。我已经将默认值设置为development(通过设置spring.cloud.config.server.svn.uri=development repo uri)。但是,每当我向配置服务器的RESTendpoint发出GET请求时,无论我请求哪个概要文件

  • 我正在尝试配置我的jetty环境,使其能够有一个安全的连接。 我运行了官方jetty文档中描述的步骤:https://www.eclipse.org/jetty/documentation/9.4.31.v20200723/jetty-ssl-distribution.html。但没有成功.. 重新创建的步骤: java-jar start.jar--create-startd--add-to-s

  • 错误:org.apache.hive.service.cli.hivesqlexception:处理语句时出错:失败:执行错误,从org.apache.hive.service.cli.operation.operation.toSqlexception(operation.java:380)(org.apache.hive.service.cli.operation.sqloperation.r

  • 我已经为我的web服务器(Apache)和WebSocket服务器(PHPWS)安装了let's Encypt(https://letsencrypt.org/)证书。问题是SSL WebSocket在Firefox上运行良好,但在Chrome、Chromium和Opera上却无法运行。我以前尝试过自签名证书和安全WebSocket在Chrome和Chromium中工作。 我的网页位于https: