Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SOAP响应出现错误而不引发异常_Java_Web Services_Soap_Log4j - Fatal编程技术网

Java SOAP响应出现错误而不引发异常

Java SOAP响应出现错误而不引发异常,java,web-services,soap,log4j,Java,Web Services,Soap,Log4j,我需要修改用JAVA编写的现有web服务。 web服务执行一些输入验证,例如,当数字的输入无效时,它抛出NumberFormatException 这将导致用户收到错误消息,这是正确的。 但是,由于我们使用log4j,异常会作为错误记录在日志文件中,这是不需要的 我的问题是: 如何返回SoapFault而不引发异常? 我认为这将向用户返回一个错误,但不会将错误作为错误记录在日志文件中。 如果这不可能。如何将log4j配置为不记录某些异常?您可以将数字解析包装在try\catch块中,捕获Numb

我需要修改用JAVA编写的现有web服务。 web服务执行一些输入验证,例如,当数字的输入无效时,它抛出NumberFormatException

这将导致用户收到错误消息,这是正确的。 但是,由于我们使用log4j,异常会作为错误记录在日志文件中,这是不需要的

我的问题是: 如何返回SoapFault而不引发异常? 我认为这将向用户返回一个错误,但不会将错误作为错误记录在日志文件中。
如果这不可能。如何将log4j配置为不记录某些异常?

您可以将数字解析包装在try\catch块中,捕获NumberFormatException。它不会传播到其他任何地方,在catch块中,您只需返回SoapFault

int value;
try{
    value = Integer.parseInt(valueString);
}
catch(NumberFormatException e){
    value = 0;
    return SoapFault;
}

返回null并不能解决我的问题,因此我创建了一个自定义异常,并在log4j.xml中排除了该类:

<category name="My.Company.DoNotLogException">
  <priority value="off" />
</category>        

现在用户仍然会收到一个错误,但该错误不再显示在我的日志中


谢谢大家的帮助。

您使用的是哪种web服务框架?您可以共享一些代码吗?尝试捕获NumberFormatException并重新抛出SOAPFault。但是,我们需要知道您在使用什么(AXIS2?),我们没有使用AXIS2。我想是JWS。我看到import javax.jws.WebService;我尝试返回SOAPFault,但这不起作用,因为我的方法要求返回字符串。@PaulMeems我不是J2EE专家,但可能没有其他方法-为了获得SOAPFault,您需要抛出某种类型的异常?@PaulMeems确定如果您需要返回字符串,哪个字符串对应于欠终止值?你能直接返回空值吗?