在我的应用程序中,一旦我添加了SOAP接口,它就会尝试使用Logback
。由于我们没有Logback
,它正在抛出ClassNotFound
的异常。
我添加了以下依赖项:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.12</version>
</dependency>
我有以下日志的依赖性。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
我添加了以下配置来配置端点。
@Configuration
public class WebServiceConfig {
@Autowired
private ReservationService reservationService;
@Bean
public Endpoint reservationEndpoint(){
Endpoint endpoint = new EndpointImpl(getBus(), reservationService);
endpoint.publish("/Reservation");
return endpoint;
}
@Bean
public Bus getBus() {
return new SpringBus();
}
}
在此之后,我得到以下错误:
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.joran.JoranConfigurator
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
我不知道它是如何使用Logback
的。此外,我将META-INF/cxf/org.apache.cxf.Logger
配置为以下值:org.apache.cxf.common.logging.Slf4jLogger
。尽管如此,它仍在使用Logback
。早些时候,我的应用程序使用Log4j2
。我想继续使用现有的日志记录系统。
在进一步的调试中,我发现在运行时使用org.apache.cxf.common.logging.Slf4jLogger
属性,我们可以控制日志记录类。我尝试了org.slf4j.core.Logger
和log4j2类。他们面临着"没有这样的方法例外"的错误。
我想解决:
- 如何强制应用程序使用现有的日志系统
- 即使它需要
Logback
依赖,如何使用Log4j2
添加了对所有春季启动程序depenency的排除,而不仅仅是对web
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>