webservice接口返回错误回滚
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice接口返回错误回滚相关的知识,希望对你有一定的参考价值。
我自己用java写了一个webservice的接口 正常情况可以调通并返回正确报文 如果接口中调用的子方法内如果出现错误 就throw到上一层主方法中 由主方法try-catch捕获后将错误信息组装成报文返回 但调用方法就收不到我返回的报文了 只能收到一个错误信息 以下是错误信息 请大神帮忙看看 我希望调用方法可以收到我返回的报文
org.codehaus.xfire.fault.XFireFault: Transaction rolled back because it has been marked as rollback-only
at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)
at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at com.sinosoft.intf.quotation.web.TestClient.main(TestClient.java:32)
参考:http://blog.csdn.net/waixin/article/details/6551457 参考技术A 你自己返回的,不是webservice的标准的,不认了。或者,不是调用的接口,也不认识的。
做得好,就在接口中定义返回是否正确、不正确的描述等信息追问
好像不是这样的 我昨天做了实验 子方法中报错 如果通过throws方式往上层抛异常就出出现上面描述的这种情况 但如果通过throw new Exception()这种方式 调用方就可以接收到我返回的报文 报文组织的都一样 原理不明~
webservice 调用接口返回值问题
webservice 中调用 另一个服务器接口 他的服务器return String 格式是300<response><result>0</result></response>我用的String 接收 只接受到了 <response><result>0</result></response> 上面的300 接收不到而且每次我关服务器的时候 会显示300<response><result>0</result></response
参考技术A 你的帖图里是200,不是300根据这个贴图,我推测,这个200应该是http状态码,200表示成功,
http协议里200这个成功信息是放在响应头数据里,
<response><result>0</result></response>
才是服务器的响应内容,你接收时应该只取了响应内容,没有读取头信息,所以得不到200
事实上,所有的浏览器都只显示消息内容,不会去显示200这样的头信息的追问
哦。我第一次做,这个明白了 谢谢,重点是关闭服务器出的那些错误 有点不懂
参考技术B 上面的那个数字应该是HTTP的响应状态码吧,webservice的传输协议SOAP所使用的传输介质应该是一段儿完整的XML表达式才对。不应该会有未被XML标记包裹的表达式追问对,是状态码, 哦,这个明白了 ,但是服务器关闭的时候会提示错误, 我调用的那个服务器的接口是吧XML 构造成 String 的 。。我用String 接收 为啥为出错呢
追答这个问题没有碰到过,不过从异常信息来看,应该是某个后台线程在你服务器中断连接以后工作异常了。
参考技术C 你试试用Object接收之后再转换类型行不行追问不行呢。开启服务没有错,可以将数据返回,重点是在关闭服务器的时候 报的错误,百度搜了没有相关的例子,
Unable to determine string representation of value of type [com.sun.xml.stream.writers.XMLStreamWriterImpl]
java.lang.UnsupportedOperationException
你上面那一句报错的意思貌似是 无法确定类型的值的表示形式是字符串,你用Object接收它还是报这样的错吗?
追问恩呢,用OB 接受 然后 转成 字符串输出的 还是这样子
追答用Ob接收到的值是怎样的
追问一样的 0 我觉得好像还有线程的错误。是不是执行完了HTTP 请求 没关闭呢 --
追答那我也不知道了, 没碰到过这个问题,你问问给你接口的他们自己测试的时候有没有这个问题
追问恩 谢谢你 这么耐心 我自己再看看吧
追答不用,又没帮到忙
本回答被提问者采纳以上是关于webservice接口返回错误回滚的主要内容,如果未能解决你的问题,请参考以下文章