简体   繁体   English

Apache Cxf拦截器

[英]Apache Cxf Interceptor

I am using AbstractPhaseInterceptor(registered as InInterceptor) where i am validating the incoming SOAP Request before unmarshalling. 我正在使用AbstractPhaseInterceptor(注册为InInterceptor),在这里我在解组之前验证传入的SOAP请求。 If the validation fails, i ll generate a fault code and Falult info as response. 如果验证失败,我将生成一个故障代码和Falult信息作为响应。 I am able to get Fault Info but while throwing the exception, i get the below warning message. 我能够获取故障信息,但是在引发异常时,我得到以下警告消息。 Can it be avoided? 可以避免吗?

My Interceptor 我的拦截器

package de.jonashackt.tutorial;

import java.util.logging.Logger;

import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;

public class SoapInter extends AbstractPhaseInterceptor<Message> {

    private static final Logger LOG = Logger.getLogger(SoapInter.class.getName());

    public SoapInter() {
        super(Phase.RECEIVE);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void handleMessage(Message arg0) throws Fault {
            //throw new Fault(new NumberFormatException("error"));
        throw new Fault("Error", LOG);
    }

public void handleFault(Message arg0) {

super.handleFault(message);
XMLStreamWriter writer = (XMLStreamWriter)message.get("ORIGINAL_XML_WRITER");
if (writer != null)
{
message.setContent(XMLStreamWriter.class, writer);
}

}

} }

This is my config file 这是我的配置文件

package de.jonashackt.tutorial;

import java.util.Arrays;

import org.apache.cxf.Bus;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class WebServiceConfig {

    @Autowired
    private Bus bus;

    @Bean
    public Server  endpoint() {
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setAddress("/Hello");
        factory.setBus(bus);
        factory.setServiceBean(Arrays.<Object>asList(new HelloPortImpl()));
        factory.getInInterceptors().add(soap());
        return  factory.create();
    }

    @Bean
    public AbstractPhaseInterceptor<SoapMessage> soap() {
        return new SoapInter();
    }
}

oacxf.phase.PhaseInterceptorChain : Interceptor for { http://util.java/ }ArrayListService has thrown exception, unwinding now oacxf.phase.PhaseInterceptorChain:{ http://util.java/ } ArrayListService的拦截器已引发异常,现在展开

org.apache.cxf.interceptor.Fault: Error at de.jonashackt.tutorial.SoapInter.handleMessage(SoapInter.java:22) ~[classes/:na] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) ~[cxf-core-3.1.10.jar:3.1.10] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-core-3.1.10.jar:3.1.10] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:262) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet. org.apache.cxf.interceptor.Fault:de.jonashackt.tutorial.SoapInter.handleMessage(SoapInter.java:22)〜[classes /:na]在org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain。 java:308)〜[cxf-core-3.1.10.jar:3.1.10]在org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[cxf-core-3.1.10.jar: 3.1.10] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:262)[cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf .transport.servlet.ServletController.invokeDestination(ServletController.java:234)[cxf-rt-transports-http-3.1.10.jar:3.1.10]在org.apache.cxf.transport.servlet.ServletController.invoke(ServletController .java:208)[cxf-rt-transports-http-3.1.10.jar:3.1.10]在org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[cxf-rt- org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet上的transports-http-3.1.10.jar:3.1.10]。 java:180) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:223) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274) [cxf-rt-transports-http-3.1.10.jar:3.1.10] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilt java:180)[cxf-rt-transports-http-3.1.10.jar:3.1.10]在org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[cxf-rt-transports -http-3.1.10.jar:3.1.10],位于org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:223)[cxf-rt-transports-http-3.1.10.jar:3.1 .10]在javax.servlet.http.HttpServlet.service(HttpServlet.java:622)[tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.cxf.transport.servlet.AbstractHTTPServlet中。 service(AbstractHTTPServlet.java:274)[cxf-rt-transports-http-3.1.10.jar:3.1.10]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)[tomcat嵌入-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)[tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilt上的org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[tomcat-embed-websocket-8.0.32.jar:8.0.32] erChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilt erChain.internalDoFilter(ApplicationFilterChain.java:240)[tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)[tomcat嵌入-core-8.0.32.jar:8.0.32],位于org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE ]在org.apache.catalina.core.ApplicationFilterChain的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]中。 internalDoFilter(ApplicationFilterChain.java:240)[tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)[tomcat-embed-core -8.0.32.jar:8.0.32],位于org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] org.springframework.web.filter.OncePerRequestFilter.doFilt er(OncePerRequestFilter.java:107) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodi er(OncePerRequestFilter.java:107)[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE],位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)[tomcat嵌入-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)[tomcat-embed-core-8.0.32.jar:8.0.32] at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:107)[位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)的[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] [tomcat-embed-core -org.apache.catalina.core.ApplicationFilterChain.doFilter(-ApplicationFilterChain.java:207)中的-8.0.32.jar:8.0.32] [org.org中的tomcat-embed-core-8.0.32.jar:8.0.32]。 springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodi ngFilter.java:121) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.valves ngFilter.java:121)[spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)[spring-web-4.2 .5.RELEASE.jar:4.2.5.RELEASE],位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)[tomcat-embed-core-8.0.32.jar:8.0.32] org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.org.org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)[tomcat-embed-core-8.0.32.jar:8.0.32] java:212)[tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)[tomcat-embed-core-8.0.32 .jar:8.0.32],位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)[tomcat-embed-core-8.0.32.jar:8.0.32],位于org.apache.catalina。 org.apache.catalina.valves上的core.StandardHostValve.invoke(StandardHostValve.java:141)[tomcat-embed-core-8.0.32.jar:8.0.32] .ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-embed-core-8.0.32.jar:8.0.32] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Thr .ErrorReportValve.invoke(ErrorReportValve.java:79)[tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)[tomcat- org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)的embed-core-8.0.32.jar:8.0.32] [tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)[tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol .java:672)[tomcat-embed-core-8.0.32.jar:8.0.32]在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)[tomcat-embed- org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)的[core-8.0.32.jar:8.0.32] [tomcat-embed-core-8.0.32.jar:8.0。 32] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Thr eadPoolExecutor.java:617) [na:1.8.0_65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.32.jar:8.0.32] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65] eadPoolExecutor.java:617)[na:1.8.0_65]在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.0.32.jar:8.0 .32],位于java.lang.Thread.run(Thread.java:745)[na:1.8.0_65]

What is the issue? 有什么问题 Can it be avoided? 可以避免吗?

CXF uses by default java.util.logging You need to configure the logging levels in your logging.properties to not show messages WARNING messages, or disable Console. CXF默认使用java.util.logging您需要在logging.properties配置日志记录级别,以不显示消息WARNING消息,或禁用控制台。 See CXF logging documentation 请参阅CXF日志记录文档

For example define a logging.properties file with this content 例如,使用此内容定义logging.properties文件

.level = SEVERE
java.util.logging.ConsoleHandler.level = SEVERE

And the following system property 和以下系统属性

-Djava.util.logging.config.file="path/to/your/logging.properties"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM