我正在使用apache CXF(Spring启动)来开发我的肥皂服务器。在这里,我需要在我的肥皂故障拦截器中记录故障消息,就像在任何肥皂客户端中显示的那样(例如:肥皂UI)。我如何在我的故障拦截器中记录相同的输出?现在它只是显示异常详细信息
输入
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<sayHello xmlns="http://service.sample.com/">
<GreetingsRequest xmlns="">test</GreetingsRequest>
</sayHello>
</Body>
</Envelope>
输出(在肥皂客户端中显示)
UserNotfindException是代码中抛出的自定义异常
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Fault occurred while processing.</faultstring>
<detail>
<ns1:UserNotFoundException xmlns:ns1="http://service.sample.com/">
<user xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://service.sample.com/" xsi:type="ns2:user">
<userId>U-123</userId>
<username>TestUser</username>
</user>
</ns1:UserNotFoundException>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
我的定制拦截器代码
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.Phase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CustomSoapFaultInterceptor extends AbstractSoapInterceptor{
private static final Logger logger = LoggerFactory.getLogger(CustomSoapFaultInterceptor.class);
public CustomSoapFaultInterceptor() {
super(Phase.PRE_STREAM);
}
@Override
public void handleMessage(SoapMessage soapMessage) throws Fault {
Fault fault = (Fault) soapMessage.getContent(Exception.class);
Throwable faultCause = fault.getCause();
String faultMessage = fault.toString();
logger.error("Test Error",fault);
}
}
您可以使用集成的日志记录设施:https://cxf.apache.org/docs/message-logging.html
如果您需要扩展代码,可以在GitHub上使用该代码:https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java
我使用camel和cxf组件从Web服务中获取一些数据。在某些情况下,Web服务返回标准的soap:fault。我有下一个步骤: 阅读cxf和camel邮件列表中的类似问题,我理解cxfendpoint应该抛出异常,如果有soap foalt,org.apache.cxf.binding.soap.soapfault类型的异常,但我不能得到它。onException子句的目标是处理soap错误异常
我试图读取来自CXF拦截器的SOAP错误消息,但我无法提取,我捕获了来自Fidler的响应 以下是菲德勒的回应 以下是我的代码 向客户端添加了FaultInterceptor
我对SOAP相当陌生,我正在尝试理解SOAP错误处理(在Java中)。我已经读过关于这个话题的书,但仍然有一些概念对我来说还不清楚。 更具体地说,如何使用Eclipse WSDL编辑器处理各种响应代码。我已经使用Eclipse WSDL编辑器创建了我的WSDL,但是我愿意使用另一个工具(如SoapUI)来完成这一任务(处理错误)。 我已经附上了一个简单web服务的图像,它应该接受UserID(请求
目前,这就是我如何捕捉异常并设置有效负载的方法 但是,CXF SOAP组件设置实际响应对象的有效负载。而我想在SOAP错误中发送一个错误对象。我怎么能那样做? 默认异常策略发送带有错误消息的SOAP错误。最初,我的目的只是添加记录器,让缺省错误消息在SOAP错误中运行。我添加了Catch exception策略,但后来发现它不会发送SOAP错误。然后我使用回滚策略发送SOAP错误。但是,使用Mul
根据AWS文件: worker使用Java ExecutorService任务调用记录处理器方法。如果任务失败,工作进程将保留对记录处理器正在处理的碎片的控制。工作进程启动一个新的记录处理器任务来处理该碎片。有关详细信息,请参阅阅读节流。 根据AWS文件的另一页: Kinesis客户端库(KCL)依靠您的进程记录代码来处理处理数据记录时出现的任何异常。从进程记录抛出的任何异常都被KCL吸收。为了避
我在一个独立的java应用程序中使用apache cxf client 3.2.2来调用一些soap Web服务。 试图在单向操作中获取soap故障代码和故障字符串,但没有成功。 我定义了一个自定义拦截器,但它永远不会到达handleMessage 定制拦截器的代码 } 我遇到的异常是MessageSenderEndingInterceptor(处于PREPARE\u SEND阶段)。 它正在抛出