Наличие проблемы с настройкой и использованием перехватчика CXF весной. Я хочу регистрировать входящие запросы SOAP в базу данных для журнала аудита. У меня есть настройка, как показано ниже, но всякий раз, когда поступает входящий запрос SOAP, я получаю NPE, к которому обращается класс уровня сервиса. Из журнала видно, что контекст веб-приложения снова загружается, что приводит к нулевой ссылке для служебного компонента. Я взглянул на две записи - this и this - которые близки, и опробовали решение по первой ссылке, но не работали. Любая помощь приветствуется.@ Автозапуск не работает в перехватчике CXF + Весеннее приложение
Благодаря
перехватчик Код:
public class AuditLogInterceptor extends AbstractLoggingInterceptor {
private AuditLogService auditLogService;
@Autowired
public void setAuditLogService(AuditLogService auditLogService) {
this.auditLogService = auditLogService;
}
private void saveAuditLogEntry() {
// some more code ...
auditLogService.logRequest(logEntry);
}
CXF-servlet.xml
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
<!-- Add new endpoints for additional services you'd like to expose -->
<bean id="abstractLogInterceptor" abstract="true">
<property name="prettyLogging" value="true" />
</bean>
<bean class="com.xyz.interceptor.AuditLogInterceptor" id="logInInterceptor" parent="abstractLogInterceptor"/>
<jaxws:endpoint id="dataService" implementor="#masterDataService" address="/MasterDataService">
<jaxws:inInterceptors>
<ref bean="logInInterceptor" />
</jaxws:inInterceptors>
</jaxws:endpoint>
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext-resources.xml
classpath:/applicationContext-dao.xml
classpath:/applicationContext-service.xml
classpath*:/applicationContext.xml
/WEB-INF/applicationContext*.xml
/WEB-INF/cxf-servlet.xml
/WEB-INF/security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
У вас есть файл конфигурации bean, называемый 'cxf-servlet.xml', который импортирует файл с именем' cxf-servlet.xml'? Наверное, не причина ваших проблем, но определенно запутанная. – artbristol
Можете ли вы добавить выдержки из вашего web.xml и любых других файлов конфигурации пружин, которые у вас есть? Работает ли '@ Autowired' на других бобах? – artbristol
выше cxf-servlet.xml присутствует в моем веб-приложении, а cxf-servlet.xml, который включает в себя файл CXF. Добавление вопроса web.xml. И да, @Autowired отлично работает для других компонентов, таких как Spring MVC-контроллеры – Pragmatic