Java 返回';空';在webservice webmethod中
我有一个简单的Web服务,我发现如果我返回Java 返回';空';在webservice webmethod中,java,web-services,soap,Java,Web Services,Soap,我有一个简单的Web服务,我发现如果我返回null我会得到以下异常: com.sun.xml.internal.ws.fault.ServerSOAPFaultException:客户端从服务器接收到SOAP错误:方法参数:返回值不能为null。这是BP 1.1 R2211违规行为。请参阅服务器日志以了解有关故障确切原因的更多详细信息。 这是示例代码,是否有允许webservice返回空值的配置 处理字符串不是什么大问题,我只需返回“” 退回一个POJO怎么样 从数据库读取数据时,我更喜欢返回n
null
我会得到以下异常:
com.sun.xml.internal.ws.fault.ServerSOAPFaultException:客户端从服务器接收到SOAP错误:方法参数:返回值不能为null。这是BP 1.1 R2211违规行为。请参阅服务器日志以了解有关故障确切原因的更多详细信息。
这是示例代码,是否有允许webservice返回空值的配置处理字符串不是什么大问题,我只需返回
“
”退回一个POJO怎么样
从数据库读取数据时,我更喜欢返回
null
,而不是创建一个空的POJO
@WebService
@SOAPBinding(style = Style.RPC)
public interface IShareObjectService {
@WebMethod
String getTest();
}
@WebService(endpointInterface = "ch.scodi.share.service.IShareObjectService", name = "ShareObjectService", serviceName = "ShareObjectService", targetNamespace = "http://shareserver/ws/")
public class ShareObjectService implements IShareObjectService {
/** ShareObject data access object */
private ShareObjectDAO dao;
@Override
public String getTest() {
return null;
}
}
编辑--
假设我想在客户机上执行以下操作:
Category category = categoryService.getByName(name);
if (category == null) {
category = categoryService.create(name);
}
category...
现在我必须这样做,对于每个返回单个结果的“get…”和“find…”方法,都需要一个“exists…”方法
Category category = null;
if (categoryService.existsByName(name)) {
category = categoryService.getByName(name);
} else {
category = categoryService.create(name);
}
category...
所以我想我遗漏了什么?我找到了一个解决方案,我不得不更改我的服务接口的以下注释
@SOAPBinding(style=style.RPC)
到
@SOAPBinding(style=style.DOCUMENT)
有关绑定样式的更多信息可在此处找到:我更喜欢返回null而不是创建一个空POJO,任何使用webservice的人都更喜欢空POJO而不是null。你有一个方法“User getUser(String userId)”怎么样,如果找不到用户ID而不是空用户对象的用户,您难道不希望为null吗?我希望会出现错误。我添加了一个示例来解释我看到的缺点。进一步说明,作为一名开发人员,我希望成为abel,以决定是从webmethod引发异常还是返回null。如果由于技术限制,这是不可能的,请有人告诉我文档。
@WebService
@SOAPBinding(style = Style.DOCUMENT)
public interface IShareObjectService {
@WebMethod
String getTest();
}