O componente de Spring Context permite que você execute código Java dentro de uma aplicação SOA Suite de maneira mais robusta que o Java Embedding do BPEL.
Crie uma aplicação SOA Suite e no composite.xml, arraste o componente Spring Context (Component Pallete) para a raia do meio.
Clique em OK. Você deverá ter um componente com um folhinha verde no meio do composite. O próximo passo é criar uma interface e uma classe para ser utilizada com o Spring Context. Clique em File, New, Java Interface e clique em OK. Dê um nome, no meu exemplo vou dar o nome de OlaSpring. Clique em OK. Insira o seguinte conteúdo:
package br.com.thiagovespa.adf.samples.spring; public interface OlaSpring { public String digaOla(String nome); }
Faça o mesmo procedimento para criar uma classe Java ao invés de interface. No meu exemplo a classe irá se chamar OlaSpringImpl. Insira o seguinte conteúdo:
package br.com.thiagovespa.adf.samples.spring; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class OlaSpringImpl implements OlaSpring { public OlaSpringImpl() { super(); } public String digaOla(String nome) { return "Olá " + nome + ". Hoje é " + new SimpleDateFormat("EEEE", new Locale("pt", "BR")).format(new Date()); } }
Abra o arquivo OlaSpring.xml, na Component Pallete, escolha a opção no menu Spring 2.5 Core.
Clique e arraste a opção bean para o OlaSpring.xml. Preencha o "name" e a "class" utilizando o Property Inspector. Nesse exemplo utilizei os seguinte valores:
<bean name="olaSpringBean" class="br.com.thiagovespa.adf.samples.spring.OlaSpringImpl"/>
No Component Pallete selecione a opção WebLogic SCA.
Clique em Service e arraste para o OlaSpring.xml. Dê um nome, informe a referência do passo anterior e especifique a interface. O conteúdo do meu arquivo ficou da seguinte maneira:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:sca="http://xmlns.oracle.com/weblogic/weblogic-sca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool-2.5.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd"> <!--Spring Bean definitions go here--> <bean name="olaSpringBean" class="br.com.thiagovespa.adf.samples.spring.OlaSpringImpl"/> <sca:service name="olaSpringService" target="olaSpringBean" type="br.com.thiagovespa.adf.samples.spring.OlaSpring"/> </beans>
Vá no arquivo composite.xml, selecione a setinha verde e arraste para a raia Exposed Services (lado esquerdo). O JDeveloper irá exibir uma tela perguntando se você quer expor o serviço como um EJB ou Web Service:
Escolha a opção Web Service e clique em OK na próxima tela:
Ele irá criar um arquivo WSDL com os esquemas correspondentes. Agora é só realizar o deploy e testar a aplicação.
Para o seguinte request:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns1:digaOla xmlns:ns1="http://spring.samples.adf.thiagovespa.com.br/"> <arg0>Thiago</arg0> </ns1:digaOla> </soap:Body> </soap:Envelope>
Teremos o seguinte response:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <env:Header> <wsa:MessageID>urn:10D27790659411E28F1F1F86169F6DB8</wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> <wsa:ReferenceParameters> <instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">eb7831b8f2ea384d:5304d5b3:13c68b0dd7e:-8000-00000000000017f8</instra:tracking.ecid> <instra:tracking.compositeInstanceCreatedTime xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">2013-01-23T17:35:38.589-02:00</instra:tracking.compositeInstanceCreatedTime> </wsa:ReferenceParameters> </wsa:ReplyTo> <wsa:FaultTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> <wsa:ReferenceParameters> <instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">eb7831b8f2ea384d:5304d5b3:13c68b0dd7e:-8000-00000000000017f8</instra:tracking.ecid> <instra:tracking.compositeInstanceCreatedTime xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">2013-01-23T17:35:38.589-02:00</instra:tracking.compositeInstanceCreatedTime> </wsa:ReferenceParameters> </wsa:FaultTo> </env:Header> <env:Body> <digaOlaResponse xmlns="http://spring.samples.adf.thiagovespa.com.br/"> <return xmlns="">Olá Thiago. Hoje é Quarta-feira</return> </digaOlaResponse> </env:Body> </env:Envelope>
Com esse recurso você pode executar qualquer código Java dentro do SOA Suite sem grandes complicações.
[...] Veja também exemplo de como criar seu Spring através do blog do Thiago Vespa em: http://www.thiagovespa.com.br/blog/2013/01/23/spring-no-soa-suite/ [...]