Java WS:保存时要返回什么?

Java WS:保存时要返回什么?,java,web-services,cxf,Java,Web Services,Cxf,我正在使用apachecxf创建一个简单的WS-CRUD。这就是我到目前为止所做的: @Service("userService") public class UserService implements IUserService { @Autowired private IUserDAO userDAO; @Override @Transactional(readOnly=true) public List<User> getUsers(

我正在使用apachecxf创建一个简单的WS-CRUD。这就是我到目前为止所做的:

@Service("userService")
public class UserService implements IUserService {

    @Autowired
    private IUserDAO userDAO;

    @Override
    @Transactional(readOnly=true)
    public List<User> getUsers() {
        return userDAO.findAll();
    }

    @Override
    @Transactional(readOnly=true)
    public User getUser(Long id) {
        return userDAO.findById(id);
    }

    @Override
    @Transactional
    public String saveUser(User u) {
        userDAO.persist(u);
        return "ok";
    }

    @Override
    @Transactional
    public String updateUser(User u) {
        userDAO.merge(u);
        return "ok";
    }

    @Override
    public String deleteUser(Long id) {
        userDAO.remove(id);
        return "ok";
    }


}
@Service(“用户服务”)
公共类UserService实现IUserService{
@自动连线
私有IUserDAO userDAO;
@凌驾
@事务(只读=真)
公共列表getUsers(){
返回userDAO.findAll();
}
@凌驾
@事务(只读=真)
公共用户getUser(长id){
返回userDAO.findById(id);
}
@凌驾
@交易的
公共字符串saveUser(用户u){
persist(u);
返回“ok”;
}
@凌驾
@交易的
公共字符串更新器(用户u){
userDAO.merge(u);
返回“ok”;
}
@凌驾
公共字符串deleteUser(长id){
userDAO.remove(id);
返回“ok”;
}
}

我基于在网上找到的一个教程创建了这个示例,但我想知道在修改方法后返回简单的“ok”字符串是否是一个好的实践。这里最好的解决方案是什么?

我会返回void。没有异常意味着它工作正常。

您将如何管理异常?例如,我得到了一个“重复密钥异常”,我的服务返回的
soap:Server ORA-00001:unique约束(CNTXES.PK_USER)被违反;SQL[n/a];约束[CNTXES.PK_USER];嵌套异常是org.hibernate.exception.ConstraintViolationException:ORA-00001:违反了唯一约束(CNTXES.PK_USER)
,这是一个好做法吗?向控制器添加@ExceptionHandler以处理异常。这取决于发生这种情况时你想做什么。或者你也可以用try/catch来包装打电话的人,如果你希望这种情况有时会发生的话。如果您希望这种情况经常发生,您可以先执行一个查询来检查是否存在唯一性问题是--我没有使用spring mvc,也没有控制器:只是一个带有DAO的bean注入的服务层,以及核心spring库。