如何在JAX-WS
Web服务上引发自定义的肥皂错误?我怎么可以指定faultCode
,faultString
和detail
SOAP错误的?是否可以设置detail
as
bean而不是a的值String
?
请注意,我正在使用代码优先方法进行开发。
使用@WebFault
注释。
您可以在Java JAX-WS
Web服务
中的使用SOAP错误和异常-Java上的Eben
Hewitt中看到一个很好的示例。
您将看到示例:
@WebFault(name="CheckVerifyFault",
targetNamespace="http://www.example.com")
public class CheckVerifyFault extends Exception {
/**
* Java type that goes as soapenv:Fault detail element.
*/
private CheckFaultBean faultInfo;
public CheckVerifyFault(String message, CheckFaultBean faultInfo) {
super(message);
this.faultInfo = faultInfo;
}
public CheckVerifyFault(String message, CheckFaultBean faultInfo,
Throwable cause) {
super(message, cause);
this.faultInfo = faultInfo;
}
public CheckFaultBean getFaultInfo() {
return faultInfo;
}
}
更新
另一种方法是在子句中声明 典型的 异常throws
。
例如,假设以下是我的异常类:
package pkg.ex;
public class FooException extends Exception {
public FooException(String message, Throwable cause) {
super(message, cause);
}
}
下一个类是服务实现。
package pkg.ws;
import javax.jws.WebService;
import pkg.ex.FooException;
@WebService(serviceName = "FooSvc")
public class FooService {
public String sayHello(String name) throws FooException {
if (name.isEmpty()) {
Throwable t = new IllegalArgumentException("Empty name");
throw new FooException("There is one error", t);
}
return "Hello, " + name;
}
}
如果我的要求是:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://ws.pkg/">
<soapenv:Header/>
<soapenv:Body>
<ws:sayHello>
<arg0>Peter</arg0>
</ws:sayHello>
</soapenv:Body>
</soapenv:Envelope>
没有问题:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:sayHelloResponse xmlns:ns2="http://ws.pkg/">
<return>Hello, Peter</return>
</ns2:sayHelloResponse>
</S:Body>
</S:Envelope>
但…
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://ws.pkg/">
<soapenv:Header/>
<soapenv:Body>
<ws:sayHello>
<arg0></arg0>
</ws:sayHello>
</soapenv:Body>
</soapenv:Envelope>
然后…
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>There is one error</faultstring>
<detail>
<ns2:FooException xmlns:ns2="http://ws.pkg/">
<message>There is one error</message>
</ns2:FooException>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
问题内容: 我正在使用Jersey来学习JAX-RS(又名JSR-311)。我已经成功创建了一个根资源,并且正在使用参数: 这很好用,并且可以处理Date(String)构造函数可以理解的当前语言环境中的任何格式(例如YYYY / mm / dd和mm / dd / YYYY)。但是,如果提供的值无效或无法理解,则会收到404响应。 例如: 如何自定义此行为?也许是不同的响应代码(可能是“ 400
我不能对我的web服务的方法抛出异常。当我在我的方法中抛出异常并尝试从Soap UI测试我的应用程序时,会出现以下错误: 和 我的问题是: 如何为JavaWeb服务编写用户定义的异常? (例如,有一个方法返回一个学生的名字。但是,如果学生在数据库中找不到,会抛出一个错误?)
我为构建自己的CVC(一个基于Rapaehl地图的choropleth地图)而努力,但现在我在尝试发布我的项目时面临着两个大问题。 1)CVC似乎无法正常使用子数据集:可以选择报表的子数据集之一,但它无法识别字段。
我在一台Tomcat Web服务器上部署了多个Web应用程序。对于所有已部署的 Web 应用程序,如果任何 Web 应用程序中发生 404 错误,我希望显示相同的 404.jsp 页面。 一种方法是在每个 Web 应用程序的 Web 中放置一个条目 404.xml并为 404.jsp 提供适当的位置。 有没有办法让所有 Web 应用程序在 404 错误上显示 ROOT 的 404 页面? 谢谢,帕
我在spring rest api上工作,我想确保一切都正常工作。我想记录异常行为数据库连接错误等等,我正在使用couchbase数据库,并在endpoint响应中获得例如此类异常:下一条消息:和一个非常长的跟踪。 为此,我在internet上找到了一个解决方案,即扩展ResponseEntityExceptionHandler并重写handleExceptionInternal方法,如下所示: