CXF输入和输出报文都需要命名空间前缀,但响应报文就是不出来。

防腐基 发布于 2016/08/03 14:43
阅读 2K+
收藏 0

如题,楼主折腾一天了,就是出不来想要的效果,简单给大家描述下:

1.想要的效果如图:

2.但做出来的效果却如图:(~~~~(>_<)~~~~)


3.结果首先功能没有问题已经过验证,所以就是哪里需要配置下就好,愣是找不到还需要配哪里。

如图,这是cxf的配置文件,命名空间已加。


4.后来网上找了资料,问了大神们,都说需要加一个package-info.java在同一目录下即可。

如图,这俩文件都加了。

代码如下:

package-info.java:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://oa.soa.csg.cn",elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package cn.csg.soa.oa.workbench;

ObjectFactory.java,比较长,就只截出关键部分:


----------------------------------------------

PS:该加的都加了,可用soapui工具进行wsdl地址的调试时,请求报文如1图所示,是有空间前缀的。但是响应报文如图所示就是没有,无奈了已经。

PS2:然后又搜了一些资料,有一个大神说把ObjectFactory.java中response的namespace=“”,就能出来了,事实是,确实出来了,但是是ns2,不是自己想要的。

PS3:如上,想到既然是ns2,干脆用cxf的拦截器获取报文然后全部改成oa不就好了吗,然后又去网上找了拦截器的资料,根据参考代码实现了,我靠,还真可以。

PS4:如上,高兴之余,以为自己牛笔了搞定了,结果发现cxf拦截器获取报文的那段代码如果数据过大,就不会打印出来,尼玛,不打印出来我还改个J8啊……然后就泪崩了。~~o(>_<)o ~~


以上便是楼主心路历程,领导还一直催着赶紧完成,楼主依然接近崩溃,希望遇到过类似问题的大神伸出援助之手,好人一生平安,祝你遇到美女倒贴。

加载中
0
j
jchuyang

我也遇到这个问题,楼主后面怎么解决了啊

防腐基
http://my.oschina.net/u/1022038/blog/744665
0
来自底层的程序员
您好,您的输入参数命名空间怎么加的呢?
0
绕指柔

如果要返回报文带上命名空间,除了楼主的方法外,还可以在配置文件中加如下(加命名空间配置):
<jaxws:properties>
      <entry key="soap.env.ns.map">
        <map>
          <entry value="http://oa.soa.csg.cn" key="oa"></entry>
        </map>
      </entry>
      <entry key="disable.outputstream.optimization" value="true"/>
</jaxws:properties>

同时,将返回的JavaBean的类变量加上注解@XmlElement(namespace = "http://oa.soa.csg.cn")

0
努力笑的男孩
努力笑的男孩

我倒是想要这样格式,前缀去不掉。。。。。。。

返回顶部
顶部