Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a Oracle Cloud Infrastructure Free Tier.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Despliegue de Oracle SOA Suite en Oracle Visual Builder Studio
Introducción
Oracle Visual Builder Studio es la herramienta oficial de Oracle para automatizar procesos DevOps con diferentes tecnologías como:
- Kubernetes/Docker
- funciones
- Servidores de aplicaciones como Oracle Weblogic, IIS, JBoss, Tomcat
- Oracle Forms
- Oracle SOA Suite
- Oracle Integration (OIC)
En este tutorial se muestra un ejemplo de cómo implantar las siguientes funcionalidades en Oracle SOA Suite.
- Exposición de un servicio REST
- Trabajar con temas de Kafka (o Oracle Cloud Streaming) a través de una API de REST compatible con Kafka
- Implantar una llamada Java embebida
- Despliegue automáticamente el paquete de SOA Suite en el servidor SOA
Nota importante: actualmente, solo es posible implantar la integración y el despliegue continuos con Oracle SOA Suite mediante Oracle Visual Builder Studio. Esto se debe a que solo Visual Builder Studio tiene plugins ya preinstalados en la máquina virtual para procesar y compilar (BUILD) los paquetes necesarios. Por lo tanto, aún no es posible implantar la integración y el despliegue continuos con otras herramientas de mercado como Jenkins.
Objetivos
Implante un proyecto en SOA Suite que se pueda desplegar automáticamente mediante el proceso DevOps con Oracle Visual Builder Studio.
Requisitos
Conocimiento de lo siguiente:
- Conceptos y componentes de SOA Suite
- Conceptos y usos de Kafka
- Desarrollo en JDeveloper IDE
Tarea 1: Crear la instancia de Oracle Streaming
Oracle Cloud Streaming es una aplicación cuyo objetivo es servir como cola de mensajes, al igual que la herramienta de código abierto Kafka. Oracle Streaming es una solución gestionada, lo que significa que crea una instancia para su uso y no tiene que preocuparse por el control de la infraestructura. Pague solo por lo que utiliza. La herramienta también le permite utilizar la API de REST de Kafka, lo que la hace compatible con los proyectos de Kafka existentes con las ventajas de "nube como servicio".
En este tutorial, ejecutaremos una implantación del servicio SOA para producir y otro servicio para consumir datos en una cola de mensajes. Por lo tanto, nuestra primera parada será aprovisionar un entorno de Oracle Streaming.
-
Cree un grupo de usuarios para Streaming y active los usuarios de este grupo. Una vez hecho esto, podemos determinar el acceso a este grupo a través de las políticas. Consulte el siguiente ejemplo de cómo determinar el acceso para utilizar Oracle Cloud Streaming.
-
Cree la instancia de Oracle Cloud Streaming. En el menú principal, seleccione Análisis e IA, Flujo, como se muestra en la siguiente imagen.
-
Cuando haya terminado, verá la consola con instancias de Oracle Cloud Streaming. Para crear la instancia, seleccione el compartimento y haga clic en Crear flujo.
-
Proporcione los datos de la instancia, como el nombre y el compartimento. Además, solicite la creación de un nuevo pool de flujos y proporcione un nombre para el pool. Haga clic en Crear.
-
Espere a que termine la creación del flujo. El flujo se crea como se muestra en la siguiente imagen.
-
Obtenga la configuración de la API de REST compatible con Kafka haciendo clic en el enlace Configuraciones de Kafka Connect, como se muestra en la siguiente imagen.
-
Para crear la configuración, seleccione el compartimento y haga clic en la opción Crear configuración de Kafka Connect.
-
Introduzca el compartimento y el nombre de la configuración como se muestra en la siguiente imagen. Para crear la configuración, haga clic en Crear configuración de Kafka Connect.
-
Obtenga los parámetros de configuración para conectarse a Oracle Cloud Stream. Vaya a la opción Flujos desde los enlaces de la izquierda.
-
Haga clic en el pool creado anteriormente.
-
Haga clic en Configuración de conexión de Kafka.
-
Copie los parámetros que desea utilizar en el código Java.
Tarea 2: Cree el proyecto de SOA Suite en JDeveloper
Crearemos una instancia de Oracle Cloud Streaming para sustituir a Kafka. Cree un proyecto con los siguientes objetivos:
- Proyecto para producir y consumir una cola de Streaming como Kafka
- Servicio REST para probar ambos servicios
El proyecto completo se incluye en este tutorial. Puede cambiar la configuración para compilar, empaquetar y desplegar en la instancia de SOA Suite.
Nota: En este tutorial no se incluyen pasos detallados para implantar servicios REST. Para obtener más información, consulte Cómo implantar y consumir servicios REST con Oracle SOA Suite.
-
Descargue el proyecto SOAKafkaProducerApp mediante este enlace: SOAKafkaProducerApp.zip.
-
Busque el archivo de aplicación
/SOAKafkaProducerApp/SOAKafkaProducerApp/SOAKafkaProducerApp.jws
. -
Puede ver los proyectos en JDeveloper:
SOAKafkaProducerPrj
ySOAKafkaConsumerPrj
-
-
Haga clic en el árbol de aplicaciones y busque SOAKakfaConsumerPrj y haga doble clic en
KafkaConsumer
como se muestra en la siguiente imagen.-
Esta es la visión del proyecto SOA para el consumo de colas de Kafka. Esta es una implementación típica del tipo Compuesto de SOA. Se trata de un servicio REST (componente establecido en la vía Servicios expuestos) y se debe desplegar en el servidor SOA. El componente enlazado al servicio es la implementación del servicio en sí y está dispuesto en el carril de Componentes, como se muestra en la imagen anterior. Al hacer doble clic en el componente
KafkaConsumer
, se le dirigirá a la implantación del servicio, como se muestra a continuación: -
La primera etapa de implantación comienza con un componente denominado Recibir, responsable de recibir los parámetros de trabajo iniciales, típicos de una llamada REST. En este tutorial, no transferiremos parámetros, pero se ilustra aquí para los servicios que necesitan este recurso.
-
El componente embebido de Java es responsable de llamar a una rutina de Java que, en este caso, llamará a una clase denominada
KafaExample
comentada posteriormente. -
El código Java que se llama en este embebido Java es responsable de las rutinas de producción y consumo de colas de Kafka u Oracle Stream (tenga en cuenta que la API para Oracle Streaming es compatible con 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(); } }
-
-
Incluya paquetes Java en su código con Maven.
-
En este proyecto, se inyecta código Java para llamar a Kafka u Oracle Cloud Streaming API. Debido a que es código Java, las inclusiones de paquetes suelen ser necesarias para utilizar marcos. Maven es la herramienta más utilizada en estos casos y, para ello, debe incluirla en su proyecto. Con el botón derecho del mouse, abra la opción sobre el proyecto y seleccione Desde galería como se muestra en la siguiente imagen.
-
Seleccione la opción POM de Maven para Proyecto.
Ahora podrá configurar su paquete con los marcos necesarios.
-
-
Cree con Maven.
-
Haga clic en las opciones de Windows de aplicación y, a continuación, haga clic en la vista de directorio para acceder al archivo /SOA/SCA-INF/pom.xml.
-
Haga doble clic en el archivo pom.xml para abrirlo en el editor JDeveloper y seleccione el separador Origen para ver el código.
-
De esta manera, podrá visualizar el código del archivo pom.xml.
-
Este es un cambio muy importante en el proceso DevOps. Debe incluir estas líneas para la automatización.
Nota: El proyecto de este tutorial ya está configurado para soportar la automatización de DevOps, pero para nuevos proyectos, siga este procedimiento para automatizar el proceso DevOps. Entre la etiqueta
y la etiqueta puede incluir este código, que será el responsable de ensamblar el paquete de software para su posterior despliegue con **Ant**. Para la automatización DevOps, debe incluir las siguientes 3 líneas.
<directory>target</directory>
<outputDirectory>classes</outputDirectory>
<sourceDirectory>src</sourceDirectory>
Así que el código completo se verá así:
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>
-
-
Crear y desplegar con Ant.
-
Ant es una herramienta conocida del mercado, desarrollada por el proyecto Jakarta, responsable de automatizar las compilaciones, las creaciones de paquetes y los despliegues de aplicaciones para proyectos como Java. En el proceso DevOps, Ant será fundamental para crear el paquete de SOA Suite y también para desplegar este paquete en el servidor remoto de Weblogic SOA Suite.
-
Para crear el archivo build.xml, con el botón derecho del mouse, abra la opción sobre el proyecto y seleccione Desde galería como se muestra en la siguiente imagen.
-
Seleccione la opción Ant en el menú de la izquierda y, a continuación, haga clic en Archivo de creación de proyecto.
-
El archivo build.xml es un archivo de configuración muy común para su uso con 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>
-
El archivo
build.properties
determina las propiedades que se utilizarán en el archivo de configuraciónbuild.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}
-
-
Inicialice el entorno de SOA Suite para la prueba. Primero abra el puerto de firewall del entorno de SOA Suite. El puerto que se va a liberar es 9092, que representa el puerto de Oracle Streaming o Kafka.
-
Active el servidor SOA embebido en JDeveloper.
-
JDeveloper tiene un servidor de SOA Suite integrado para desarrollo y prueba. Se trata de un servidor con prácticamente todas las funciones necesarias para desarrollar los servicios SOA. Para utilizar este servidor, debe crearlo y activarlo.
-
Para activar el servidor, primero debe ver los servidores de aplicaciones. Para ello, vaya a la opción "Window" (Ventana) y seleccione Application Servers (Servidores de aplicaciones) como se muestra en la siguiente imagen.
-
La ventana de servidores de aplicaciones aparecerá en el lado izquierdo de la pantalla. Asegúrese de que
integratedWeblogicServer
ya se ha creado en la ventana. Si no es así, deberá crearla y activarla para su uso. -
Vaya a la opción Ejecutar y seleccione Iniciar instancia de servidor como se muestra en la siguiente imagen.
-
Introduzca los datos necesarios para crear la instancia de WebLogic. Anote los valores, ya que los necesitará más adelante para realizar pruebas.
-
Si ha creado el servidor o si ya estaba disponible, haga clic con el botón derecho en el servidor y actívelo como se muestra en la siguiente imagen.
-
-
Ejecute un despliegue manual en SOA Suite.
-
En primer lugar, realice manualmente el despliegue del servicio de consumidor de Kafka (
SOAKafkaConsumerPrj
). Para ello, busque el separador Aplicaciones y abra las opciones de menú con el botón derecho del mouse, como se muestra en la siguiente imagen. -
Seleccione la opción Desplegar y, a continuación, cree un nuevo perfil de despliegue. Verá una pantalla de configuración y debe seleccionar el tipo de perfil como Archivo SOA-SAR, ya que generaremos un archivo.
-
Esto está preparado para que podamos desplegar su paquete en el siguiente paso. En la siguiente pantalla, mantenga las opciones proporcionadas y haga clic en OK (Aceptar).
-
Vuelva a abrir la opción de menú Desplegar. La opción de despliegue se crea y está lista para su uso. Selecciónelo.
-
Ahora vamos a elegir la opción para desplegar directamente en su servidor SOA. A continuación, seleccione la opción como se muestra a continuación.
-
Deje todas las opciones proporcionadas y seleccione Sobrescribir los compuestos existentes con el mismo identificador de revisión. Si esta opción no está activada e intenta realizar despliegues consecutivos después de la primera ejecución, se interrumpirá con un mensaje de error.
-
A continuación, seleccione la opción IntegratedWeblogicServer. Esta opción representa el servidor embebido de JDeveloper explicado en la sección anterior (Cómo activar el servidor SOA embebido en JDeveloper).
-
Si el servidor JDeveloper de Weblogic se ha creado e iniciado correctamente, verá la siguiente opción y el estado "EN EJECUCIÓN" confirmando que todo está bien. Si no ve esta opción, probablemente no haya creado el servidor todavía o no lo haya iniciado. Revise los pasos anteriores.
-
Confirme con Next (Siguiente) hasta la pantalla de resumen y haga clic en Finish (Finalizar).
-
En la ventana inferior central, puede seguir el despliegue de la aplicación. Espere hasta que vea Desplegar terminado como mensaje correcto.
-
-
Instale el certificado JKS en Weblogic.
-
En entornos SSL, será necesario crear seguridad a través de claves (públicas/privadas) que se realizará a través de certificados JKS, adecuados para el entorno WebLogic. El proceso de generación de claves se realiza obteniendo el certificado de la instancia de Oracle Cloud Streaming y agregando este certificado a un archivo JKS, al que llamaremos DemoTrust (
DemoTrust.jks
).Nota: El archivo DemoTrust.jks se indicará con una ALIAS, así como una contraseña que se utilizará en el código Java.
-
Después de crear el archivo JKS, puede mover este archivo a la estructura del servidor WebLogic.
-
Obtenga el certificado de transmisión de Oracle Cloud. Para obtener más información, consulte Uso del adaptador de servicio de Oracle Cloud Infrastructure Streaming con Oracle Integration Generation 2.
-
Genere el archivo JKS.
-
Instale el archivo JKS en 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.cert
sudo keytool -importcert -file ociStreaming.cert -keystore DemoTrust.jks -alias "kafka" -storepass DemoTrustKeyStorePassPhrase
Por ejemplo:
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.cert
sudo keytool -importcert -file ociStreaming.cert -keystore DemoTrust.jks -alias "kafka" -storepass DemoTrustKeyStorePassPhrase
-
Si desea generar o suprimir almacenes de claves por alias, siga estos pasos:
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
-
Busque la carpeta wlserver que normalmente tiene esta ruta:
/wlserver/server/lib
. Por ejemplo:cd /u01/app/oracle/middleware/wlserver/server/lib
,cd /User/u01/Oracle/Middleware/Oracle_Home/wlserver/server/lib
-
Sustituya el archivo
DemoTrust.jks
por el generado en este paso. -
Después de copiar el archivo
DemoTrust.jks
, debe cambiar el directorio en el que ha desplegado el archivo. Cambie los archivos /src/soakafka/KafkaExample.java de ambos proyectos (SOAKafkaProducerprj
ySOAKafkaConsumerprj
) al crear la clase de la siguiente manera:
-
-
-
-
Pruebe la aplicación.
-
Después de cargar el entorno de prueba, la instancia estará disponible en: http://localhost:7101/em.
-
Recuerde su nombre de usuario y contraseña.
-
Vaya a la aplicación en la opción de menú SOA y en la opción Componentes desplegados.
-
Rellene el parámetro de mensaje requerido por el servicio, según la implementación. Este parámetro se denominó "msg" y el formato del mensaje es JSON según los pasos anteriores.
-
Después de introducir el mensaje en formato JSON, haga clic en "Probar servicio web" para ejecutar el servicio de productor en la cola de mensajes.
-
Tarea 3: Creación de una instancia de SOA Suite en Oracle Cloud
Debe tener una instancia activa de Oracle SOA Suite para que se despliegue la aplicación. La instancia que se utilizará en este tutorial será la imagen disponible en nuestro Marketplace y tendrá una estructura de SOA Suite servida por un bastión para proteger el servidor.
-
Para ello, vamos a crear una instancia. En la consola de Oracle Cloud, haga clic en el menú principal (en la esquina superior izquierda de la pantalla), en la opción "Marketplace" y en "Todas las aplicaciones", como se muestra a continuación:
-
En la pantalla de búsqueda de imágenes, escriba "soa suite" para encontrar la imagen correcta:
-
Haga clic en la opción "Oracle SOA Suite (BYOL)" para empezar a crear la instancia. Verá algunas opciones obligatorias para seleccionar. Para obtener más información, consulte Uso de Oracle SOA Suite en Marketplace en Oracle Cloud Infrastructure.
-
Confirme la versión de SOA Suite: 12.2.1.4 o superior (este taller se ha desarrollado con la versión 12.2.1.4).
-
Seleccione el compartimento en el que desea crear la instancia de SOA Suite.
-
Confirme la aceptación de los términos y condiciones del acuerdo de licencia.
-
Haga clic en Iniciar pila.
-
-
En el menú principal de la consola de Oracle Cloud, vaya a Compute e Instances.
-
Seleccione el compartimento en el que ha creado la instancia de SOA Suite y, al seleccionarla, verá 2 máquinas virtuales.
- Servidor de SOA Suite
- La máquina virtual que actuará como bastión para proteger el servidor de SOA Suite
Nota: El bastión de VM tendrá una IP pública a la que podrá acceder a través de Internet para acceder al servidor de SOA Suite abriendo un túnel IP, explicado más adelante.
-
Para establecer un túnel entre el servidor Bastion y la instancia de SOA Suite, puede hacerlo mediante el comando SSH de la siguiente manera:
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.11
Después de establecer la conexión mediante Bastion, puede acceder a Weblogic Enterprise Manager con http://localhost:7002/em.
Tarea 4: Automatización del despliegue con Oracle Visual Builder Studio
Ahora automatizaremos el despliegue de implantaciones de SOA en el servidor de Weblogic creado en el paso anterior. Para ello necesitará una instancia de Oracle Visual Builder Studio. Oracle Visual Builder Studio funciona por proyectos, por lo que puede crear un proyecto e incluir los usuarios que participarán en su ejecución.
Puede encontrar más información sobre la operación en la sección Enlaces relacionados al final de este documento, busque Desplegar con Visual Builder Studio. A continuación, siga los pasos para configurar una creación y despliegue automatizados de las implantaciones de SOA Suite en el servidor de Weblogic.
-
Configure una máquina virtual para BUILD en ORACLE SOA Suite. Antes de iniciar la configuración, deberá configurar una máquina virtual que satisfaga las necesidades de compilación de un proyecto de Oracle SOA Suite. Para ello, deberá seleccionar las herramientas correctas que se instalarán en esta máquina virtual.
-
Haga clic en Organización en el menú de la izquierda y, a continuación, haga clic en Plantillas de máquina virtual.
-
Haga clic en Crear plantilla para configurar las herramientas que estarán disponibles para crear los proyectos de SOA Suite. A continuación, escriba un nombre para la plantilla y, si lo desea, puede describir esta plantilla. No olvide seleccionar la plataforma en la que estará esta máquina virtual. Seleccione la opción Oracle Linux (hasta la fecha de este documento, teníamos Oracle Linux 7, pero puede seleccionar otra opción más reciente.
-
Seleccione todos los componentes importantes para crear los proyectos. Seleccione todas las opciones como a continuación.
Se crea TEMPLATE y se crea una instancia de su máquina virtual tan pronto como un proyecto solicite una creación.
-
Configuración CONSTRUIDA de un proyecto en Oracle Visual Builder Studio. En primer lugar, abra un proyecto en Oracle Visual Builder Studio, en el siguiente ejemplo, haga clic en CRISTIANO HOSHIKAWA PROJ.
-
Verá la página del proyecto, junto con un menú de la izquierda con las opciones disponibles y de la derecha los proyectos en el repositorio de código fuente y también el equipo que forma parte de este proyecto (usuarios de proyecto).
-
-
Haga clic en la opción BUILD del menú de la izquierda para ver todos los valores existentes y, a continuación, configuremos un nuevo BUILD para su proyecto. Haga clic en Crear trabajo.
-
Introduzca un nombre para el trabajo y seleccione también la plantilla de VM (creada en la sesión anterior).
-
-
Ahora vamos a configurar la creación de su proyecto paso a paso. La primera parte de la configuración será establecer el repositorio del proyecto de Oracle SOA Suite que se debe crear previamente con el código de origen. En este documento, estamos trabajando con el proyecto SOAKafkaProducerApp disponible en el git de este documento. Podrá clonar este proyecto en el git de la instancia de Oracle Visual Builder Studio.
-
Después de clonar el proyecto
SOAKafkaProducerApp
en Visual Builder Studio, configure el BUILD con el nombre del repositorio de git y seleccione la opción "Realizar creación automática en confirmación de SCM". Compruebe también que el nombre de la rama coincide con su proyecto de Git. -
A continuación, seleccione el separador "Parameters". Tendrá que crear 3 parámetros con el menú Combobox "Agregar parámetros" en el lado derecho. A continuación, los nombres que se deben crear y también entre paréntesis, el tipo:
-
WEBLOGICUSER: Usuario de Weblogic (tipo de cadena)
-
WEBLOGICPWD: contraseña de usuario de Weblogic (escriba Secreto/Contraseña)
-
WEBLOGICURL: URL de su instancia de Weblogic (tipo de cadena)
-
Una observación importante es que la URL en WEBLOGICURL debe ser localhost ya que se establecerá un túnel a través del servidor Bastion
-
-
A continuación, haga clic en el separador "Before Build" para configurar el túnel SSH desde Bastion Server hasta Weblogic SOA Suite Server. Recuerde tener su clave SSH (clave privada) y rellene el campo correspondiente. Rellene los datos del conjunto de túneles.
-
Usuario: opc
-
Puerto local: 11002
-
Host remoto: IP privada de la instancia de SOA Suite
-
Puerto Remoto: 11002
-
Servidor SSH: IP pública de su bastión
-
Una observación importante es que el puerto 11002 se ha configurado previamente para que sea exactamente el puerto de acceso para desplegar los proyectos de SOA Suite.
-
-
Haga clic en el separador "Pasos" para configurar BUILD (a través de Maven) y DEPLOYMENT (a través de ANT) de su proyecto de SOA Suite. Rellene la siguiente información:
- MAVEN
-
Objetivos: compilar paquete
-
Archivo POM: SOAKafkaProducerApp/SOAKafkaConsumerPrj/SOA/SCA-INF/pom.xml. Este es el archivo pom.xml de Maven para ensamblar el paquete de proyecto
-
ANT
-
Destinos: despliegue de sca-package
-
Archivo de construcción: SOAKafkaProducerApp/SOAKafkaConsumerPrj/build.xml. Este es el archivo Ant build.xml para desplegar la aplicación después de la creación.
-
-
Propiedades
-
WEBLOGICUSER=${WEBLOGICUSER}
-
WEBLOGICPWD=${WEBLOGICPWD}
-
WEBLOGICURL=${WEBLOGICURL}
-
Nota Importante:
-
La aplicación SOAKafkaProducerApp tiene 2 proyectos: SOAKafkaProducerPrj y SOAKafkaConsumerPrj.
-
Estamos ilustrando la configuración de uno de los proyectos. Se deben realizar los mismos pasos para el otro proyecto.
-
Ahora terminemos la configuración BUILD. Seleccione el separador "After Build". Este paso es opcional, pero puede que desee generar el artefacto creado por el paso anterior al ejecutar Maven. Para ello, configure este paso para que el artefacto se genere para su posterior descarga.
-
-
Ejecute BUILD en Oracle Visual Builder Studio. Una vez configurado, cada vez que haya una confirmación en el repositorio de código (Visual Builder Studio git), el BUILD se iniciará automáticamente. También puede ejecutar el BUILD manualmente, por lo que solo tiene que hacer clic en la opción BUILD. Intente ejecutar BUILD y podrá comprobar los logs generados.
Enlaces relacionados
-
Integración de Operaciones REST en Aplicaciones de Compuesto de SOA
-
Uso del adaptador de servicio de Oracle Cloud Infrastructure Streaming con Oracle Integration
-
Cómo utilizar un túnel SSH en trabajos de creación de Oracle Developer Cloud Service
-
Cómo Desplegar un Único Compuesto de SOA en Oracle JDeveloper
-
Aplicación de Parches a Instancias de Compuesto de SOA en Oracle 12.2.1
-
Uso del adaptador de servicio de Oracle Cloud Infrastructure Streaming con Oracle Integration
Agradecimientos
- Autor: Cristiano Hoshikawa (Ingeniero de soluciones A-Team de Oracle LAD)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre los productos, visite Oracle Help Center.
Deploy Oracle SOA Suite in Oracle Visual Builder Studio
F79404-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.