2017-03-12 6 views
0

나는 언 마샬링 전에 들어오는 SOAP 요청의 유효성을 검사하고있는 AbstractPhaseInterceptor (InInterceptor로 등록)를 사용 중이다. 유효성 검사가 실패하면 오류 코드와 Falult 정보를 응답으로 생성합니다. 오류 정보를 얻을 수 있지만 예외를 던지는 동안 아래 경고 메시지가 표시됩니다. 그것을 피할 수 있습니까?아파치 Cxf 요격 자

내 인터셉터

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); 
} 

} 

}

oacxf.phase.PhaseInterceptorChain 내 config 파일

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(); 
    } 
} 
입니다 : 인터셉터가 { http://util.java/에 대한} ArrayListService가 던진 예외 풀기 now

org.apache.cxf.interceptor.Fault : de.jonashackt.tutorial.SoapInter.handleMessage (SoapInter.java:22)에서 오류 ~ [클래스/: 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] 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.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]에있는 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 ApplicationFilterChain.java : 292) 에있는 [tomcat-embed-core-8.0.32.jar : 8.0.32] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:292) org.apache.catalina.core.ApplicationFilterChain.doFilter ApplicationFilterChain.java:207) 에서 [tomcat-embed-core-8.0.32.jar : 8.0.32] 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.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar : 8.0.32] at org.apache. (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] 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] 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.doFi lter (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] org.apache.catalina.core.Applicat ionFilterChain.internalDoFilter (ApplicationFilterChain.java:240) 에있는 [tomcat-embed-core-8.0.32.jar : 8.0.32] org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:207) [ 바람둥이 embed-core-8.0.32.jar : 8.0.32] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:121) [spring-web-4.2.5.RELEASE.jar : 4.2.5.RELEASE] org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) [스프링 웹 4.2.5.RELEASE.jar에서 : 4.2.5.RELEASE] 조직에서. apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.32.jar : 8.0.32] at org.apa che35.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:207) 에있는 [Tomcat-embed-core-8.0.32.jar : 8.0.32] org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve. 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] 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.ErrorReportValve.invoke 오류 orReportValve.java:79) 에서 [tomcat-embed-core-8.0.32.jar : 8.0.32] 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] 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] org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java : 1500) 에서 [tomcat-embed-core-8.0.32.jar : 8.0.32] org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) [tomcat-에서에 [없음 : 1.8.0_65]에서 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)에 embed-core-8.0.32.jar : 8.0.32] java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) [없음 : 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]

문제점은 무엇입니까? 그것을 피할 수 있습니까?

+0

시도와 logging.properties 파일을 정의를 참조하십시오. http://stackoverflow.com/questions/16072515/how-can-i-turn-off-extra-logging – pedrofb

+0

@pedrofb 안녕하세요 .. 내 설정 파일도 업데이트했습니다. 예를 들어 loggine을 끄는 방법을 알려 주실 수 있습니까? – user6543599

답변

0

CXF는 기본적으로 다음을 사용합니다. logging.properties의 로깅 수준을 구성하여 메시지 WARNING 메시지를 표시하지 않거나 콘솔을 사용하지 않도록 설정해야합니다. CXF logging documentation

예를 들어이 내용

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

다음과 같은 시스템 프로퍼티 로깅을 swith를하는

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

handleFault를 사용해 보았는데, 여전히 같은 문제에 직면했습니다. 업데이트 된 게시물을 찾으십시오 – user6543599

+0

logging.properties를 추가하고 시스템 속성도 변경했습니다. 여전히 동일한 문제가 발생했습니다 – user6543599

+0

로그를 검사하고 경고 메시지가 제거됩니다. java.util.logging을 사용하고 있습니까? 시스템 속성이 올바르게 설정되었는지 확인하십시오. 문제가 있습니다. – pedrofb