Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implantar o Oracle SOA Suite no Oracle Visual Builder Studio
Introdução
O Oracle Visual Builder Studio é a ferramenta Oracle oficial para automatizar processos DevOps com diferentes tecnologias, como:
- Kubernetes/Docker
- funções
- Servidores de Aplicativos como Oracle Weblogic, IIS, JBoss, Tomcat
- Oracle Forms
- Oracle SOA Suite
- Oracle Integration (OIC)
Este tutorial mostra um exemplo de como implementar as seguintes funcionalidades no Oracle SOA Suite.
- Exposição de um Serviço REST
- Trabalhando com tópicos Kafka (ou Oracle Cloud Streaming) por meio de uma API REST compatível com Kafka
- Implementar uma chamada Java incorporada
- Implantar automaticamente seu pacote do SOA Suite no servidor SOA
Observação Importante: atualmente, só é possível implementar CI/CD com o Oracle SOA Suite por meio do Oracle Visual Builder Studio. Isso ocorre porque somente o Visual Builder Studio tem plug-ins já pré-instalados na máquina virtual para processar e compilar (BUILD) os pacotes necessários. Portanto, ainda não é possível implementar o CI/CD com outras ferramentas de mercado, como o Jenkins.
Objetivos
Implemente um projeto no SOA Suite que possa ser implantado automaticamente por meio do processo DevOps com o Oracle Visual Builder Studio.
Pré-requisitos
Conhecimento do seguinte:
- Conceitos e componentes do SOA Suite
- Conceitos e usos do Kafka
- Desenvolvimento no IDE JDeveloper
Tarefa 1: Criar sua instância do Oracle Streaming
O Oracle Cloud Streaming é um aplicativo que tem como objetivo servir como fila de mensagens, da mesma forma que a ferramenta Kafka de código-fonte aberto. O Oracle Streaming é uma solução gerenciada, o que significa que você cria uma instância para uso e não precisa se preocupar com a governança da infraestrutura. Pagar somente pelo que usar. A ferramenta também permite que você use a API REST do Kafka, tornando-a compatível com projetos Kafka existentes com as vantagens da "nuvem como serviço".
Neste tutorial, executaremos uma implementação de serviço SOA para produzir e outro serviço para consumir dados em uma fila de mensagens. Portanto, nossa primeira parada provisionará um ambiente do Oracle Streaming.
-
Crie um grupo de usuários para o Streaming e ative os usuários nesse grupo. Quando isso for feito, poderemos determinar o acesso a esse grupo por meio das políticas. Veja o exemplo a seguir de como determinar o acesso para usar o Oracle Cloud Streaming.

-
Crie a instância do Oracle Cloud Streaming. No menu principal, selecione Análise e IA, Streaming, conforme mostrado na imagem a seguir.

-
Quando terminar, você verá a console com instâncias do Oracle Cloud Streaming. Para criar sua instância, selecione o compartimento e clique em Criar Fluxo.

-
Forneça os dados da instância, como nome e compartimento. Além disso, solicite a criação de um novo Pool de Fluxos e forneça um nome para o pool. Clique em Criar.

-
Aguarde a conclusão da criação do fluxo. O fluxo é criado conforme mostrado na imagem a seguir.

-
Obtenha definições da API REST compatível com Kafka clicando no link Configurações do Kafka Connect, conforme mostrado na imagem a seguir.

-
Crie a configuração selecionando o compartimento e clicando na opção Criar Configuração de Kafka Connect.

-
Informe o compartimento e o nome da sua configuração, conforme mostrado na imagem a seguir. Crie a configuração clicando em Criar Configuração de Kafka Connect.

-
Obtenha os parâmetros de configuração para estabelecer conexão com o Oracle Cloud Stream. Vá para a opção Streams nos links à esquerda.

-
Clique no Pool criado anteriormente.
-
Clique em Definições de Conexão do Kafka.
-
Copie os parâmetros a serem usados no seu código Java.

Tarefa 2: Crie seu projeto do SOA Suite em JDeveloper
Criaremos uma instância do Oracle Cloud Streaming para substituir o Kafka. Crie um projeto com os seguintes objetivos:
- Projeto para produzir e consumir uma fila do Streaming como o Kafka
- Serviço REST para testar os dois serviços
O projeto completo está incluído neste tutorial. Você pode alterar as definições para compilar, empacotar e implantar na sua instância do SOA Suite.
Observação: este tutorial não inclui etapas detalhadas para implementar serviços REST. Para obter mais informações, consulte Como Implementar e Consumir Serviços REST com o Oracle SOA Suite.
-
Faça download do projeto SOAKafkaProducerApp usando este link: SOAKafkaProducerApp.zip.
-
Localize o arquivo do aplicativo
/SOAKafkaProducerApp/SOAKafkaProducerApp/SOAKafkaProducerApp.jws. -
Você pode exibir os projetos em JDeveloper:
SOAKafkaProducerPrjeSOAKafkaConsumerPrj
-
-
Clique na árvore do aplicativo e procure SOAKakfaConsumerPrj e clique duas vezes em
KafkaConsumer, conforme mostrado na imagem a seguir.
-
Esta é a visão do projeto SOA para consumo de fila Kafka. Esta é uma implementação típica do tipo Composto SOA. Este é um serviço REST (componente estabelecido na faixa de Serviços Expostos) e deve ser implantado no SOA Server. O componente vinculado ao serviço é a implementação do próprio serviço e é organizado na faixa de nado Componentes, conforme mostrado na imagem anterior. Ao clicar duas vezes no componente
KafkaConsumer, você será direcionado à implementação do serviço, conforme mostrado abaixo:
-
O primeiro estágio de implementação começa com um componente chamado Recebimento, responsável por receber parâmetros de trabalho iniciais, típicos de uma chamada REST. Neste tutorial, não passaremos por parâmetros, mas ele é ilustrado aqui para serviços que precisam desse recurso.



-
O componente Java Embedded é responsável por chamar uma rotina Java que, nesse caso, chamará uma classe chamada
KafaExamplecomentada posteriormente.
-
O código Java chamado neste Java Embedding é responsável pelas rotinas de produção e consumo da fila do Kafka ou do Oracle Stream (lembre-se de que a API do Oracle Streaming é compatível com o Kakfa).
java package soakafka; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.serialization.StringSerializer; import org.apache.kafka.common.serialization.StringDeserializer; import java.util.Arrays; import java.util.Date; import java.util.Properties; import java.util.concurrent.ExecutionException; import org.apache.kafka.clients.producer.Callback; import org.apache.kafka.common.errors.WakeupException; public class KafkaExample { private final String topic; private final Properties props; public KafkaExample(String brokers, String username, String password) { this.topic = "kafka_like"; String jaasTemplate = "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"%s\" password=\"%s\";"; String jaasCfg = String.format(jaasTemplate, username, password); String serializer = StringSerializer.class.getName(); String deserializer = StringDeserializer.class.getName(); //Propriedades props = new Properties(); props.put("bootstrap.servers", brokers); props.put("group.id", "kafka-hoshikawa"); props.put("enable.auto.commit", "false"); props.put("max.poll.records", "10"); props.put("auto.offset.reset", "earliest"); props.put("key.deserializer", deserializer); props.put("value.deserializer", deserializer); props.put("security.protocol", "SASL_SSL"); props.put("sasl.mechanism", "PLAIN"); props.put("sasl.jaas.config", jaasCfg); //props.put("ssl.client.auth", "requested"); } public String consume() { String ret = ""; KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Arrays.asList(topic)); try { while (true) { ConsumerRecords<String, String> records = consumer.poll(100); for (ConsumerRecord<String, String> record : records) { System.out.println(record.offset() + ": " + record.value()); ret = ret + record.value(); } if (ret != "") break; } } catch (Exception e) { // ignore for shutdown } finally { consumer.commitAsync(); consumer.close(); } return ret; }; public void produce(String message) { Producer<String, String> producer = new KafkaProducer<String, String>(props); ProducerRecord record = new ProducerRecord<String, String>(topic, "msg", message); Callback callback = (data, ex) -> { if (ex != null) { ex.printStackTrace(); return; } System.out.println( "Mensagem enviada com sucesso para: " + data.topic() + " | partition " + data.partition() + "| offset " + data.offset() + "| tempo " + data .timestamp()); }; try { producer.send(record, callback).get(); } catch (ExecutionException | InterruptedException e) { } finally { producer.close(); } } public static void main(String[] args) { /* String brokers = System.getenv("CLOUDKARAFKA_BROKERS"); String username = System.getenv("CLOUDKARAFKA_USERNAME"); String password = System.getenv("CLOUDKARAFKA_PASSWORD"); */ String brokers = "cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092"; String username = "hoshikawaoraclecloud/oracleidentitycloudservice/hoshikawa2@hotmail.com/ocid1.streampool.oc1.iad.amaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkgztajzakb5a"; String password = "Wxxxxxxxxxxxxxxxxxxxxxxk"; KafkaExample c = new KafkaExample(brokers, username, password); c.consume(); } } public static void main(String[] args) { /* String brokers = System.getenv("CLOUDKARAFKA_BROKERS"); String username = System.getenv("CLOUDKARAFKA_USERNAME"); String password = System.getenv("CLOUDKARAFKA_PASSWORD"); */ String brokers = "cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092"; String username = "hoshikawaoraclecloud/oracleidentitycloudservice/zzzzzzzzz2@zzzzzzil.com/ocid1.streampool.oc1.iad.amaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkgztajzakb5a"; String password = "Wxxxxxxxxxxxxxxxxxxxxxxk"; KafkaExample c = new KafkaExample(brokers, username, password); c.consume(); } }



-
-
Inclua pacotes Java no seu código com o Maven.
-
Neste projeto, injetamos código Java para chamar a API Kafka ou Oracle Cloud Streaming. Por se tratar de código Java, as inclusões de pacote geralmente são necessárias para usar estruturas. O Maven é a ferramenta mais usada nesses casos e, para isso, você deve incluí-lo em seu projeto. Com o botão direito do mouse, abra a opção sobre seu projeto e selecione Da Galeria, conforme mostrado na imagem a seguir.

-
Selecione a opção Maven POM for Project.

Agora você poderá configurar seu pacote com as estruturas necessárias.
-
-
Construa com o Maven.
-
Clique nas opções do Application Windows e, em seguida, clique em View de Diretório para acessar o arquivo /SOA/SCA-INF/pom.xml.


-
Clique duas vezes no arquivo pom.xml para abri-lo no editor JDeveloper e selecione a guia Origem para exibir o código.
-
Dessa forma, você poderá visualizar o código do arquivo pom.xml.

-
Aqui está uma alteração muito importante no processo DevOps. Você VE incluir essas linhas para automação.
Observação: O projeto neste tutorial já está configurado para oferecer suporte à automação DevOps, mas para novos projetos, siga este procedimento para automatizar o processo DevOps. Entre a
tag e a tag, você pode incluir esse código, que será responsável pela montagem do seu pacote de software para implantação posterior com **Ant**. Para a automação DevOps, inclua as 3 linhas a seguir.
<directory>target</directory><outputDirectory>classes</outputDirectory><sourceDirectory>src</sourceDirectory>
Portanto, seu código completo terá esta aparência:
xml pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>soakafka</groupId> <artifactId>kafka</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>1.0.0</version> </dependency> </dependencies> <build> <!-- For DevOps automation, you need to include the 3 lines below - Cristiano Hoshikawa - 2020-11-28 --> <directory>target</directory> <outputDirectory>classes</outputDirectory> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>KafkaExample</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <manifest> <mainClass>KafkaExample</mainClass> <addClasspath>true</addClasspath> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
-
-
Crie e Implante com o Ant.
-
Ant é uma ferramenta bem conhecida no mercado, desenvolvida pelo projeto Jakarta, responsável por automatizar compilações, compilações de pacotes e implantações de aplicativos para projetos como Java. No processo DevOps, Ant será fundamental para criar o pacote SOA Suite e também para implantar esse pacote no servidor Weblogic SOA Suite remoto.
-
Para criar o arquivo build.xml, com o botão direito do mouse, abra a opção sobre o projeto e selecione Da Galeria conforme mostrado na imagem a seguir.

-
Selecione a opção Ant no menu esquerdo e clique em Criar Arquivo do Projeto.

-
O arquivo build.xml é um arquivo de configuração muito comum para uso com Ant.
xml build.xml <?xml version="1.0" encoding="UTF-8" ?> <!--Ant buildfile generated by Oracle JDeveloper--> <!--Generated Oct 12, 2020 11:35:33 PM--> <project xmlns="antlib:org.apache.tools.ant" name="SOAKafkaProducerPrj" default="all" basedir="."> <property environment="env" /> <property file="build.properties"/> <path id="library.SOA.Designtime"> <pathelement location="${install.dir}/soa/plugins/jdeveloper/extensions/oracle.sca.modeler.jar"/> </path> <path id="library.SOA.Runtime"> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar"/> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/tracking-api.jar"/> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/tracking-core.jar"/> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.fabric_11.1.1/edn.jar"/> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar"/> <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fabric-common-api.jar"/> </path> <path id="library.BPEL.Runtime"> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.bpel_11.1.1/orabpel.jar"/> </path> <path id="library.Mediator.Runtime"> <pathelement location="${install.dir}/soa/soa/modules/oracle.soa.mediator_11.1.1/mediator_client.jar"/> </path> <path id="library.MDS.Runtime"> <pathelement location="${oracle.commons}/modules/oracle.mds/mdsrt.jar"/> </path> <path id="library.BC4J.Service.Runtime"> <pathelement location="${oracle.commons}/modules/oracle.adf.model/adfbcsvc.jar"/> <pathelement location="${oracle.commons}/modules/oracle.adf.model/adfbcsvc-share.jar"/> <pathelement location="${oracle.commons}/modules/commonj.sdo.backward.jar"/> <pathelement location="${oracle.commons}/modules/commonj.sdo.jar"/> <pathelement location="${oracle.commons}/modules/oracle.toplink/eclipselink.jar"/> <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.wsclient-impl.jar"/> <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.jrf-ws-api.jar"/> <pathelement location="${oracle.commons}/modules/com.oracle.webservices.fmw.web-common-schemas-impl.jar"/> </path> <path id="classpath"> <path refid="library.SOA.Designtime"/> <path refid="library.SOA.Runtime"/> <path refid="library.BPEL.Runtime"/> <path refid="library.Mediator.Runtime"/> <path refid="library.MDS.Runtime"/> <path refid="library.BC4J.Service.Runtime"/> </path> <target name="init"> <tstamp/> <mkdir dir="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/SCA-INF/classes"/> </target> <target name="all" description="Build the project" depends="deploy,copy"/> <target name="clean" description="Clean the project"> <delete includeemptydirs="true" quiet="true"> <fileset dir="${output.dir}" includes="**/*"/> </delete> </target> <target name="compile" depends="init"> <javac srcdir="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/SCA-INF/src/soakafka" destdir="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/SCA-INF/classes" includeantruntime="false"> <include name="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/SCA-INF/lib/**"/> </javac> </target> <target name="sca-compile" depends="compile"> <ant antfile="${middleware.home}/soa/bin/ant-sca-compile.xml" inheritAll="false"> <property name="scac.input" value="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/composite.xml"/> </ant> </target> <target name="sca-package" depends="sca-compile"> <ant antfile="/${middleware.home}/soa/bin/ant-sca-package.xml" inheritAll="false"> <property name="compositeDir" value="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA"/> <property name="compositeName" value="SOAKafkaProducerPrj"/> <property name="revision" value="${revision}"/> <property name="sca.application.home" value="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj"/> </ant> </target> <target name="deploy" description="Deploy JDeveloper profiles" depends="sca-package"> <taskdef name="ojdeploy" classname="oracle.jdeveloper.deploy.ant.OJDeployAntTask" uri="oraclelib:OJDeployAntTask" classpath="${oracle.jdeveloper.ant.library}"/> <ora:ojdeploy xmlns:ora="oraclelib:OJDeployAntTask" executable="${oracle.jdeveloper.ojdeploy.path}" ora:buildscript="${oracle.jdeveloper.deploy.dir}/ojdeploy-build.xml" ora:statuslog="${oracle.jdeveloper.deploy.dir}/ojdeploy-statuslog.xml"> <ora:deploy> <ora:parameter name="workspace" value="${oracle.jdeveloper.workspace.path}"/> <ora:parameter name="project" value="${oracle.jdeveloper.project.name}"/> <ora:parameter name="profile" value="${oracle.jdeveloper.deploy.profile.name}"/> <ora:parameter name="nocompile" value="false"/> <ora:parameter name="outputfile" value="${oracle.jdeveloper.deploy.outputfile}"/> </ora:deploy> </ora:ojdeploy> <!-- Deployment SOA Suite Composite --> <ant antfile="/${middleware.home}/soa/bin/ant-sca-deploy.xml" target="deploy" inheritall="false"> <property name="user" value="${WEBLOGICUSER}"/> <property name="password" value="${WEBLOGICPWD}"/> <property name="serverURL" value="${WEBLOGICURL}"/> <property name="sarLocation" value="${workspace}/SOAKafkaProducerApp/SOAKafkaProducerPrj/SOA/deploy/sca_SOAKafkaProducerPrj_rev${revision}.jar"/> <property name="overwrite" value="true"/> </ant> </target> <target name="copy" description="Copy files to output directory" depends="init"> <patternset id="copy.patterns"> <include name="**/*.GIF"/> <include name="**/*.JPEG"/> <include name="**/*.JPG"/> <include name="**/*.PNG"/> <include name="**/*.cpx"/> <include name="**/*.dcx"/> <include name="**/*.ejx"/> <include name="**/*.gif"/> <include name="**/*.ini"/> <include name="**/*.jpeg"/> <include name="**/*.jpg"/> <include name="**/*.png"/> <include name="**/*.properties"/> <include name="**/*.sva"/> <include name="**/*.tag"/> <include name="**/*.tld"/> <include name="**/*.wsdl"/> <include name="**/*.xcfg"/> <include name="**/*.xlf"/> <include name="**/*.xml"/> <include name="**/*.xsd"/> <include name="**/*.xsl"/> <include name="**/*.exm"/> <include name="**/*.xml"/> <exclude name="build.xml"/> </patternset> <copy todir="${output.dir}"> <fileset dir="SOA/SCA-INF/src"> <patternset refid="copy.patterns"/> </fileset> <fileset dir="."> <patternset refid="copy.patterns"/> </fileset> </copy> </target> </project> -
O arquivo
build.propertiesdetermina as propriedades que serão usadas no arquivo de configuraçãobuild.xml.build.properties oracle.commons=../../../../oracle_common/ install.dir=../../../.. oracle.home=${env.ORACLE_HOME_SOA_12_2_1} oracle.jdeveloper.workspace.path=${env.WORKSPACE}/SOAKafkaProducerApp/SOAKafkaProducerApp.jws middleware.home=${env.MIDDLEWARE_HOME_SOA_12_2_1} workspace=${env.WORKSPACE} oracle.jdeveloper.ant.library=${env.ORACLE_HOME_SOA_12_2_1}/jdev/lib/ant-jdeveloper.jar oracle.jdeveloper.deploy.dir=${env.WORKSPACE}/SOAKafkaProducerApp/SOAKafkaProducerPrj/deploy oracle.jdeveloper.ojdeploy.path=${oracle.home}/jdev/bin/ojdeploy javac.nowarn=off oracle.jdeveloper.project.name=SOAKafkaProducerPrj revision=1.0 oracle.jdeveloper.deploy.outputfile=${env.WORKSPACE}/SOAKafkaProducerApp/SOAKafkaProducerPrj/deploy/sca_${profile.name}_rev{$revision} output.dir=classes javac.deprecation=off oracle.jdeveloper.deploy.profile.name=* javac.debug=on WEBLOGICPWD=${env.WEBLOGICPWD} WEBLOGICURL=${env.WEBLOGICURL} WEBLOGICUSER=${env.WEBLOGICUSER}
-
-
Inicialize o ambiente do SOA Suite para teste. Primeiro, abra a porta de firewall do seu ambiente SOA Suite. A porta a ser liberada é 9092, que representa a porta do Oracle Streaming ou Kafka.
-
Ative o Servidor SOA Incorporado em JDeveloper.
-
O JDeveloper tem um servidor SOA Suite integrado para desenvolvimento e teste. É um servidor com praticamente todas as funcionalidades necessárias para que você desenvolva seus serviços SOA. Para usar este servidor, você deve criá-lo e ativá-lo.
-
Para ativar o servidor, primeiro você precisa exibir os servidores de aplicativos. Para isso, vá para a opção "Janela" e selecione Servidores de Aplicativos, conforme mostrado na imagem a seguir.

-
A janela dos servidores de aplicativos aparecerá no lado esquerdo da tela. Verifique se o
integratedWeblogicServerjá foi criado na janela. Caso contrário, será necessário criá-lo e ativá-lo para uso. -
Vá para a opção Executar e selecione Iniciar Instância do Servidor, conforme mostrado na imagem a seguir.

-
Insira os dados necessários para criar a instância do weblogic. Anote os valores, pois você precisará deles mais tarde para testar.

-
Se você criou o servidor ou se ele já estava disponível, clique com o botão direito do mouse no servidor e ative-o conforme mostrado na imagem a seguir.

-
-
Execute uma Implantação Manual no SOA Suite.
-
Primeiro, vamos executar a implantação do seu serviço de consumidor Kafka (
SOAKafkaConsumerPrj) manualmente. Para fazer isso, localize sua guia Aplicativos e abra as opções de menu com o botão direito do mouse, conforme mostrado na imagem a seguir.
-
Selecione a opção Implantar e, em seguida, crie um novo perfil de implantação. Você verá uma tela de configuração e deverá escolher o tipo de perfil como Arquivo SOA-SAR, pois geraremos um arquivo.

-
Esta é a preparação para que possamos implantar o seu pacote na próxima etapa. Na próxima tela, mantenha as opções fornecidas e clique em OK.

-
Abra a opção de menu Implantar novamente. A opção de implantação é criada e está pronta para uso. Selecione-o.

-
Agora vamos escolher a opção de implantar diretamente no servidor SOA. Em seguida, escolha a opção conforme mostrado abaixo.

-
Deixe todas as opções fornecidas e selecione Substituir quaisquer compostos existentes pelo mesmo ID da revisão. Se essa opção estiver desmarcada e você tentar executar implantações consecutivas após sua primeira execução, será interrompido com uma mensagem de erro.

-
Em seguida, selecione a opção IntegratedWeblogicServer. Esta opção representa o servidor incorporado do JDeveloper explicado na seção anterior (Como ativar o Servidor SOA Incorporado em JDeveloper).
-
Se o servidor Weblogic JDeveloper tiver sido criado e iniciado com sucesso, você verá a opção abaixo e o status "RUNNING" confirmando que tudo está OK. Se você não vir esta opção, provavelmente ainda não criou o servidor ou não o iniciou. Revise as etapas anteriores.

-
Confirme com Próximo até a tela de resumo e clique em Finalizar.
-
Na janela central inferior, você pode seguir a implantação do seu aplicativo. Aguarde até que você veja Implantação concluída como mensagem de sucesso.

-
-
Instale o certificado JKS no Weblogic.
-
Em ambientes SSL, será necessário criar a segurança por meio de chaves (públicas/privadas) que serão executadas por meio de certificados JKS, adequados ao ambiente WebLogic. O processo de geração de chaves é feito obtendo o certificado da sua instância do Oracle Cloud Streaming e adicionando esse certificado a um arquivo JKS, que chamaremos DemoTrust (
DemoTrust.jks).Observação: O arquivo DemoTrust.jks será carimbado com uma ALIAS, bem como uma senha que será usada no código Java.
-
Depois de criar seu arquivo JKS, você poderá mover esse arquivo para a estrutura do servidor WebLogic.
-
Obtenha o Certificado de Streaming do Oracle Cloud. Para obter mais informações, consulte Usando o Oracle Cloud Infrastructure Streaming Service Adapter com o Oracle Integration Generation 2.
-
Gere o arquivo JKS.
-
Instale o arquivo JKS no Weblogic.
echo -n | openssl s_client -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ociStreaming.cert keytool -keystore Streaming_truststore.jks -alias OSSStream -import -file ociStreaming.certsudo keytool -importcert -file ociStreaming.cert -keystore DemoTrust.jks -alias "kafka" -storepass DemoTrustKeyStorePassPhrasePor exemplo:
echo -n | openssl s_client -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ociStreaming.cert keytool -keystore Streaming_truststore.jks -alias OSSStream -import -file ociStreaming.certsudo keytool -importcert -file ociStreaming.cert -keystore DemoTrust.jks -alias "kafka" -storepass DemoTrustKeyStorePassPhrase-
Se quiser gerar ou excluir armazenamentos de chaves por alias, siga estas etapas:
shell sudo keytool -import -v -file streaming.us-ashburn-1.oci.oraclecloud.com.cer -storepass changeit -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts -alias "kafka" sudo keytool -delete -alias kafka -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit sudo keytool -import -v -file streaming.us-ashburn-1.oci.oraclecloud.com.cer -keystore DemoTrust.jks -alias "kafka" -storepass DemoTrustKeyStorePassPhrase sudo keytool -delete -alias kafka -keystore DemoTrust.jks -storepass DemoTrustKeyStorePassPhrase -
Localize sua pasta wlserver que geralmente tem este caminho:
/wlserver/server/lib. Por exemplo:cd /u01/app/oracle/middleware/wlserver/server/lib,cd /User/u01/Oracle/Middleware/Oracle_Home/wlserver/server/lib -
Substitua o arquivo
DemoTrust.jkspelo gerado nesta etapa. -
Depois de copiar o arquivo
DemoTrust.jks, você deve alterar o diretório em que implantou o arquivo. Altere os arquivos /src/soakafka/KafkaExample.java dos dois projetos (SOAKafkaProducerprjeSOAKafkaConsumerprj) ao criar a classe da seguinte forma:
-
-
-
-
Teste o aplicativo.
-
Após fazer upload do ambiente de teste, sua instância estará disponível em: http://localhost:7101/em.
-
Lembre-se do seu nome de usuário e senha.
-
Vá para seu aplicativo no item de menu SOA e na opção Componentes Implantados.

-
Preencha o parâmetro de mensagem exigido pelo serviço, de acordo com a implementação. Este parâmetro foi chamado de "msg" e o formato da mensagem é JSON de acordo com as etapas anteriores.

-
Depois de inserir sua mensagem no formato JSON, clique em "Testar Web Service" para executar seu serviço de Produtor na fila de mensagens.

-
Tarefa 3: Criar uma Instância do SOA Suite no Oracle Cloud
Você deve ter uma instância ativa do Oracle SOA Suite para que seu aplicativo seja implantado. A instância a ser usada neste tutorial será a imagem disponível em nosso Marketplace e terá uma estrutura do SOA Suite servida por um bastion para proteger o servidor.
-
Para isso, vamos criar uma instância. Na console do Oracle Cloud, clique no menu principal (no canto superior esquerdo da tela), opção "Marketplace" e "Todos os Aplicativos", conforme abaixo:

-
Na tela de pesquisa de imagem, digite "soa suite" para localizar a imagem correta:

-
Clique na opção "Oracle SOA Suite (BYOL)" para começar a criar a instância. Você verá algumas opções obrigatórias a serem selecionadas. Para obter mais informações, consulte Usando o Oracle SOA Suite on Marketplace no Oracle Cloud Infrastructure.
-
Confirme a versão do SOA Suite: 12.2.1.4 ou posterior (este workshop foi desenvolvido com a versão 12.2.1.4).
-
Selecione o compartimento no qual você deseja que a instância do SOA Suite seja criada.
-
Confirme a aceitação dos termos e condições do acordo de licenciamento.
-
Clique em Iniciar Pilha.

-
-
No menu principal da console do Oracle Cloud, vá para Computação e Instâncias.

-
Selecione o compartimento no qual você criou sua instância do SOA Suite e, quando selecioná-la, verá 2 máquinas virtuais.
- O Servidor do SOA Suite
- A VM que servirá como bastion para proteger o servidor do SOA Suite
Observação: O bastion da VM terá um IP público, que será possível acessar pela Internet para acessar o servidor do SOA Suite abrindo um túnel IP, explicado posteriormente.

-
Para estabelecer um túnel entre o Bastion Server e a instância do SOA Suite, você pode fazer isso por meio do comando SSH, conforme abaixo:
shell ssh -Y -i <Arq.Chave SSH> -L <Port SOA>:<IP Instance SOA Suite>:<Port External> opc@<IP Public Bastion> Example: ssh -Y -i keyrvbastion.pem -L 7002:10.253.128.9:7002 opc@152.67.55.11Depois de estabelecer a conexão via Bastion, você poderá acessar o Weblogic Enterprise Manager com http://localhost:7002/em.
Tarefa 4: Automatizar a implantação com o Oracle Visual Builder Studio
Agora, vamos automatizar a implantação de implementações SOA no servidor Weblogic criado na etapa anterior. Para isso, você precisará de uma instância do Oracle Visual Builder Studio. O Oracle Visual Builder Studio funciona por projetos, para que você possa criar um projeto e incluir os usuários que participarão de sua execução.
Você pode encontrar mais informações sobre a operação na seção Links Relacionados no fim deste documento, procure Implantar com o Visual Builder Studio. Em seguida, siga as etapas para configurar uma criação e implantação automatizadas de suas implementações do SOA Suite no servidor Weblogic.
-
Configure uma máquina virtual para BUILD no ORACLE SOA Suite. Antes de iniciar as definições, você precisará configurar uma máquina virtual que atenda às necessidades de compilação de um projeto do Oracle SOA Suite. Para isso, será necessário selecionar as ferramentas corretas a serem instaladas nesta VM.
-
Clique em Organização no menu esquerdo e, em seguida, clique em Modelos de Máquina Virtual.

-
Clique em Criar Modelo para configurar quais ferramentas estarão disponíveis para criar seus projetos do SOA Suite. Em seguida, digite um nome para seu Modelo e, se desejar, opcionalmente, você pode descrever sobre esse modelo. Não se esqueça de selecionar em qual plataforma esta VM estará ativada. Escolha a opção Oracle Linux (até a data deste documento, tivemos o Oracle Linux 7, mas você pode selecionar outra opção mais recente.

-
Selecione todos os componentes importantes para criar seus projetos. Escolha todas as opções abaixo.


Seu TEMPLATE é criado e sua VM será instanciada assim que um projeto solicitar uma criação.
-
Configuração de BUILD de um projeto no Oracle Visual Builder Studio. Primeiro, abra um projeto no Oracle Visual Builder Studio, no exemplo abaixo, clique em CRISTIANO HOSHIKAWA PROJ.

-
Você verá a página do seu projeto, junto com um menu esquerdo com as opções disponíveis e no lado direito seus projetos no repositório de código-fonte e também a equipe que faz parte desse projeto (usuários do projeto).

-
-
Clique na opção BUILD no menu esquerdo para exibir todas as definições existentes e, em seguida, vamos configurar um novo BUILD para o seu projeto. Clique em Criar Job.

-
Informe um nome para seu Job e selecione também o Modelo de VM (criado na sessão anterior).

-
-
Agora vamos configurar a criação do seu projeto passo a passo. A primeira parte da configuração será estabelecer o repositório do projeto do Oracle SOA Suite que deve ser criado anteriormente com o código-fonte. Neste documento, estamos trabalhando com o projeto SOAKafkaProducerApp disponível no git deste documento. Você poderá clonar esse projeto com o git da sua instância do Oracle Visual Builder Studio.
-
Após clonar o projeto
SOAKafkaProducerAppno Visual Builder Studio, configure seu BUILD com o nome do repositório git e selecione a opção "Executar automaticamente o build no commit do SCM". Verifique também se o nome da ramificação corresponde ao seu projeto git.
-
Agora selecione a guia "Parâmetros". Você precisará criar 3 parâmetros com o menu Combobox "Adicionar Parâmetros" no lado direito. Abaixo, os nomes que devem ser criados e também entre parênteses, o tipo:
-
WEBLOGICUSER: o usuário do Weblogic (Tipo de string)
-
WEBLOGICPWD: sua senha de usuário do Weblogic (digite Segredo/Senha)
-
WEBLOGICURL: o URL da instância do Weblogic (Tipo de string)
-
Uma observação importante é que o URL em WEBLOGICURL deve ser localhost como um túnel será estabelecido através do Servidor Bastion

-
-
Agora clique na guia "Antes da Criação" para configurar o túnel SSH do Bastion Server para o Weblogic SOA Suite Server. Lembre-se de ter sua chave SSH (Chave Privada) e preencha o campo correspondente. Preencha os dados da montagem do túnel.
-
Nome do Usuário: opc
-
Porta Local: 11002
-
Host Remoto: IP Privado da sua instância do SOA Suite
-
Porta Remota: 11002
-
Servidor SSH: IP Público do seu Bastion
-
Uma observação importante é que a porta 11002 foi configurada anteriormente para que seja exatamente a porta de acesso para implantar seus projetos do SOA Suite.

-
-
Clique na guia "Etapas" para configurar BUILD (via Maven) e DEPLOYMENT (via ANT) do seu projeto do SOA Suite. Preencha como segue:
- MAVENÇÃO
-
Metas: compilar pacote
-
Arquivo POM: SOAKafkaProducerApp/SOAKafkaConsumerPrj/SOA/SCA-INF/pom.xml. Este é o arquivo pom.xml do Maven para montar seu pacote de projetos
-
ANT
-
Destinos: implantação do pacote sca
-
Arquivo de Construção: SOAKafkaProducerApp/SOAKafkaConsumerPrj/build.xml. Este é o arquivo Ant build.xml para implantar seu aplicativo após o build.
-
-
Propriedades
-
WEBLOGICUSER=${WEBLOGICUSER}
-
WEBLOGICPWD=${WEBLOGICPWD}
-
WEBLOGICURL=${WEBLOGICURL}
-
Observação Importante:
-
O aplicativo SOAKafkaProducerApp tem 2 projetos: SOAKafkaProducerPrj e SOAKafkaConsumerPrj.
-
Estamos ilustrando a configuração de um dos projetos. As mesmas etapas devem ser executadas para o outro projeto.

-
Agora vamos concluir a configuração BUILD. Selecione a guia "Após a Criação". Essa etapa é opcional, mas talvez você queira gerar o artefato criado pela etapa anterior ao executar o Maven. Para isso, configure esta etapa para que o artefato seja gerado para download posterior.

-
-
Execute o BUILD no Oracle Visual Builder Studio. Uma vez configurado, cada vez que houver um commit no repositório de código (Visual Builder Studio git), o BUILD será iniciado automaticamente. Você também pode executar o BUILD manualmente, para isso basta clicar na opção BUILD. Tente executar BUILD e você poderá verificar os Logs gerados.



Links Relacionados
-
Usando o Oracle Cloud Infrastructure Streaming Service Adapter com o Oracle Integration
-
Como usar um Túnel SSH em Jobs de Build do Oracle Developer Cloud Service
-
Aplicando Patches a Instâncias Compostas SOA no Oracle 12.2.1
-
Usando o Oracle Cloud Infrastructure Streaming Service Adapter com o Oracle Integration
Aquisições
- Autor - Cristiano Hoshikawa (Engenheiro de Soluções da Equipe A do Oracle LAD)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Oracle SOA Suite in Oracle Visual Builder Studio
F79404-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.