嘿 StackOverflow 用户,
我目前正在从事 SOA 项目。作为应用服务器,我使用部署了 JBoss ESB 4.11 的 JBoss 5.1。
我尝试实现一个 Web 服务,它从客户端接收 SOAP 消息并将响应也作为 SOAP 消息发送。
当此 Web 服务收到 SOAP 消息请求时,我使用 Smooks 将此消息转换为 Java 对象,以便处理请求。
当我完成处理后,我想再次使用 Smooks 将 Java 对象转换为 XML(一个 SOAP 回复)。
我坚持从 Java 到 XML 的转换。
我在文件中的动作链jboss-esb.xml
如下所示:
<services>
<service name="myWS" description="A Service" category="WS">
<listeners>
<jms-listener name="myListener" busidref="myChannel"/>
</listeners>
<actions mep="RequestResponse" inXsd="in.xsd" outXsd="out.xsd">
<!-- Transform incomming SOAP Message into JavaBean objects -->
<action name="xml2java-transform" class="org.jboss.soa.esb.smooks.SmooksAction">
<property name="smooksConfig" value="/smooks/smooks-config-soap2java.xml"/>
<property name="resultType" value="JAVA" />
</action>
<action name="processRequest" class="example.soa.ProcessRequest" process="process">
<property name="config" value="val"/>
</action>
<!-- Transform outgoing JavaBean objects into SOAP Message -->
<action name="java2xml-transform" class="org.jboss.soa.esb.smooks.SmooksAction">
<property name="smooksConfig" value="/smooks/smooks-config-java2soap.xml"/>
<property name="reportPath" value="/smooks/report.html"/>
<property name="resultType" value="STRING" />
</action>
</actions>
</service>
</services>
我smooksConfig
的第二个 SmooksAction 看起来像这样:
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd"
xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.4.xsd">
<core:filterSettings type="SAX" defaultSerialization="false"/>
<resource-config selector="example.JavaObjectMessage">
<resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>
<ftl:freemarker applyOnElement="example.JavaObjectMessage">
<!--<ftl:template>/freemarker/acknowledge.flt</ftl:template> -->
<ftl:template>
<!--
<sg:Message xmlns:sg="urn:http://example">
<sg:MessageType>${.vars[example.JavaObjectMessage].messageType}</sg:MessageType>
</sg:Message >
-->
</ftl:template>
</ftl:freemarker>
</smooks-resource-list>
在processRequest
Action 处理完传入请求后,它会将example.JavaObjectMessage
类附加到 esb 消息。所以第二个 SmooksAction 将可以访问这个对象。
我的问题是:如何访问 'example.JavaObjectMessage' 中的属性smooksConfig
?以及applyOnElement
该flt:tamplate
部分所指的内容是什么?
我已经阅读了 Smooks 用户指南,并且在 JBoss 社区中我也发布了这个问题。
我很感激任何帮助!
问候