Buscar este blog

sábado, 4 de octubre de 2014

WS integration in multimodule Maven Project

Objetivo:

  • Tener un módulo maven común (módulo api) con el modelo y la definición de un servicio web.
  • Tener un projecto maven de tipo WAR que implemente el servicio y lo publique como un web service.
  • Tener un proyecto maven de tipo WAR que consuma ese servicio web.




La forma habitual de trabajar con web services es disponer del modelo de clases en el servidor y generar una copia, por ejemplo con wsimport, en los distintos clientes. 
Con esto se tiene replicada la misma clase en cada cliente.

Lo ideal es tener esas clases en un único sitio, un jar, y que tanto el servidor como los clientes importen esa dependencia, sin tener que volver a crearla.

La ventaja de no replicar clases es que si el servidor publica dos fachadas de servicios, pero cuyos métodos comparten alguna clase de modelo en común, los clientes podrán hacer invocaciones entre ambos con la misma clase.


En este escenario, los dos WAR tendrán como dependencia común el módulo api 

Para la generación de los clientes se usará Spring WS, que únicamente necesita la dirección del WSDL e información de marshall/unmarshall para generar el cliente.
Esta informarción de marshalling también estará en el módulo api.


También hay un portlet que actúa como cliente de ese servicio web, y con spring-ws. La idea es no implementar lógica de negocio en los portlets y emplearlos únicamente como capa vista.

El código fuente de los proyectos está en:


El cliente WS proviene de la siguiente post de Krams:: Thanks for sharing!!!!

martes, 30 de septiembre de 2014

Jboss eclipse remote debug


Para poder debugear desde eclipse un JBoss añadir la siguiente opción en el fichero de configuración.

En UNIX, standalone.conf:

 rem # Sample JPDA settings for remote socket debugging  
 set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"  

En Windows, standalone.conf:
 rem # Sample JPDA settings for remote socket debugging  
 set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"  


En el eclipse hay que:

  • Ir a Debug Configurations
  • Añadir una nueva configuración en Remote Java Application.
  • Seleccionar el proyecto, ip y puerto (8787).

sábado, 27 de septiembre de 2014

Enterprise Architect remove image frame - Enterprise Architect quitar marco imagen

Cómo quitar los marcos de las imágenes de diagramas de Enterprise Architect.

Al copiar y pegar un esquema, por defecto exporta el marco y el título del diagrama:

Para evitarlo hay que ir a Tools > Options > Diagram > DiagramFrames, y desmarcar "On Clipboard Images"




miércoles, 24 de septiembre de 2014

Java RMI Services Scan


package es.cixtec.pruebas.rmi;  
 import java.rmi.ConnectException;  
 import java.rmi.RemoteException;  
 import java.rmi.registry.LocateRegistry;  
 import java.rmi.registry.Registry;  
 /**  
  * Display names bound to RMI registry on provided host and port.  
  */  
 public class RMIScan {  
      private final static String NEW_LINE = System.getProperty("line.separator");  
      /**  
       * Main executable function for printing out RMI registry names on provided  
       * host and port.  
       *  
       * @param arguments  
       *      Command-line arguments; Two expected: first is a String  
       *      representing a host name ('localhost' works) and the second is  
       *      an integer representing the port.  
       */  
      public static void main(final String[] arguments) {  
           final String host = "localhost";  
           int port = 1099;  
           try {  
                final Registry registry = LocateRegistry.getRegistry(host, port);  
                final String[] boundNames = registry.list();  
                System.out.println("Names bound to RMI registry at host " + host  
                          + " and port " + port + ":");  
                for (final String name : boundNames) {  
                     System.out.println("\t" + name);  
                }  
           } catch (ConnectException connectEx) {  
                System.err  
                          .println("ConnectionException - Are you certain an RMI registry is available at port "  
                                    + port + "?" + NEW_LINE + connectEx.toString());  
           } catch (RemoteException remoteEx) {  
                System.err.println("RemoteException encountered: "  
                          + remoteEx.toString());  
           }  
      }  
 }