CGI: Ambiente desarrollo – Ubuntu 22.04

Instalación de VPN UNA (PC local)

  • Para instalar la VPN de la UNA debemos descar el programa
  • GlobalProtect desde aquí o sede la página oficial
  • ahora como usuario root ejecutamos
sudo dpkg -i GlobalProtect_deb-5.2.4.0-14.deb
  • Si queremos la versión con interfaz gráfica
dpkg -i GlobalProtect_UI_deb-5.2.4.0-14.deb
  • lo mandamos a configurar
globalprotect connect --portal vpn.una.ac.cr
  • Nos pide los datos del usuario
Username: 1116
Password: G0nA@l3z.g
  • Ahora para conectar por consola
globalprotect connect --portal vpn.una.ac.cr
  • O podemos abrir la interfaz
globalprotect launch-ui
  • Y le damos conectar

Instalación de Java (PC Remota)

  • https://linuxhint.com/install-java-ubuntu-22-04/
// Instalamos java 8
sudo apt install openjdk-8-jdk

// Verificamos las versiones
java -version
javac -version

// Para saber donde esta instalado
whereis java

// Resultado
java: /usr/bin/java /etc/java /usr/share/java 
  • Para administrar las diferentes versiones de java instaladas podemo ejecutar
sudo update-alternatives --config java
  • Nos muestra
  Selección   Ruta                                            Prioridad  Estado
------------------------------------------------------------
  0            /usr/lib/jvm/java-18-openjdk-amd64/bin/java      1811      modo automático
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      modo manual
  2            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1711      modo manual
  3            /usr/lib/jvm/java-18-openjdk-amd64/bin/java      1811      modo manual
  4            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      modo manual
* 5            /usr/lib/jvm/jdk1.8.0_333/bin/java               1         modo manual

  • Establecemos jdk1.8.0_333 como principal y compiamos la ruta del java para /usr/lib/jvm/jdk1.8.0_333 sin el «bin»
Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección: 5

NOTA: si no esta jdk1.8.0_333

JAVA_HOME=/usr/lib/jvm/jdk1.8.0_333
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

sudo update-alternatives --install “/usr/bin/java” “java” “/usr/lib/jvm/jdk1.8.0_333/bin/java” 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_333/bin/javac 1
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.8.0_333/bin/javaws 1

Variable JAVA_HOME

  • Para crear la variable JAVA_HOME abrimos
sudo nano /etc/environment
  • Agregamos al final del archivo
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_333/
  • Recaragamos
source /etc/environment
  • Ejecutamos
echo $JAVA_HOME
  • Resultado
/usr/lib/jvm/jdk1.8.0_333/

Instalación de VISUAL CODE

  • Descargamos descargar
  • Instalamos los plugins

Angular

NOMBREEXTENSIONESDESCRIPCIÓN
Angular Snippets
Angular Essentials
Angular Language Servicenos permite detectar errores en el template
TSLint (Microsoft)para sintaxis Typescript

.NET

NOMBREEXTENSIONESDESCRIPCIÓN
C# Extensions

JAVA

NOMBREEXTENSIONESDESCRIPCIÓN
Extension Pack for JavaPaquete con diversas extensiones para soporte JAVA.
Git GraphProvee una interfaz a git.
Community Server Connectors Da soporte para la ejecución de aplicaciones (war) en un servidor tomcat.
Spring Boot Extension PackPaquete con diversas extensiones para soporte de Spring.
Java Code Generators Generador de código java(set,get, constructor,….).
JSF Primefaces IntellisenseBrinda soporte de taglibs de componentes en xhtml de JSF, Primefaces y otras.
VSCode SDKUNA Brinda soporte de taglibs de componentes del SDKUNA en xhtml.Da la funcionalidad de poder ejecutar comandos maven y tomcat desde el menú contextual “UNA”.Carga los Keyboard Shortcuts similares a los utilizados en Apache Netbeans.
Material Icon Theme(Opcional)Provee una gana de iconos para archivos y carpetas en el tema de VSCode.
Thunder Client(Opcional)Cliente para realización de consultas Rest API, siminar a Postman.
Remote – SSHRemote – SSH: Editing Configuration Files (Opcional) Permite, mediante una conexión SSH, la gestión y trabajo remotamente. Es una buena opción si se desea utilizar la máquina virtual para trabajar. Se trabaja en la máquina local con las fuentes y configuración de la virtual.
Oracle Developer Tools for VS Code (SQL and PLSQL)(Opcional) Cliente para la administración de base de datos Oracle (Siminar al SQLDeveloper).Requiere dotnet-sdk

Personalización

  • Nota: Puede investigar, e instalar diversas extensiones desde el Marketplace de Visual Studio Code https://marketplace.visualstudio.com/VSCode
  • En la parte inferior izquierda de la pantalla del IDE, se tendrán diversas opciones, se recomienda dejar visible únicamente Folders y Servers.

VS CODE Configuración

JAVA

  • Para configurar VS Code para ejecutar java debemos tener instalado el plugin «Extension Pack for Java»
  • Luego abrimos el archivo File > Preferences > Settings
  • Al seleccionar la opción anterior, nos mostrará una pantalla con diversas opciones y una barra de búsqueda para configurar la opción deseada.
  • Seleccionamos la configuración de Remoto
  • Para configurar el JDK se debe utilizar la opción java.configuration.runtimes, por lo que escribimos en la barra de búsqueda java.configuration.runtimes y posteriormente presionamos “Edit in settings.json
  • Ahora le podemos indicar a VS Code cual JDK ejecutara, para esto agregamos:
"java.configuration.runtimes": [
        {
            "name": "JavaSE-18",
            "path": "/usr/lib/jvm/jdk1.8.0_333/"
        }    
    
    ],
  • Se recomienda también agregar la opción files.exclude, para evitar diversos tipos de archivos se suban al realizar commits, similar al .gitignore, por lo que el archivo settings.json quedaría de la siguiente manera.
"java.configuration.runtimes": [
        

        {
            "name": "JavaSE-18",
            "path": "/usr/lib/jvm/java-18-openjdk-amd64"
        }    
    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
  • Además estas configuraciones:
{
    "redhat.telemetry.enabled": false,

    "workbench.iconTheme": "material-icon-theme",
    "java.configuration.runtimes": [
    


        {
            "name": "JavaSE-1.8",
            "path": "/usr/lib/jvm/jdk1.8.0_333/"
        }    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
    "search.exclude": {
        "**/target": true,
        "**/bin": true,
        "*/target": true,
        "*/bin": true
    },
    "sdkuna.maven.executable.path": "/home/cgi/apache-maven-3.6.3-bin/bin/mvn",
    "sdkuna.maven.offline": true,
    "html.suggest.html5": false,
    "sdkuna.java.author": "Gustavo Matamoros González",
    "html.format.wrapAttributes": "force-aligned",
    "oracledevtools.query.clearResultsWindow": true,
    "oracledevtools.query.resultSet.maxRows": -1,
    "oracledevtools.query.autoCommit": false,
    "oracledevtools.query.resultSet.pageSize": 25,
    "debug.toolBarLocation": "docked",
    "java.format.settings.url": "https://artifactory.una.ac.cr/artifactory/prueba-sdkuna/java-formatter.xml",
    "java.format.settings.profile": "JavaConventions",
    "sdkuna.ssh.host": "http://10.0.100.30:8080",
    "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xms2048m -Xmx5000m -Xmx1G -Xms100m",
    "rsp-ui.rsp.java.home": "/usr/lib/jvm/jdk1.8.0_333/"
}
  • Finalmente, se guarda y cierra el archivo settings.json (File > Save).

MAVEN (PC remoto)


// Verificamos la versión
mvn -version

// Verificamos donde esta instalado
whereis maven

// Resultado
maven: /etc/maven /usr/share/maven
Maven -> SRC

Para configurar el Maven que se ejecutará, se debe utilizar la opción sdkuna.maven.executable.path, por lo que escribimos en la barra de búsqueda sdkuna.maven.executable.path y posteriormente colocamos la ruta de nuestro Maven y guardamos (File > Save).

Esta opción es la misma que configuramos desde Apache NetBeans en Tools > Options > Java Maven > “Maven Home“.

Esta configuración la hacemos para Remote SSH:

MAVEN -> OFFLINE
  • Otra propiedad importante a configurar en Maven es sdkuna.maven.offline (Si se desea una compilacción offline), si la compilación se debe realizar online, esta opción quedará sin marcar. Escribimos en la barra de búsqueda sdkuna.maven.offline y marcamos o desmarcamos la opción, según sea el caso.
  • Nota: la opcion en Apache NetBeans “Skip Test“ (Tools > Options > Java Maven > “Skip Test for any build executions not directly related to testing), por defecto ya esta configurada en la extensión, si se desea modificar, se debe realizar a través de la opción maven.executable.options.
  • Finalmente, se guarda (File > Save).
  • Nuestro archivo settings.json quedará de la siguiente manera:
Sin Offline
{
   
    "java.configuration.runtimes": [
       {
            "name": "JavaSE-18",
            "path": "/usr/lib/jvm/java-18-openjdk-amd64"
        }    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
    "sdkuna.maven.executable.path": "/usr/share/maven",
}
Con Offline
{
   
    "java.configuration.runtimes": [
       {
            "name": "JavaSE-18",
            "path": "/usr/lib/jvm/java-18-openjdk-amd64"
        }    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
    "sdkuna.maven.executable.path": "/usr/share/maven",
    "sdkuna.maven.offline": true,
}

Maven -> JDT y Maven -> Search

  • Dos configuraciones recomendadas son java.jdt.ls.vmargs y search.exclude. La primera, son argumentos que se pasarán a la máquina virtual de Java (JVM), esta configuración debe ser personalizada por usuario, según las necesidades que presente. La segunada se utiliza para excluir en las búsquedas archivos de compilación (.jar, .class,…).
  • Finalmente, nuestro archivo settings.json quedará con la siguente estructura.1
{
   
    "java.configuration.runtimes": [
       {
            "name": "JavaSE-18",
            "path": "/usr/lib/jvm/java-18-openjdk-amd64"
        }    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
    "sdkuna.maven.executable.path": "/usr/share/maven",
    "sdkuna.maven.offline": true,
    "search.exclude": {
        "**/target":true,
        "**/bin": true,
        "*/target":true,
        "*/bin": true
    },
    "html.suggest.html5": false,
    "html.format.wrapAttributes": "force-aligned",
    "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xms2048m -Xmx5000m -Xmx1G -Xms100m"        
}
  • Nota: Puede copiar este contenido y reemplazarlo por su archivo settings.json, y modificar únicamente las propiedades java.configuration.runtimes.path y sdkuna.maven.executable.path con sus respectivos valores. Además, si utiliza un sistema operativo Windows, se recomienda agregar la propiedad “terminal.integrated.defaultProfile.windows»: «Command Prompt”, para que la terminal se integre con el VSCode.

Archivo final:

  • Configuración de java.configuration.runtimes
{
    "redhat.telemetry.enabled": false,

    "workbench.iconTheme": "material-icon-theme",
    "java.configuration.runtimes": [
        



        {
            "name": "JavaSE-1.8",
            "path": "/usr/lib/jvm/jdk1.8.0_333/"
        }    
    ],
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true,
        "**/faces-config.NavData": true,
        "**/nbactions.xml": true,
        "**/nb-configuration.xml": true,
        "**/ajcore.*.txt": true,
        "**/*.log": true,
        "**/target": true
    },
    "search.exclude": {
        "**/target": true,
        "**/bin": true,
        "*/target": true,
        "*/bin": true
    },
    "sdkuna.maven.executable.path": "/home/cgi/apache-maven-3.6.3-bin/bin/mvn",
    "sdkuna.maven.offline": true,
    "html.suggest.html5": false,
    "sdkuna.java.author": "Gustavo Matamoros González",
    "html.format.wrapAttributes": "force-aligned",
    "oracledevtools.query.clearResultsWindow": true,
    "oracledevtools.query.resultSet.maxRows": -1,
    "oracledevtools.query.autoCommit": false,
    "oracledevtools.query.resultSet.pageSize": 25,
    "debug.toolBarLocation": "docked",
    "java.format.settings.url": "https://artifactory.una.ac.cr/artifactory/prueba-sdkuna/java-formatter.xml",
    "java.format.settings.profile": "JavaConventions",
    "sdkuna.ssh.host": "http://10.0.100.30:8080",
    "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xms2048m -Xmx5000m -Xmx1G -Xms100m",
    "rsp-ui.rsp.java.home": "/usr/lib/jvm/jdk1.8.0_333/"
}

Apache Tomcat.

  • Ya la maquina virtual tiene ua tomcat con la configuración de necesaria se ubica en:
  • sftp://cgi@10.0.100.30/home/cgi/apache-tomcat-8.5.78/
  • Y el archivo de configuración esta en:
  • /home/cgi/apache-tomcat-8.5.78/conf/context.xml
  • Y tiene el siguiente contenido
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!--Clon Produccion-->
    <Resource name="jdbc/sdkuna" 
    	      auth="Container"
	      type="javax.sql.DataSource" 
	      driverClassName="oracle.jdbc.OracleDriver"

	      url="jdbc:oracle:thin:@sigesadesa.una.ac.cr:1521/DESA07.una.ac.cr" 
	      username="www_sigesa" 
	      password="sigesa2015" 
	      maxActive="20000" 
	      maxIdle="100"
	      maxTotal="600" 
	      maxWait="900000"
	      maxWaitMillis="-1"
	      removeAbandonedTimeout="600" 
	      removeAbandoned="true" 
	      maxage="600000"/>

    <!-- JavaMail session factory -->
    <Resource auth="Container" 
    	      mail.smtp.host="localhost" 
    	      mail.smtp.port="25" 
    	      mail.transport.protocol="smtp" 
    	      name="mail/Session" 
    	      type="javax.mail.Session"/>

</Context>
  • para accederlo http://10.0.100.30:8080

VS Code Y Tomcat Configuración

  • La configuración de Apache Tomcat, es muy similar a la utilizada en el Apache NetBeans, para ello debemos desplegar y agregar desde la sección “SERVERS“, ubicada en la parte inferior izquierda de VSCode.
  • Desde el item “Community Server Connectors“, seleccionamos, con clic derecho, la opción “Create New Server…“ y posterior seleccionamos, desde la parte superior, la opción “No, use server on disk“ y seleccionamos nuestra carpeta que contiene el Apache Tomcat.
  • Una vez seleccionada la carpeta, se desplegará una ventana con información del tomcat en donde le podemos especificar un nombre personalizado, para este ejemplo se utilizará “DESA01“ para la propiedad “Server Name“, y finalmente presionamos sobre el botón “Finish“.

Una vez agregado el tomcat, se nos mostrará en la sección correspondiente, desde donde podremos iniciarlo, detenerlo y demás opciones.