21 de noviembre de 2012

Maven: cómo excluir los archivos de firma usando el plugin shade

Al usar el plugin Shade de Maven, crea un solo JAR que incluye todos los archivos de las dependencias. El problema es que también incluye la firma digital de los JARs, lo cual causará el problema al usar el nuevo JAR.

Para excluir dichos archivos, se puede configurar el plugin de la siguiente forma:

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
         <version>2.0</version>
         <executions>
            <execution>
               <phase>package</phase>
               <goals>
                  <goal>shade</goal>
               </goals>
               <configuration>
                  <filters>
                     <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                           <exclude>META-INF/*.SF</exclude>
                           <exclude>META-INF/*.DSA</exclude>
                           <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                     </filter>
                  </filters>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</build>

9 de noviembre de 2012

Java en Sybase ASE 15

En Sybase Adaptive Server Enterprise 15, se puede ejecutar Java 6, pues cuenta con una JVM.

No están implementadas todas las clases de Java SE, pero tiene las suficientes para ser útil. Para acceder la base de datos, se puede usar JDBC; está optimizado y no se conecta mediante la red.

Para instalar las clases, se necesita que estén empaquetadas en un JAR que no esté comprimido.

Por ejemplo, si se tiene la siguiente clase de Java:
 
package com.arturotena.pruebas;
public class Echo {
   public static String echo(String s) {
     return s + " (" + System.getProperty("java.version") + ")";
   }
}


En UNIX se puede compilar y empaqutar de la siguiente forma:
 

$ javac classes/com/arturotena/pruebas/Echo.java
$ jar cv0f Echo-1.0.0.jar -C classes .

Después, para instalarla se usa la utilería installjava de Sybase ASE:
 
$ installjava -f Echo-1.0.0.jar -j Echo_1_0_0 -S servidor -U usuario -D base

Si se instaló previamente la clase, agregar el parámetro -update.

Y en SQL se puede usar el método estático público de la clase como una función definida por el usuario:
 
SELECT CONVERT(VARCHAR(20), com.arturotena.pruebas.Echo.echo("Hola, mundo"))

La JVM de Sybase ASE incluye varias clases del paquete java.net.*, de forma que es posible acceder la red para, por ejemplo, enviar correo.

Actualización: Para desinstalar un JAR de la base de datos, usar:

remove java jar Echo_1_0_0

Y para descargar el JAR, usar:

$ extractjava –j Echo_1_0_0 -f Echo-1.0.0.jar

Más información: Java in Adaptative Server Enterprise.