嘿StackOverflow用户,使用FreeMarker与Smooks的Java到XML(SOAP)
我目前正在开发一个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
看起来像这样的:processRequest
动作完成处理进来的请求
<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>
后,它会attatch esc消息的example.JavaObjectMessage
类。所以第二个SmooksAction将有权访问这个对象。
我的问题是:我如何访问smooksConfig
中的'example.JavaObjectMessage'属性? applyOnElement
在flt:tamplate
部分提及的是什么?
我已经阅读了Smooks用户指南,并在JBoss社区中发布了这个问题。
我很感激任何帮助!
问候