Привет, пользователи StackOverflow,
В настоящее время я работаю над проектом SOA. В качестве сервера приложений я использую JBoss 5.1 с развернутым JBoss ESB 4.11.
Я пытаюсь реализовать веб-службу, которая получает сообщения SOAP от клиентов и также отправляет ответы в виде сообщений SOAP.
При запросе сообщения SOAP получен этой веб-службой. Я использую Smooks для преобразования этого сообщения в объекты Java, чтобы я мог обработать запрос.
Когда я закончу обработку, я хочу преобразовать объекты Java в XML (ответ SOAP), снова с помощью Smooks .
Я застрял на преобразовании 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
завершит обработку входящего запроса, оно прикрепит класс example.JavaObjectMessage
к сообщению esb. Таким образом, второй SmooksAction будет иметь доступ к этому объекту.
Мой вопрос: как я могу получить доступ к атрибутам «example.JavaObjectMessage» в smooksConfig
? И к чему относится applyOnElement
в разделе flt:tamplate
?
Я уже прочитал руководство пользователя Smooks и задал этот вопрос в сообществе JBoss.
Буду признателен за любую помощь!
С уважением