SOAPFaultException: Unexpected wrapper element {http://ws.konghao.org/}sayHello fo
来源:互联网 发布:通信协议json rpc 编辑:程序博客网 时间:2024/05/17 09:29
在做CXF练习时运行webservice客户端如下代码Test02报错:
package org.konghao.ws.test;import java.util.ArrayList;import java.util.List;import javax.xml.ws.handler.Handler;import org.apache.cxf.interceptor.LoggingInInterceptor;import org.apache.cxf.interceptor.LoggingOutInterceptor;import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;import org.junit.Test;import org.konghao.ws.IMyService;import org.konghao.ws.MyServiceService;import org.konghao.ws.handler.LicenseHandler;public class TestWs { @Test public void Test01(){ /** * 基于JAX-WS的方式访问服务端 */ IMyService ms=new MyServiceService().getMyServicePort(); System.out.println(ms.sayHello("张三")); } @Test public void Test02(){ JaxWsProxyFactoryBean fac=new JaxWsProxyFactoryBean(); fac.setServiceClass(IMyService.class); fac.setAddress("http://localhost:8878/ms"); //可以通过CXF为访问增加相应的Interceptor来处理进去和出来的消息 fac.getInInterceptors().add(new LoggingInInterceptor()); fac.getInInterceptors().add(new LoggingOutInterceptor()); List<Handler> hans=new ArrayList<Handler>(); hans.add(new LicenseHandler()); fac.setHandlers(hans); IMyService ms=(IMyService)fac.create(); System.out.println(ms.sayHello("李四")); }}
报错内容如下:
javax.xml.ws.soap.SOAPFaultException: Unexpected wrapper element {http://ws.konghao.org/}sayHello found. Expected {http://ws.konghao.org/}sayHelloResponse. at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156) at com.sun.proxy.$Proxy35.sayHello(Unknown Source) at org.konghao.ws.test.TestWs.Test02(TestWs.java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
经断点debug跟踪检查发现webservice服务器端的handler最后面没有设置成true.
public class LicenseHandler implements SOAPHandler<SOAPMessageContext> { @Override public boolean handleMessage(SOAPMessageContext ctx) { try { Boolean out=(Boolean)ctx.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);//服务端消息是往这里传输的。 if(!out){ SOAPEnvelope envelope=ctx.getMessage().getSOAPPart().getEnvelope(); SOAPHeader header=envelope.getHeader(); if(header==null) return true; Iterator<SOAPHeaderElement> iterator=header.getChildElements(); while(iterator.hasNext()){ SOAPHeaderElement element=iterator.next(); if(element.getLocalName().equals("licenseInfo")){ System.out.println("Server端:"+element.getTextContent()); } } } } catch (SOAPException e) { e.printStackTrace(); } return false; } ...... ......
将
handleMessage类里的return false;改为return true;
0 0
- SOAPFaultException: Unexpected wrapper element {http://ws.konghao.org/}sayHello fo
- CXF javax.xml.ws.soap.SOAPFaultException: Unexpected wrapper element
- 【webservice】org.apache.cxf.interceptor.Fault: Unexpected wrapper element {http://webservice.index.
- org.apache.cxf.interceptor.Fault: Unexpected wrapper element {****}
- org.apache.cxf.interceptor.Fault: Unexpected wrapper element {****}
- CXF 异常 Caused by: org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element
- org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element 出现命名空间不一致问题,解决方法
- CXF 异常 Caused by: org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element
- Unexpected wrapper element XX found. 问题
- WebService异常Unexpected wrapper element ... found. Expected ...
- WebService异常Unexpected wrapper element ... found. Expected ...
- cxf Unexpected wrapper element异常解决
- cxf Unexpected wrapper element异常解决
- runtime modeler error: Wrapper class com.ws.jaxws.SayHello is not found
- SayHello
- SayHello
- sayhello
- Sayhello
- C语言使用sqlite3数据库【第三节】
- 谷歌公布新竞争对手名单 不再局限于搜索业务
- linux后台运行和关闭、查看后台任务
- javascript知识积累
- Unity 摄像机切换镜头
- SOAPFaultException: Unexpected wrapper element {http://ws.konghao.org/}sayHello fo
- 装箱问题
- html学习笔记 3种doctype
- Hello World !
- CentOS下安装完vsftpd后报错:500 OOPS: cannot change directory:/home/
- MongoDB学习(一)——NoSQL简介
- android确定经纬度的小误区
- ubuntu uboot busybox等下载地址
- 深入理解JVM虚拟机学习笔记(二)垃圾收集器与垃圾收集算法