
## One SA containing one sample JSR181 SU: "MathOperations" with the operation "AddIntegers"
*Message flows:*
# From SE-RMI to SE-EIP "Aggregator"
# From SE-EIP "Aggregator" to SE-EIP "Splitter"
# From SE-EIP "Splitter" to JSR181 "MathOperations"
*This usecase was tested with:*
* Petals ESB 3.1, Petals-SE-EIP 2.4.3, Petals-SE-Jsr-181 1.1.3, Petals-SE-RMI-1.1.1, Petals webconsole 2.0.3. Configurations were generated using Petals Studio 1.1.0
* Petals ESB 3.1.1, Petals-SE-EIP 2.5, Petals-SE-Jsr-181 1.1.3, Petals-SE-RMI-1.1.2, Petals webconsole 2.0.4. Configurations were generated using Petals Studio 1.1.1
h1. Configuring the sample JSR181 Service Unit
{code:lang=java|title=MyMathOperations.java}package com.petalslink.test;
//import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
/**
* Here is a sample JAX-WS implementation.
* <p>
* For more information about JAX-WS, please visit
* <b>https://jax-ws.dev.java.net/jax-ws-ea3/docs/annotations.html</b>.
* </p>
*
* @author mlebreton
*/
@WebService( serviceName="MyMathOperations", targetNamespace="http://test.petalslink.com", portName="MyMathOperationsPort" )
public class MyMathOperations {
/* (non-Javadoc)
* @see JaxWSInterface#HelloWorld()
*/
@WebMethod( operationName="AddIntegers" ) // @WebMethod: Name of service operations that we will call
@WebResult( name="returnMessage" ) // @WebResult: Name of the message returned by service
public Integer AddIntegers( @WebParam( name="integer1" ) Integer integer1, @WebParam( name="integer2" ) Integer integer2 ) { //@WebParam => Name of service parameters
Integer result;
result = integer1+integer2;
return result;
}; // Returns the sum of two integers
}{code}
The following files can be generated by the Petals Studio.
{code:lang=xml|title=MyMathOperations_schema1.xsd|collapse=true|theme=Default}<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="http://test.petalslink.com" xmlns:tns="http://test.petalslink.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AddIntegers" type="tns:AddIntegers"/>
<xs:element name="AddIntegersResponse" type="tns:AddIntegersResponse"/>
<xs:complexType name="AddIntegers">
<xs:sequence>
<xs:element name="integer1" type="xs:int" minOccurs="0"/>
<xs:element name="integer2" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AddIntegersResponse">
<xs:sequence>
<xs:element name="returnMessage" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>{code}
{code:lang=xml|title=jbi.xml|collapse}<?xml version="1.0" encoding="UTF-8"?>
<!-- JBI descriptor for the Petals component petals-se-jsr181 -->
<jbi:jbi version="1.0"
xmlns:jbi="http://java.sun.com/xml/ns/jbi"
xmlns:jsr181="http://petals.ow2.org/components/jsr181/version-1"
xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jbi:services binding-component="false">
<jbi:provides
interface-name="generatedNs:MyMathOperations"
service-name="generatedNs:MyMathOperations"
endpoint-name="MyMathOperationsPort"
xmlns:generatedNs="http://test.petalslink.com">
<!-- CDK elements -->
<petalsCDK:wsdl>MyMathOperations.wsdl</petalsCDK:wsdl>
<!-- Component specific elements -->
<jsr181:class>com.petalslink.test.MyMathOperations</jsr181:class>
</jbi:provides>
</jbi:services>
</jbi:jbi>{code}
{code:lang=xml|title=MyMathOperations.wsdl}<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
<definitions targetNamespace="http://test.petalslink.com" name="MyMathOperations" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://test.petalslink.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema>
<xsd:import namespace="http://test.petalslink.com" schemaLocation="MyMathOperations_schema1.xsd"/>
</xsd:schema>
</types>
<message name="AddIntegers">
<part name="parameters" element="tns:AddIntegers"/>
</message>
<message name="AddIntegersResponse">
<part name="parameters" element="tns:AddIntegersResponse"/>
</message>
<portType name="MyMathOperations">
<operation name="AddIntegers">
<input message="tns:AddIntegers"/>
<output message="tns:AddIntegersResponse"/>
</operation>
</portType>
<binding name="MyMathOperationsPortBinding" type="tns:MyMathOperations">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="AddIntegers">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MyMathOperations">
<port name="MyMathOperationsPort" binding="tns:MyMathOperationsPortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>{code}
The method will be packaged in su-jsr181-MathOperations-provide
h1. Configuring SE-EIP: Aggregator and Splitter patterns
h2. SE-EIP Splitter
{code:lang=xml|title=jbi.xml}<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<jbi:jbi version="1.0"
xmlns:eip="http://petals.ow2.org/components/eip/version-2"
xmlns:generatedNs="http://test.petalslink.com"
xmlns:jbi="http://java.sun.com/xml/ns/jbi"
xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jbi:services binding-component="false">
<jbi:provides
interface-name="generatedNs:EipSplitterInterface"
service-name="generatedNs:EipSplitter"
endpoint-name="EipSplitterEndpoint">
<!-- CDK specific elements -->
<petalsCDK:timeout>30000</petalsCDK:timeout>
<petalsCDK:validate-wsdl>false</petalsCDK:validate-wsdl>
<petalsCDK:forward-security-subject>false</petalsCDK:forward-security-subject>
<petalsCDK:forward-message-properties>false</petalsCDK:forward-message-properties>
<petalsCDK:forward-attachments>false</petalsCDK:forward-attachments>
<petalsCDK:wsdl xsi:nil="true" />
<!-- Component specific elements -->
<eip:eip>splitter</eip:eip>
<eip:test>//*[local-name()="AddIntegers"]</eip:test>
<eip:fault-robust>false</eip:fault-robust>
<eip:exception-robust>false</eip:exception-robust>
<eip:attachment-mode>false</eip:attachment-mode>
</jbi:provides>
<!-- Consumed project 1 ( test = //*[local-name()="AddIntegers"] ) -->
<jbi:consumes
interface-name="iConsumeNsPrefix:MyMathOperations"
service-name="iConsumeNsPrefix:MyMathOperations"
endpoint-name="MyMathOperationsPort"
xmlns:iConsumeNsPrefix="http://test.petalslink.com">
<!-- CK specific fields for this consume -->
<petalsCDK:timeout>30000</petalsCDK:timeout>
<petalsCDK:operation xmlns:AddIntegersNs="http://test.petalslink.com">AddIntegersNs:AddIntegers</petalsCDK:operation>
<petalsCDK:mep>InOut</petalsCDK:mep>
</jbi:consumes>
</jbi:services>
</jbi:jbi>{code}
h2. SE-EIP Aggregator
{code:lang=xml|title=jbi.xml}<?xml version="1.0" encoding="UTF-8"?>
<jbi:jbi version="1.0"
xmlns:eip="http://petals.ow2.org/components/eip/version-2"
xmlns:generatedNs="http://test.petalslink.com"
xmlns:jbi="http://java.sun.com/xml/ns/jbi"
xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jbi:services binding-component="false">
<jbi:provides
interface-name="generatedNs:EipAggregatorInterface"
service-name="generatedNs:EipAggregator"
endpoint-name="EipAggregatorEndpoint">
<!-- CDK specific elements -->
<petalsCDK:timeout>30000</petalsCDK:timeout>
<petalsCDK:validate-wsdl>false</petalsCDK:validate-wsdl>
<petalsCDK:forward-security-subject>false</petalsCDK:forward-security-subject>
<petalsCDK:forward-message-properties>false</petalsCDK:forward-message-properties>
<petalsCDK:forward-attachments>false</petalsCDK:forward-attachments>
<petalsCDK:wsdl xsi:nil="true" />
<!-- Component specific elements -->
<eip:eip>aggregator</eip:eip>
<eip:test>boolean(/*[local-name()="AddIntegers"]/*[local-name()="equals"])</eip:test>
<eip:aggregator-correlation>boolean(/*[local-name()="AddIntegers"])</eip:aggregator-correlation>
<eip:fault-robust>false</eip:fault-robust>
<eip:exception-robust>false</eip:exception-robust>
<eip:attachment-mode>false</eip:attachment-mode>
</jbi:provides>
<!-- Consumed project 1 ( test = boolean(/*[local-name()="AddIntegers"]/*[local-name()="equals"]) ) -->
<jbi:consumes
interface-name="iConsumeNsPrefix:EipSplitterInterface"
service-name="iConsumeNsPrefix:EipSplitter"
endpoint-name="EipSplitterEndpoint"
xmlns:iConsumeNsPrefix="http://test.petalslink.com">