(stackoverflowでリンク切れが発生したことをお詫びします。新規ユーザーは、1つの投稿で2人に制限されます!)
私はSpringSTSとMyEclipseをSpringに使用してWebサービスサーバーをスキャフォールディングし、送信されるSOAPメッセージを変換することに興味がありました。
最初に変換したかったのは名前空間のプレフィックスでしたので、私の春の構成は次のようになりました
<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://cxf.apache.org/でrsプロバイダーをwsバインディングにプラグインしました。 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を操作するより良い方法がありますか?
ありがとう