(对stackoverflow中断链接的道歉,将新用户限制为一个帖子中的2个!)
我已经使用Spring STS和MyEclipse for Spring搭建了一个Web服务服务器,并且有兴趣转换出肥皂消息。
我想要转换的第一件事是名称空间前缀,所以我的spring配置看起来像这样
<jaxws:endpoint xmlns:tns="ttps://etc etc">
<jaxws:dataBinding>
<ref bean="data-binding"/>
</jaxws:dataBinding>
</jaxws:endpoint>
<bean ref="data-binding" class="org.apache.cxf.jaxb.JAXBDataBinding">
<property name="namespaceMap">
<map>
<entry>
<key>
<value>ttp://thing</value>
</key>
<value>BeepBeep</value>
</entry>
</map>
</property>
</bean>
这很好用,我的肥皂信息输出完全正确。
<as>
<b>
<stuff/>
</b>
<c>
<more stuff/>
</c>
</as>
其次我需要更改soap xml,但需要更多http://cxf.apache.org/docs/transformationfeature.html允许的转换功能
所以我在http://cxf.apache.org/docs/jax-rs-advanced-xml.html读了一下XSLTJaxbProvider,并在ttp上将rs提供程序插入到ws绑定中://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX -RSDataBindings-CXFDataBindingsasJAXRSproviders创建以下配置
<jaxws:endpoint xmlns:tns="ttps://etc etc">
<jaxws:dataBinding>
<ref bean="jaxrs-data-binding"/>
</jaxws:dataBinding>
<bean id="jaxrs-data-binding" class="org.apache.cxf.jaxrs.provider.JAXRSDataBinding">
<property name="namespaceMap">
<map>
<entry>
<key>
<value>ttp://thing</value>
</key>
<value>BeepBeep</value>
</entry>
</map>
</property>
<property name="provider" ref="xsltProvider"/>
<bean id="xsltProvider" class="org.apache.cxf.jaxrs.provider.XSLTJaxbProvider">
<property name="outTemplate" value="classpath:/WEB-INF/templates/transform.xsl"/>
</bean>
现在我得到一个JAXB异常:类b和c不知道这个上下文的类,即使我有一个空的xslt样式表我得到了xml
<as/>
我已经对每一端的配置进行了修改,并在所有地方添加了@XmlSeeAlso无济于事。
我想我要问的是我在配置中做了什么?事实上,在我尝试将rs提供程序作为ws数据绑定连接之前,它都按预期工作可能意味着它不是吗?
任何建议都非常感谢。也许有更好的方法来使用xslt /操作xml?
由于