Azure para desarrolladores de Java

Original URL…

Introducción al desarrollo de aplicaciones de Java para la nube con estos tutoriales, herramientas y bibliotecas.

Introducción

Implementación de su primera aplicación web en Azure

Ejemplos de código

Ejemplos de código de Azure con Java

Complementos de IntelliJ, Maven, Eclipse y VS Code

Herramientas & para complementos de IDE

Bibliotecas de Azure para Java

Referencia de API

Guías de introducción

Aprenda a usar Java con los servicios de Azure.

Implementación de su primera aplicación web en Azure

Implementación de una aplicación de Spring Boot con Maven

Creación de una función sin servidor de Java

Implementación en Kubernetes

Creación de una aplicación web con Cosmos DB

Integración y entrega continuas en App Service con Jenkins®

Anuncios

WSO2 – DSS Samples


wso2esb0001Cómo crear un servicio web RESTful en WSO2:

  • Entramos en WSO2 Management Console, y seleccionamos Create (en Services):
wso2esb0002

Figura 1

  • A continuacion, se nos pide rellenar los datos del servicio:
wso2esb0003

Figura 2

  • Le damos luego al botón NEXT, para rellenar los datos de nuestro Data Sources, en este caso sera una conexion a una base de datos Oracle. En otras entradas mostraremos como se puede crear un Data Source con mas detalles.

Figura 3

  • Le damos a NEXT, en la figura 2, le damos un ID a nuestro Data Source que creamos, y seleccionamos el nombre Data Source Name, del data Source creado en la figura 3.
wso2esb0005

Figura 4

  • Una vez Salvamos nuestros cambios, nos aparece el botón NEXT, para crear nuestra Query, en este caso le damos un ID a la query, y seleccionamos el DataSource creado antes, si hemos definido varios pues seleccionamis el que nos interesa usar.
    • Teniendo en cuenta que una query puede tener parametros de entrada y/o de salida, pulsamos los enlaces: Generate input Mappings y Generate Response.
wso2esb0006

Figura 5

  • En este caso nuestra query solo tenia un parametro de entrada, al que hemos llamado paramIN.
  • Y para el resultado hemos elegido JSON, en este caso nuestra query es una select que se le pasa in parametro paramIN, y nos devuelve una lista de elementos con el mismo tipo que el parametro de entrada.
    • En este caso es muy importante como montamos la repuesta JSON, en este caso: son entries, compuestas en Entry, y la entry le asociamos la columna que queremos recuperar, anteponiendole un $.
wso2esb0007

Ficura 6

  • Le damos a NEXT, y creamos una Operacion, que vinculamos a la query anterior, los parametros se generaran automaticamente.
wso2esb0008

Figura 7

  • Le damos otra vez a NEXT, y creamos un recurso, es el nombre que se usara para llamar al servicio REST.

wso2esb0009

  • Le damos a finish, y en el listado de servicios tendremos, creado ya el servicio, le damos a WSDL1.1 ó WSDL 2.0, que se genera para obtener la URL, tendria el formato siguiente:
    • http://UrlServidor:Puerto/services/NombreServicio?wsdl
    • la llamada al servicio REST seria:
      • http://UrlServidor:Puerto/services/NombreServicio/recursoPrueba?paramIN=xxxx
    • Pruebas:
  • Caso que no devuelve nada:
wso2esb0011

Figura 9

  • Caso Que devuelve resultado:
wso2esb0012

Figura 10


Java


Expande/Collapse Tree on Node select

A veces necesitamos cambiar la funcionalidad que viene por defecto en el arbol de primefaces, y expandir o contraer los nodos al seleccionarlos:

<p:tree .. selectionMode="single"
         rendered="true" scrollable="false">
         <p:treeNode style="border:none;overflow:hidden">
            <p:commandLink value="#{nodo.descripcion}"
                  action="#{...}" update="#{...}">
                 <f:param name="nodo" value="#{...}" />
            </p:commandLink> 
         </p:treeNode>
     <p:ajax event="select" update="..." listener="#{myBean.onNodeSelect}"/>
</p:tree>

En el bean correspondiente ponemos:

	public void onNodeSelect(NodeSelectEvent event) {
        if(!event.getTreeNode().isLeaf())
        {
	        if(event.getTreeNode().isExpanded())
	        {
	        	event.getTreeNode().setExpanded(false);
	        }
	        else
	        {
	        	event.getTreeNode().setExpanded(true);
	        }
        }
    }

Links

Comparator de cadenas con acentos

A veces es necesario ordenar una lista alfabéticamente, sin tener en cuenta los acentos, por ejemplo en el caso de nombres de personas, por ejemplo MiLista: Angel, Ángel, Pablo, ..etc, en caso de usar un comparador como el siguiente;

Comparator comp = (SelectItem a, SelectItem b) -> 
{
   if ((a.getValue()!=null) && (b.getValue()!=null))
      return a.getLabel().compareTo(b.getLabel());
   else
      return 1;
};
Collections.sort(MiLista, comp);
Go...

la ordenación seria:

  • Angel.
  • Pablo.
  • Ángel.

En el caso de que quisieramos una ordenación, sin tener en cuenta los acentos, usariamos el siguiente codigo:

Comparator comp = (SelectItem a, SelectItem b) -> 
{
   if ((a.getValue()!=null) && (b.getValue()!=null))
      //return a.getLabel().compareTo(b.getLabel());
       return Collator.getInstance().compare(a.getLabel(), b.getLabel());
   else
      return 1;
};
Collections.sort(MiLista, comp);
Go...

Composite Components in JSF 2.0

Desde JSF 2.0, es muy fácil crear componentes reutilizables, conocidos como composite componentsLeer más


Reset page number in primefaces Controls

...
<h:form>
...
<p:dataTable id="xxxyy" var="..." ... widgetVar="myWidgetData" .../>
...
<p:commandButton value="..." icon="..."  style="..." 
   actionListener="#{cc.attrs.metodoXXX}"
    update="#{cc.id}:idFormxxx:yyy" >
      <p:ajax onstart ="PF('myWidgetData').getPaginator().setPage(0)"/>
</p:commandButton>
</h:form>
...

Custom converter in JSF 2.0

In this article, we show you how to create a custom converter in JSF 2.0.

Steps
1. Create a converter class by implementing javax.faces.convert.Converter interface.
2. Override both getAsObject() and getAsString() methods.
3. Assign an unique converter ID with @FacesConverter annotation.
4. Link your custom converter class to JSF component via f:converter tag. More…