<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MaTT</id>
		<title>Dos Ideas. - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MaTT"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/Especial:Contribuciones/MaTT"/>
		<updated>2026-05-26T05:30:39Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Spring_Security&amp;diff=6655</id>
		<title>Spring Security</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Spring_Security&amp;diff=6655"/>
				<updated>2012-07-03T14:19:04Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: Página creada con 'Spring Security es un framework para la autenticación y control de acceso en una aplicación Java.  == Configuración rápida de Spring Security == Configurar Spring Securi…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Spring Security]] es un framework para la autenticación y control de acceso en una aplicación Java.&lt;br /&gt;
&lt;br /&gt;
== Configuración rápida de Spring Security ==&lt;br /&gt;
Configurar Spring Security para un sitio web consiste en: &lt;br /&gt;
# Agregar las librerias de Spring Security al proyecto.&lt;br /&gt;
# Crear un archivo de configuración '''applicationContext-security.xml''' con las definiciones de los accesos y usuarios.&lt;br /&gt;
# Configurar el filtro de Spring Security en el archivo '''web.xml''' &lt;br /&gt;
&lt;br /&gt;
=== 1. Configurar las librerias de Spring Security ===&lt;br /&gt;
Usando Maven, incluir 3 dependencias: &lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
	&amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt;&lt;br /&gt;
	&amp;lt;artifactId&amp;gt;spring-security-web&amp;lt;/artifactId&amp;gt;           &lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0.RELEASE&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
	&amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt;&lt;br /&gt;
	&amp;lt;artifactId&amp;gt;spring-security-config&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0.RELEASE&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;dependency&amp;gt;&lt;br /&gt;
	&amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt;&lt;br /&gt;
	&amp;lt;artifactId&amp;gt;spring-security-taglibs&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;3.1.0.RELEASE&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/dependency&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Configurar applicationContext-security.xml ===&lt;br /&gt;
Crear un archivo '''applicationContext-security.xml''' en la aplicación web. El siguiente archivo tiene una definición de ejemplo agregada.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;
       xmlns:sec=&amp;quot;http://www.springframework.org/schema/security&amp;quot;&lt;br /&gt;
       xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans&lt;br /&gt;
           http://www.springframework.org/schema/beans/spring-beans.xsd&lt;br /&gt;
           http://www.springframework.org/schema/security&lt;br /&gt;
           http://www.springframework.org/schema/security/spring-security.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;sec:http auto-config=&amp;quot;true&amp;quot; use-expressions=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sec:remember-me key=&amp;quot;contactManagerRememberMeUniqueKey&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;sec:intercept-url pattern=&amp;quot;/login/**&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;sec:intercept-url pattern=&amp;quot;/**&amp;quot; access=&amp;quot;isAuthenticated()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sec:http&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;sec:global-method-security pre-post-annotations=&amp;quot;enabled&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;sec:authentication-manager alias=&amp;quot;authenticationManager&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sec:authentication-provider&amp;gt;&lt;br /&gt;
            &amp;lt;sec:user-service&amp;gt;&lt;br /&gt;
                &amp;lt;sec:user name=&amp;quot;admin&amp;quot; password=&amp;quot;admin&amp;quot; authorities=&amp;quot;admin&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/sec:user-service&amp;gt;&lt;br /&gt;
        &amp;lt;/sec:authentication-provider&amp;gt;&lt;br /&gt;
    &amp;lt;/sec:authentication-manager&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Configurar el filtro de Spring Security ===&lt;br /&gt;
En el archivo '''web.xml''' configurar: &lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;listener&amp;gt;&lt;br /&gt;
	&amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;
&amp;lt;/listener&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;filter&amp;gt;&lt;br /&gt;
	&amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;lt;filter-class&amp;gt;org.springframework.web.filter.DelegatingFilterProxy&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
&amp;lt;/filter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
	&amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
	&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con esta configuración puede desplegarse la aplicación y se visualizará el login default de Spring Security.&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [http://www.springsource.org/spring-security Página oficial de Spring Security]&lt;br /&gt;
* [https://dosideas-aplicaciones-modelo.googlecode.com/svn/dosideas-spring-security-workshop/trunk Proyecto de Ejemplo]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Java&amp;diff=6654</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Java&amp;diff=6654"/>
				<updated>2012-07-03T13:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Java]]&lt;br /&gt;
Java es un lenguaje de programación, aunque también se suele hacer referencia con este nombre a toda una plataforma para el desarrollo de aplicaciones. Hay un buen [http://es.wikipedia.org/wiki/Java_%28Sun%29 resumen de Java en la wikipedia].&lt;br /&gt;
&lt;br /&gt;
Al desarrollar un sistema se suele basar en una [[Arquitectura De Software]] para crear los componentes.&lt;br /&gt;
&lt;br /&gt;
Java se caracteriza por una enorme cantidad de proyectos libres.&lt;br /&gt;
&lt;br /&gt;
== Algunas tecnologías Java ==&lt;br /&gt;
=== Frameworks de base===&lt;br /&gt;
* [[Spring Framework]]&lt;br /&gt;
* [[Terracotta]]&lt;br /&gt;
* [[EJB]]&lt;br /&gt;
* [[Restlet]]&lt;br /&gt;
&lt;br /&gt;
===Acceso a datos===&lt;br /&gt;
* [[Hibernate]]&lt;br /&gt;
* [[Apache Lucene]]&lt;br /&gt;
&lt;br /&gt;
===Frameworks de presentación===&lt;br /&gt;
* [[Apache Tiles]]&lt;br /&gt;
* [[Struts]]&lt;br /&gt;
* [[JSF]]&lt;br /&gt;
* [[JSTL]]&lt;br /&gt;
* [[GWT]]&lt;br /&gt;
&lt;br /&gt;
===Librerías===&lt;br /&gt;
* [[Google Guava]]&lt;br /&gt;
* [[Jawr]]&lt;br /&gt;
&lt;br /&gt;
===Mensajeria===&lt;br /&gt;
* [[JMS]]&lt;br /&gt;
&lt;br /&gt;
===Web Services===&lt;br /&gt;
* [[Web Service]]&lt;br /&gt;
* [[Web Service Con Spring]]&lt;br /&gt;
&lt;br /&gt;
===Ejecuciones batch y programadas===&lt;br /&gt;
* [[Quartz]]&lt;br /&gt;
* [[Spring Batch]]&lt;br /&gt;
&lt;br /&gt;
===Seguridad===&lt;br /&gt;
* [[Spring Security]]&lt;br /&gt;
&lt;br /&gt;
===Cuestiones generales de Java===&lt;br /&gt;
* [[Fechas En Java]]&lt;br /&gt;
* [[Numeros En Java]]&lt;br /&gt;
* [[Encoding En Java]]&lt;br /&gt;
* [[Serializacion De Objetos En Java]]&lt;br /&gt;
* [[Log4J]]&lt;br /&gt;
* [[SLF4J]]&lt;br /&gt;
* [[Cache De Objetos Java]]&lt;br /&gt;
* [[Exportacion Hacia Archivos]]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6581</id>
		<title>Mock de un WS mediante Spring WS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6581"/>
				<updated>2012-04-09T14:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introducción===&lt;br /&gt;
&lt;br /&gt;
En esta página explicaremos de qué forma podemos simular el entorno de un Web Service en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.&lt;br /&gt;
&lt;br /&gt;
===Requerimientos===&lt;br /&gt;
&lt;br /&gt;
Para mockear un Web Service mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:&lt;br /&gt;
* jaxb-api-2.0.jar&lt;br /&gt;
* jaxb-impl-2.0.3.jar&lt;br /&gt;
* xalan-2.7.1.jar (importante que sea esta versión o superior)&lt;br /&gt;
* xmlunit-1.1.jar&lt;br /&gt;
&lt;br /&gt;
===Ejemplo===&lt;br /&gt;
&lt;br /&gt;
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(&amp;quot;spring-configuration.xml&amp;quot;)&lt;br /&gt;
public class ClienteIntegracionTest {&lt;br /&gt;
&lt;br /&gt;
// Creamos el request a enviarle al WS&lt;br /&gt;
private String request = &amp;quot;&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&amp;lt;/ns2:ClienteRequest&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Creamos el response que nos responderá el WS&lt;br /&gt;
private String response = &amp;quot;&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&amp;lt;/ns2:ClienteResponse&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Inyectamos el WebServiceTemplate &lt;br /&gt;
@Autowired&lt;br /&gt;
private WebServiceTemplate webServiceTemplate;&lt;br /&gt;
&lt;br /&gt;
// Mockeamos el WebServiceServer&lt;br /&gt;
private MockWebServiceServer server;&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
// En el Before levantamos el server pasandole como parámetro al constructor &lt;br /&gt;
// el webServiceTemplate&lt;br /&gt;
@Before&lt;br /&gt;
public void setup() {&lt;br /&gt;
server = MockWebServiceServer.createServer(webServiceTemplate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
// Le damos comportamiento a nuestro WS con el request y el response&lt;br /&gt;
// antes configurado&lt;br /&gt;
server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));&lt;br /&gt;
&lt;br /&gt;
cliente.invocarMetodoQueLlamaAlWs();&lt;br /&gt;
&lt;br /&gt;
// Nos aseguramos que el servicio fue invocado&lt;br /&gt;
server.verify();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro de los archivos de configuración que levante Spring, tendremos que configurarle los siguientes beans:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;wsTemplate&amp;quot; class=&amp;quot;org.springframework.ws.client.core.WebServiceTemplate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Url donde esta expuesto nuestro WS. En este test no irá a invocarlo, ya que se simula el entorno localmente --&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;defaultUri&amp;quot; value=&amp;quot;http://localhost:8080/&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;marshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;unmarshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;marshaller&amp;quot; class=&amp;quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;classesToBeBound&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;list&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Listado de clases con las que esta mapeado cada Request y Response --&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteRequest&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteResponse&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/list&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, el método de nuestra clase cliente, deberá contener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void invocarMetodoQueLlamaAlWs() {&lt;br /&gt;
...&lt;br /&gt;
ClienteRequest clienteRequest = new ClienteRequest();&lt;br /&gt;
...&lt;br /&gt;
ClienteResponse clienteResponse = (clienteResponse) webServiceTemplate&lt;br /&gt;
        .marshalSendAndReceive(clienteRequest);&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra forma de generar un mock===&lt;br /&gt;
Spring WS Test project es una libreria que simplifica los test que realizamos utilizando spring-ws.&lt;br /&gt;
&lt;br /&gt;
====Requerimientos====&lt;br /&gt;
* spring-ws-test.jar &lt;br /&gt;
&lt;br /&gt;
====Ejemplo====&lt;br /&gt;
Básicamente, el código para crear un test será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(locations = {&amp;quot;spring-configuration.xml&amp;quot;, &amp;quot;spring-ws-responses-mock.xml&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
public class ClienteComponenteTest {&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
 Collection&amp;lt;Algo&amp;gt; coleccion = cliente.invocarMetodoQueLlamaAlWs(param1);&lt;br /&gt;
 assertNotNull(coleccion )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestra clase de test, debemos agregar al contexto de spring un xml (ej: spring-ws-responses-mock.xml) con la siguiente configuracion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Creates mock message sender --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageSender&amp;quot; class=&amp;quot;net.javacrumbs.springws.test.MockWebServiceMessageSender&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Injects mock message sender into WebServiceTemplate --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.util.MockMessageSenderInjector&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Looks for responses on the disc based on the provided XPath --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.generator.DefaultResponseGeneratorFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;namespaceMap&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;soapenv&amp;quot; value=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;XPathExpressions&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;list&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;concat('/com/tma/dosideas/ws/mock/response/',local-name(//soapenv:Body/*[1]),'-response-', //APELLIDO_RAZONSOCIAL, '.xml')&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/list&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En la primera parte del xml declaramos un mock message sender que luego inyectamos en nuestro WebServiceTemplate de spring-ws para que las peticiones del template sean atendidas por el mock.&lt;br /&gt;
 &lt;br /&gt;
La clase DefaultResponseGeneratorFactoryBean se encarga de buscar en los archivos de un directorio, el xml de response.&lt;br /&gt;
Para saber cual xml de response corresponde al request, se utiliza xpath sobre el nombre de los archivos del directorio. &lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Si el request es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteRequest&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el directorio &amp;quot;/com/tma/dosideas/ws/mock/response/&amp;quot; se buscara el xml con el siguiente nombre: ClienteRequest-response-Una razon social.xml&lt;br /&gt;
&lt;br /&gt;
El response del directorio es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteResponse&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fuente====&lt;br /&gt;
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ]&lt;br /&gt;
*[http://www.developer.com/java/ent/integration-testing-support-in-spring-ws-2.0.html Otro ejemplo ]&lt;br /&gt;
*[http://javacrumbs.net/spring-ws-test/ Spring WS Test ]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6580</id>
		<title>Mock de un WS mediante Spring WS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6580"/>
				<updated>2012-04-09T14:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introducción===&lt;br /&gt;
&lt;br /&gt;
En esta página explicaremos de qué forma podemos simular el entorno de un Web Service en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.&lt;br /&gt;
&lt;br /&gt;
===Requerimientos===&lt;br /&gt;
&lt;br /&gt;
Para mockear un Web Service mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:&lt;br /&gt;
* jaxb-api-2.0.jar&lt;br /&gt;
* jaxb-impl-2.0.3.jar&lt;br /&gt;
* xalan-2.7.1.jar (importante que sea esta versión o superior)&lt;br /&gt;
* xmlunit-1.1.jar&lt;br /&gt;
&lt;br /&gt;
===Ejemplo===&lt;br /&gt;
&lt;br /&gt;
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(&amp;quot;spring-configuration.xml&amp;quot;)&lt;br /&gt;
public class ClienteIntegracionTest {&lt;br /&gt;
&lt;br /&gt;
// Creamos el request a enviarle al WS&lt;br /&gt;
private String request = &amp;quot;&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&amp;lt;/ns2:ClienteRequest&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Creamos el response que nos responderá el WS&lt;br /&gt;
private String response = &amp;quot;&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&amp;lt;/ns2:ClienteResponse&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Inyectamos el WebServiceTemplate &lt;br /&gt;
@Autowired&lt;br /&gt;
private WebServiceTemplate webServiceTemplate;&lt;br /&gt;
&lt;br /&gt;
// Mockeamos el WebServiceServer&lt;br /&gt;
private MockWebServiceServer server;&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
// En el Before levantamos el server pasandole como parámetro al constructor &lt;br /&gt;
// el webServiceTemplate&lt;br /&gt;
@Before&lt;br /&gt;
public void setup() {&lt;br /&gt;
server = MockWebServiceServer.createServer(webServiceTemplate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
// Le damos comportamiento a nuestro WS con el request y el response&lt;br /&gt;
// antes configurado&lt;br /&gt;
server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));&lt;br /&gt;
&lt;br /&gt;
cliente.invocarMetodoQueLlamaAlWs();&lt;br /&gt;
&lt;br /&gt;
// Nos aseguramos que el servicio fue invocado&lt;br /&gt;
server.verify();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro de los archivos de configuración que levante Spring, tendremos que configurarle los siguientes beans:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;wsTemplate&amp;quot; class=&amp;quot;org.springframework.ws.client.core.WebServiceTemplate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Url donde esta expuesto nuestro WS. En este test no irá a invocarlo, ya que se simula el entorno localmente --&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;defaultUri&amp;quot; value=&amp;quot;http://localhost:8080/&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;marshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;unmarshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;marshaller&amp;quot; class=&amp;quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;classesToBeBound&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;list&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Listado de clases con las que esta mapeado cada Request y Response --&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteRequest&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteResponse&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/list&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, el método de nuestra clase cliente, deberá contener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void invocarMetodoQueLlamaAlWs() {&lt;br /&gt;
...&lt;br /&gt;
ClienteRequest clienteRequest = new ClienteRequest();&lt;br /&gt;
...&lt;br /&gt;
ClienteResponse clienteResponse = (clienteResponse) webServiceTemplate&lt;br /&gt;
        .marshalSendAndReceive(clienteRequest);&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra forma de generar un mock===&lt;br /&gt;
Spring WS Test project es una libreria que simplifica los test que realizamos utilizando spring-ws.&lt;br /&gt;
&lt;br /&gt;
====Requerimientos====&lt;br /&gt;
* spring-ws-test.jar &lt;br /&gt;
&lt;br /&gt;
====Ejemplo====&lt;br /&gt;
Básicamente, el código para crear un test será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(locations = {&amp;quot;spring-configuration.xml&amp;quot;, &amp;quot;spring-ws-responses-mock.xml&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
public class ClienteComponenteTest {&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
 Collection&amp;lt;Algo&amp;gt; coleccion = cliente.invocarMetodoQueLlamaAlWs(param1);&lt;br /&gt;
 assertNotNull(coleccion )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestra clase de test, debemos agregar al contexto de spring un xml (ej: spring-ws-responses-mock.xml) con la siguiente configuracion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Creates mock message sender --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageSender&amp;quot; class=&amp;quot;net.javacrumbs.springws.test.MockWebServiceMessageSender&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Injects mock message sender into WebServiceTemplate --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.util.MockMessageSenderInjector&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Looks for responses on the disc based on the provided XPath --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.generator.DefaultResponseGeneratorFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;namespaceMap&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;soapenv&amp;quot; value=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;XPathExpressions&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;list&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;concat('/com/tma/dosideas/ws/mock/response/',local-name(//soapenv:Body/*[1]),'-response-', //APELLIDO_RAZONSOCIAL, '.xml')&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/list&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En la primera parte del xml declaramos un mock message sender que luego inyectamos en nuestro WebServiceTemplate de spring-ws para que las peticiones del template sean atendidas por el mock. &lt;br /&gt;
La clase DefaultResponseGeneratorFactoryBean se encarga de buscar en los archivos de un directorio, el xml de response para el request que tenga el valor &amp;quot;Una razon social&amp;quot; en el campo APELLIDO_RAZONSOCIAL.&lt;br /&gt;
&lt;br /&gt;
* REQUEST &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteRequest&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* RESPONSE con el siguiente formato: operacion-response-APELLIDO_RAZONSOCIAL.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteResponse&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fuente====&lt;br /&gt;
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ]&lt;br /&gt;
*[http://www.developer.com/java/ent/integration-testing-support-in-spring-ws-2.0.html Otro ejemplo ]&lt;br /&gt;
*[http://javacrumbs.net/spring-ws-test/ Spring WS Test ]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6579</id>
		<title>Mock de un WS mediante Spring WS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6579"/>
				<updated>2012-04-09T14:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introducción===&lt;br /&gt;
&lt;br /&gt;
En esta página explicaremos de qué forma podemos simular el entorno de un Web Service en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.&lt;br /&gt;
&lt;br /&gt;
===Requerimientos===&lt;br /&gt;
&lt;br /&gt;
Para mockear un Web Service mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:&lt;br /&gt;
* jaxb-api-2.0.jar&lt;br /&gt;
* jaxb-impl-2.0.3.jar&lt;br /&gt;
* xalan-2.7.1.jar (importante que sea esta versión o superior)&lt;br /&gt;
* xmlunit-1.1.jar&lt;br /&gt;
&lt;br /&gt;
===Ejemplo===&lt;br /&gt;
&lt;br /&gt;
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(&amp;quot;spring-configuration.xml&amp;quot;)&lt;br /&gt;
public class ClienteIntegracionTest {&lt;br /&gt;
&lt;br /&gt;
// Creamos el request a enviarle al WS&lt;br /&gt;
private String request = &amp;quot;&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&amp;lt;/ns2:ClienteRequest&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Creamos el response que nos responderá el WS&lt;br /&gt;
private String response = &amp;quot;&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&amp;lt;/ns2:ClienteResponse&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Inyectamos el WebServiceTemplate &lt;br /&gt;
@Autowired&lt;br /&gt;
private WebServiceTemplate webServiceTemplate;&lt;br /&gt;
&lt;br /&gt;
// Mockeamos el WebServiceServer&lt;br /&gt;
private MockWebServiceServer server;&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
// En el Before levantamos el server pasandole como parámetro al constructor &lt;br /&gt;
// el webServiceTemplate&lt;br /&gt;
@Before&lt;br /&gt;
public void setup() {&lt;br /&gt;
server = MockWebServiceServer.createServer(webServiceTemplate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
// Le damos comportamiento a nuestro WS con el request y el response&lt;br /&gt;
// antes configurado&lt;br /&gt;
server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));&lt;br /&gt;
&lt;br /&gt;
cliente.invocarMetodoQueLlamaAlWs();&lt;br /&gt;
&lt;br /&gt;
// Nos aseguramos que el servicio fue invocado&lt;br /&gt;
server.verify();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro de los archivos de configuración que levante Spring, tendremos que configurarle los siguientes beans:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;wsTemplate&amp;quot; class=&amp;quot;org.springframework.ws.client.core.WebServiceTemplate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Url donde esta expuesto nuestro WS. En este test no irá a invocarlo, ya que se simula el entorno localmente --&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;defaultUri&amp;quot; value=&amp;quot;http://localhost:8080/&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;marshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;unmarshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;marshaller&amp;quot; class=&amp;quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;classesToBeBound&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;list&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Listado de clases con las que esta mapeado cada Request y Response --&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteRequest&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteResponse&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/list&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, el método de nuestra clase cliente, deberá contener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void invocarMetodoQueLlamaAlWs() {&lt;br /&gt;
...&lt;br /&gt;
ClienteRequest clienteRequest = new ClienteRequest();&lt;br /&gt;
...&lt;br /&gt;
ClienteResponse clienteResponse = (clienteResponse) webServiceTemplate&lt;br /&gt;
        .marshalSendAndReceive(clienteRequest);&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra forma de generar un mock===&lt;br /&gt;
Spring WS Test project es una libreria que simplifica los test que realizamos utilizando spring-ws.&lt;br /&gt;
&lt;br /&gt;
====Requerimientos====&lt;br /&gt;
* spring-ws-test.jar &lt;br /&gt;
&lt;br /&gt;
====Ejemplo====&lt;br /&gt;
Básicamente, el código para crear un test será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(locations = {&amp;quot;spring-configuration.xml&amp;quot;, &amp;quot;spring-ws-responses-mock.xml&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
public class ClienteComponenteTest {&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
 Collection&amp;lt;Algo&amp;gt; coleccion = cliente.invocarMetodoQueLlamaAlWs(param1);&lt;br /&gt;
 assertNotNull(coleccion )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestra clase de test, debemos agregar al contexto de spring un xml (ej: spring-ws-responses-mock.xml) con la siguiente configuracion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Creates mock message sender --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageSender&amp;quot; class=&amp;quot;net.javacrumbs.springws.test.MockWebServiceMessageSender&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Injects mock message sender into WebServiceTemplate --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.util.MockMessageSenderInjector&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Looks for responses on the disc based on the provided XPath --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.generator.DefaultResponseGeneratorFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;namespaceMap&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;soapenv&amp;quot; value=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;XPathExpressions&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;list&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;concat('/com/tma/dosideas/ws/mock/response/',local-name(//soapenv:Body/*[1]),'-response-', //APELLIDO_RAZONSOCIAL, '.xml')&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/list&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En la primera parte del xml declaramos un mock message sender que luego inyectamos en nuestro WebServiceTemplate de spring-ws para que las peticiones del template sean atendidas por el mock. &lt;br /&gt;
La clase DefaultResponseGeneratorFactoryBean se encarga de buscar en los archivos de un directorio, el xml de response para el request que tenga el valor &amp;quot;Una razon social&amp;quot; en el campo APELLIDO_RAZONSOCIAL.&lt;br /&gt;
&lt;br /&gt;
* REQUEST &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteRequest&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* RESPONSE con el siguiente formato: operacion-response-APELLIDO_RAZONSOCIAL.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteResponse&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fuente====&lt;br /&gt;
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ]&lt;br /&gt;
*[http://www.developer.com/java/ent/integration-testing-support-in-spring-ws-2.0.html Otro ejemplo ]&lt;br /&gt;
*[http://javacrumbs.net/spring-ws-test/ Spring WS Test ]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6578</id>
		<title>Mock de un WS mediante Spring WS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6578"/>
				<updated>2012-04-09T14:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introducción===&lt;br /&gt;
&lt;br /&gt;
En esta página explicaremos de qué forma podemos simular el entorno de un Web Service en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.&lt;br /&gt;
&lt;br /&gt;
===Requerimientos===&lt;br /&gt;
&lt;br /&gt;
Para mockear un Web Service mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:&lt;br /&gt;
* jaxb-api-2.0.jar&lt;br /&gt;
* jaxb-impl-2.0.3.jar&lt;br /&gt;
* xalan-2.7.1.jar (importante que sea esta versión o superior)&lt;br /&gt;
* xmlunit-1.1.jar&lt;br /&gt;
&lt;br /&gt;
===Ejemplo===&lt;br /&gt;
&lt;br /&gt;
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(&amp;quot;spring-configuration.xml&amp;quot;)&lt;br /&gt;
public class ClienteIntegracionTest {&lt;br /&gt;
&lt;br /&gt;
// Creamos el request a enviarle al WS&lt;br /&gt;
private String request = &amp;quot;&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&amp;lt;/ns2:ClienteRequest&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Creamos el response que nos responderá el WS&lt;br /&gt;
private String response = &amp;quot;&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&amp;lt;/ns2:ClienteResponse&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Inyectamos el WebServiceTemplate &lt;br /&gt;
@Autowired&lt;br /&gt;
private WebServiceTemplate webServiceTemplate;&lt;br /&gt;
&lt;br /&gt;
// Mockeamos el WebServiceServer&lt;br /&gt;
private MockWebServiceServer server;&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
// En el Before levantamos el server pasandole como parámetro al constructor &lt;br /&gt;
// el webServiceTemplate&lt;br /&gt;
@Before&lt;br /&gt;
public void setup() {&lt;br /&gt;
server = MockWebServiceServer.createServer(webServiceTemplate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
// Le damos comportamiento a nuestro WS con el request y el response&lt;br /&gt;
// antes configurado&lt;br /&gt;
server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));&lt;br /&gt;
&lt;br /&gt;
cliente.invocarMetodoQueLlamaAlWs();&lt;br /&gt;
&lt;br /&gt;
// Nos aseguramos que el servicio fue invocado&lt;br /&gt;
server.verify();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro de los archivos de configuración que levante Spring, tendremos que configurarle los siguientes beans:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;wsTemplate&amp;quot; class=&amp;quot;org.springframework.ws.client.core.WebServiceTemplate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Url donde esta expuesto nuestro WS. En este test no irá a invocarlo, ya que se simula el entorno localmente --&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;defaultUri&amp;quot; value=&amp;quot;http://localhost:8080/&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;marshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;unmarshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;marshaller&amp;quot; class=&amp;quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;classesToBeBound&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;list&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Listado de clases con las que esta mapeado cada Request y Response --&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteRequest&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteResponse&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/list&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, el método de nuestra clase cliente, deberá contener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void invocarMetodoQueLlamaAlWs() {&lt;br /&gt;
...&lt;br /&gt;
ClienteRequest clienteRequest = new ClienteRequest();&lt;br /&gt;
...&lt;br /&gt;
ClienteResponse clienteResponse = (clienteResponse) webServiceTemplate&lt;br /&gt;
        .marshalSendAndReceive(clienteRequest);&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra forma de generar un mock===&lt;br /&gt;
Spring WS Test project es una libreria que simplifica los test que realizamos utilizando spring-ws.&lt;br /&gt;
&lt;br /&gt;
====Requerimientos====&lt;br /&gt;
* spring-ws-test.jar &lt;br /&gt;
&lt;br /&gt;
====Ejemplo====&lt;br /&gt;
Básicamente, el código para crear un test será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(locations = {&amp;quot;spring-configuration.xml&amp;quot;, &amp;quot;spring-ws-responses-mock.xml&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
public class ClienteComponenteTest {&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
 Collection&amp;lt;Algo&amp;gt; coleccion = cliente.invocarMetodoQueLlamaAlWs(param1);&lt;br /&gt;
 assertNotNull(coleccion )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestra clase de test, debemos agregar al contexto de spring un xml (ej: spring-ws-responses-mock.xml )con la siguiente configuracion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Creates mock message sender --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageSender&amp;quot; class=&amp;quot;net.javacrumbs.springws.test.MockWebServiceMessageSender&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Injects mock message sender into WebServiceTemplate --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.util.MockMessageSenderInjector&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Looks for responses on the disc based on the provided XPath --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.generator.DefaultResponseGeneratorFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;namespaceMap&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;soapenv&amp;quot; value=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;XPathExpressions&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;list&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;concat('/com/tma/dosideas/ws/mock/response/',local-name(//soapenv:Body/*[1]),'-response-', //APELLIDO_RAZONSOCIAL, '.xml')&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/list&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En la primera parte del xml declaramos un mock message sender que luego inyectamos en nuestro WebServiceTemplate de spring-ws para que las peticiones del template sean atendidas por el mock. &lt;br /&gt;
La clase DefaultResponseGeneratorFactoryBean se encarga de buscar en los archivos de un directorio, el xml de response para el request que tenga el valor &amp;quot;Una razon social&amp;quot; en el campo APELLIDO_RAZONSOCIAL.&lt;br /&gt;
&lt;br /&gt;
* REQUEST &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteRequest&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* RESPONSE con el siguiente formato: operacion-response-APELLIDO_RAZONSOCIAL.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteResponse&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fuente====&lt;br /&gt;
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ]&lt;br /&gt;
*[http://www.developer.com/java/ent/integration-testing-support-in-spring-ws-2.0.html Otro ejemplo ]&lt;br /&gt;
*[http://javacrumbs.net/spring-ws-test/ Spring WS Test ]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6577</id>
		<title>Mock de un WS mediante Spring WS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mock_de_un_WS_mediante_Spring_WS&amp;diff=6577"/>
				<updated>2012-04-09T14:14:31Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Introducción===&lt;br /&gt;
&lt;br /&gt;
En esta página explicaremos de qué forma podemos simular el entorno de un Web Service en memoria, de modo tal de poder realizar un test de componentes contra dicho entorno.&lt;br /&gt;
&lt;br /&gt;
===Requerimientos===&lt;br /&gt;
&lt;br /&gt;
Para mockear un Web Service mediante Spring WS, necesitaremos agregar a nuestro proyecto los siguientes jars:&lt;br /&gt;
* jaxb-api-2.0.jar&lt;br /&gt;
* jaxb-impl-2.0.3.jar&lt;br /&gt;
* xalan-2.7.1.jar (importante que sea esta versión o superior)&lt;br /&gt;
* xmlunit-1.1.jar&lt;br /&gt;
&lt;br /&gt;
===Ejemplo===&lt;br /&gt;
&lt;br /&gt;
Básicamente, el código para crear un test contra dicho entorno será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(&amp;quot;spring-configuration.xml&amp;quot;)&lt;br /&gt;
public class ClienteIntegracionTest {&lt;br /&gt;
&lt;br /&gt;
// Creamos el request a enviarle al WS&lt;br /&gt;
private String request = &amp;quot;&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&amp;lt;/ns2:ClienteRequest&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Creamos el response que nos responderá el WS&lt;br /&gt;
private String response = &amp;quot;&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar/'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&amp;lt;/ns2:ClienteResponse&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Inyectamos el WebServiceTemplate &lt;br /&gt;
@Autowired&lt;br /&gt;
private WebServiceTemplate webServiceTemplate;&lt;br /&gt;
&lt;br /&gt;
// Mockeamos el WebServiceServer&lt;br /&gt;
private MockWebServiceServer server;&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
// En el Before levantamos el server pasandole como parámetro al constructor &lt;br /&gt;
// el webServiceTemplate&lt;br /&gt;
@Before&lt;br /&gt;
public void setup() {&lt;br /&gt;
server = MockWebServiceServer.createServer(webServiceTemplate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
// Le damos comportamiento a nuestro WS con el request y el response&lt;br /&gt;
// antes configurado&lt;br /&gt;
server.expect(RequestMatchers.payload(new StringSource(request))).andRespond(ResponseCreators.withPayload(new StringSource(response)));&lt;br /&gt;
&lt;br /&gt;
cliente.invocarMetodoQueLlamaAlWs();&lt;br /&gt;
&lt;br /&gt;
// Nos aseguramos que el servicio fue invocado&lt;br /&gt;
server.verify();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dentro de los archivos de configuración que levante Spring, tendremos que configurarle los siguientes beans:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;wsTemplate&amp;quot; class=&amp;quot;org.springframework.ws.client.core.WebServiceTemplate&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Url donde esta expuesto nuestro WS. En este test no irá a invocarlo, ya que se simula el entorno localmente --&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;defaultUri&amp;quot; value=&amp;quot;http://localhost:8080/&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;marshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;unmarshaller&amp;quot; ref=&amp;quot;marshaller&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;bean id=&amp;quot;marshaller&amp;quot; class=&amp;quot;org.springframework.oxm.jaxb.Jaxb2Marshaller&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;property name=&amp;quot;classesToBeBound&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;list&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Listado de clases con las que esta mapeado cada Request y Response --&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteRequest&amp;lt;/value&amp;gt;&lt;br /&gt;
    &amp;lt;value&amp;gt;com.dosideas.ejemplo.schemas.ClienteResponse&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/list&amp;gt;&lt;br /&gt;
  &amp;lt;/property&amp;gt;&lt;br /&gt;
 &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, el método de nuestra clase cliente, deberá contener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public void invocarMetodoQueLlamaAlWs() {&lt;br /&gt;
...&lt;br /&gt;
ClienteRequest clienteRequest = new ClienteRequest();&lt;br /&gt;
...&lt;br /&gt;
ClienteResponse clienteResponse = (clienteResponse) webServiceTemplate&lt;br /&gt;
        .marshalSendAndReceive(clienteRequest);&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra forma de generar un mock===&lt;br /&gt;
Spring WS Test project es una libreria que simplifica los test que realizamos utilizando spring-ws.&lt;br /&gt;
&lt;br /&gt;
====Requerimientos====&lt;br /&gt;
* spring-ws-test.jar &lt;br /&gt;
&lt;br /&gt;
====Ejemplo====&lt;br /&gt;
Básicamente, el código para crear un test será como el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;
// indicamos a Spring que levante los archivos de configuración que veremos más adelante&lt;br /&gt;
@ContextConfiguration(locations = {&amp;quot;spring-configuration.xml&amp;quot;, &amp;quot;spring-ws-responses-mock.xml&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
public class ClienteComponenteTest {&lt;br /&gt;
&lt;br /&gt;
// Clase nuestra que lo consumirá&lt;br /&gt;
@Autowired&lt;br /&gt;
private Cliente cliente;&lt;br /&gt;
&lt;br /&gt;
@Test&lt;br /&gt;
public void testInvocacionWs() {&lt;br /&gt;
&lt;br /&gt;
 Collection&amp;lt;Algo&amp;gt; coleccion = cliente.invocarMetodoQueLlamaAlWs(param1);&lt;br /&gt;
 assertNotNull(coleccion )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestra clase de test, debemos agregar al contexto de spring un xml con la siguiente configuracion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
       xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Creates mock message sender --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageSender&amp;quot; class=&amp;quot;net.javacrumbs.springws.test.MockWebServiceMessageSender&amp;quot;/&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;!-- Injects mock message sender into WebServiceTemplate --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.util.MockMessageSenderInjector&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Looks for responses on the disc based on the provided XPath --&amp;gt;&lt;br /&gt;
    &amp;lt;bean class=&amp;quot;net.javacrumbs.springws.test.generator.DefaultResponseGeneratorFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;namespaceMap&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;soapenv&amp;quot; value=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;XPathExpressions&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;list&amp;gt;&lt;br /&gt;
                &amp;lt;value&amp;gt;concat('/com/tma/dosideas/ws/mock/response/',local-name(//soapenv:Body/*[1]),'-response-', //APELLIDO_RAZONSOCIAL, '.xml')&amp;lt;/value&amp;gt;&lt;br /&gt;
            &amp;lt;/list&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En la primera parte del xml declaramos un mock message sender que luego inyectamos en nuestro WebServiceTemplate de spring-ws para que las peticiones del template sean atendidas por el mock. &lt;br /&gt;
La clase DefaultResponseGeneratorFactoryBean se encarga de buscar en los archivos de un directorio, el xml de response para el request que tenga el valor &amp;quot;Una razon social&amp;quot; en el campo APELLIDO_RAZONSOCIAL.&lt;br /&gt;
&lt;br /&gt;
* REQUEST &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteRequest xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&lt;br /&gt;
&amp;lt;ns2:APELLIDO_RAZONSOCIAL&amp;gt;Una razon social&amp;lt;/ns2:APELLIDO_RAZONSOCIAL&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteRequest&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* RESPONSE con el siguiente formato: operacion-response-APELLIDO_RAZONSOCIAL.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;ns2:ClienteResponse xmlns:ns2='http://ejemplo.com.ar'&amp;gt;&amp;lt;ns2:ID_CLIENTE&amp;gt;123&amp;lt;/ns2:ID_CLIENTE&amp;gt;&lt;br /&gt;
&amp;lt;/ns2:ClienteResponse&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fuente====&lt;br /&gt;
*[http://static.springsource.org/spring-ws/site/reference/html/client.html Spring MVC Test ]&lt;br /&gt;
*[http://www.developer.com/java/ent/integration-testing-support-in-spring-ws-2.0.html Otro ejemplo ]&lt;br /&gt;
*[http://javacrumbs.net/spring-ws-test/ Spring WS Test ]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Mockito&amp;diff=6428</id>
		<title>Mockito</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Mockito&amp;diff=6428"/>
				<updated>2011-11-11T13:09:28Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Ejemplo de Mockito para mockear appender de log4j */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mockito es una librería [[Java]] para la creación de [[Mock Object]] muy usados para el testeo unitario en [[Test Driven Development]], basado en [[EasyMock]]. &lt;br /&gt;
&lt;br /&gt;
Mockito fue creado con el objetivo de simplificar y solucionar algunos de los temas antes mencionados. EasyMock y Mockito puede hacer exactamente las mismas cosas, pero Mockito tiene un API más natural y práctico de usar.&lt;br /&gt;
&lt;br /&gt;
==Características principales==&lt;br /&gt;
# Se pueden crear mocks de interfaces y clases concretas.&lt;br /&gt;
# Verificación de invocaciones (cantidad exacta, al menos una vez, órden de invocación, etc.)&lt;br /&gt;
# El stack trace se mantiene limpio, ya que los errores ocurren en los assert que se hagan (y no dentro del método bajo prueba, como en EasyMock).&lt;br /&gt;
# Un API más clara para crear stubs y verificaciones&lt;br /&gt;
&lt;br /&gt;
==Ejemplo de uso==&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
import static org.mockito.Mockito.*;&lt;br /&gt;
.....&lt;br /&gt;
//creamos el mock y el stub&lt;br /&gt;
ArrayList instance = mock(ArrayList.class);&lt;br /&gt;
doReturn(&amp;quot;hola mundo&amp;quot;).when(instance).get(0);&lt;br /&gt;
 &lt;br /&gt;
//ejecutamos la lógica a probar&lt;br /&gt;
instance.get(0);     &lt;br /&gt;
 &lt;br /&gt;
//verificamos que se hayan invocado los métodos&lt;br /&gt;
verify(instance).get(0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Más de una invocación a un mismo método==&lt;br /&gt;
&lt;br /&gt;
Algunas veces necesitamos que un método retorne un valor y que en la segunda invocación retorne nulo o una excepción. Para eso, anidamos los retornos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code html4strict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Retornos para las 2 invocaciones&lt;br /&gt;
doReturn(&amp;quot;algo&amp;quot;).doReturn(null).when(instance).scrollNext();&lt;br /&gt;
&lt;br /&gt;
//ejecutamos la lógica a probar&lt;br /&gt;
instance.unMetodoQueUsaScroll();     &lt;br /&gt;
&lt;br /&gt;
//verificamos que se haya invocado el mismo método dos veces&lt;br /&gt;
verify(instance, times(2)).scrollNext();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://mockito.googlecode.com/svn/branches/1.5/javadoc/org/mockito/Mockito.html Leer más en Mockito API]&lt;br /&gt;
&lt;br /&gt;
==Ejemplos de Mockito junto a PowerMock==&lt;br /&gt;
&lt;br /&gt;
===Invocación a un método estático===&lt;br /&gt;
&lt;br /&gt;
Para mockear métodos estáticos, según el [http://code.google.com/p/mockito/wiki/FAQ FAQ] de mockito, esto no es posible. Pero nombra 2 framewors que pueden resultarnos útil [http://jmockit.dev.java.net/ JMockit] y [http://code.google.com/p/powermock PowerMock]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(PowerMockRunner.class)&lt;br /&gt;
@PrepareForTest(ClaseConMetodosEstaticos.class)&lt;br /&gt;
public class DosIdeasTestCase {&lt;br /&gt;
    @Test&lt;br /&gt;
    public void testMetodo_conInvocacionAMetodosEstaticos() {&lt;br /&gt;
	&lt;br /&gt;
        //PowerMockito mockea los metodos estaticos que se encuentren en la &lt;br /&gt;
        //clase ClaseConMetodosEstaticos&lt;br /&gt;
        PowerMockito.mockStatic(ClaseConMetodosEstaticos.class);&lt;br /&gt;
&lt;br /&gt;
        //Con mockito determinamos el retorno del metodo estatico&lt;br /&gt;
        when(ClaseConMetodosEstaticos.firstStaticMethod(param)).thenReturn(value);&lt;br /&gt;
&lt;br /&gt;
        // ejecucion &lt;br /&gt;
        instance.invocarMetodoEstatico();&lt;br /&gt;
&lt;br /&gt;
        //Por cada metodo estatico que se quiere verificar se debe invocar &lt;br /&gt;
        //a PowerMockito.verifyStatic().&lt;br /&gt;
        PowerMockito.verifyStatic(); &lt;br /&gt;
        ClaseConMetodosEstaticos.secondStaticMethod();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invocación a un método privado===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public class PruebaMetodoPrivado {&lt;br /&gt;
&lt;br /&gt;
    public String decirHola(String nombre) {&lt;br /&gt;
        return decirHolaNombre(nombre);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private String decirHolaNombre(String nombre) {&lt;br /&gt;
        return &amp;quot;Hola &amp;quot;+nombre;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(PowerMockRunner.class)&lt;br /&gt;
@PrepareForTest(PruebaMetodoPrivado.class)&lt;br /&gt;
public class PruebaMetodoPrivadoTest {&lt;br /&gt;
&lt;br /&gt;
   @Spy&lt;br /&gt;
   PruebaMetodoPrivado metodoPrivado = new PruebaMetodoPrivado();&lt;br /&gt;
    &lt;br /&gt;
    @Test&lt;br /&gt;
    public void mockMetodoPrivado() throws Exception {&lt;br /&gt;
&lt;br /&gt;
	Assert.assertEquals(&amp;quot;Hola Juan&amp;quot;, metodoPrivado.decirHola(&amp;quot;Juan&amp;quot;));&lt;br /&gt;
        doReturn(&amp;quot;Chau Juan&amp;quot;).when(metodoPrivado,&amp;quot;decirHolaNombre&amp;quot;,&amp;quot;Juan&amp;quot;);&lt;br /&gt;
        Assert.assertEquals(&amp;quot;Chau Juan&amp;quot;,metodoPrivado.decirHola(&amp;quot;Juan&amp;quot;));&lt;br /&gt;
        verifyPrivate(metodoPrivado,&lt;br /&gt;
                       Mockito.times(2)).invoke(&amp;quot;decirHolaNombre&amp;quot;,&amp;quot;Juan&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Otra manera de invocar a un metodo privado (Bypass encapsulation) ===&lt;br /&gt;
&lt;br /&gt;
Para invocar a un metodo privado se puede usar el metodo de PowerMock '''Whitebox.invokeMethod(..)'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public class PruebaMetodoPrivado2 {&lt;br /&gt;
&lt;br /&gt;
    ....&lt;br /&gt;
&lt;br /&gt;
    private int sumar(int a, int b) {&lt;br /&gt;
        return a+b;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
import org.powermock.reflect.Whitebox;&lt;br /&gt;
&lt;br /&gt;
public class PruebaMetodoPrivado2Test {&lt;br /&gt;
&lt;br /&gt;
    private PruebaMetodoPrivado2 instance;&lt;br /&gt;
&lt;br /&gt;
    @Before&lt;br /&gt;
    public void setup() throws Exception {&lt;br /&gt;
        instance = new PruebaMetodoPrivado2(); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    @Test&lt;br /&gt;
    public void sumar_conParametrosEnteros_retornaSuma() throws Exception {&lt;br /&gt;
&lt;br /&gt;
        int respuestaEsperada = 4;&lt;br /&gt;
&lt;br /&gt;
        int respuestaObtenida = Whitebox.&amp;lt;Integer&amp;gt; invokeMethod(instance, &amp;quot;sumar&amp;quot;, 1, 3);&lt;br /&gt;
&lt;br /&gt;
	Assert.assertEquals(respuestaEsperada, respuestaObtenida);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Inicialización de atributos estaticos===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public class PruebaInicializacionEstaticos {&lt;br /&gt;
&lt;br /&gt;
    private static final String atributo = new String(&amp;quot;CHAU&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    public String crearObjetoLista() {&lt;br /&gt;
        return atributo;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(PowerMockRunner.class)&lt;br /&gt;
@SuppressStaticInitializationFor(&amp;quot;PruebaInicializacionEstaticos&amp;quot;)&lt;br /&gt;
@PrepareForTest(PruebaInicializacionEstaticos.class)&lt;br /&gt;
public class PruebaMetodoPrivadoTest {&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
   PruebaInicializacionEstaticos pruebaInicializacionEstaticos = &lt;br /&gt;
                                    new PruebaInicializacionEstaticos();&lt;br /&gt;
 &lt;br /&gt;
    @Test&lt;br /&gt;
    public void controlCreacionLista() throws Exception {&lt;br /&gt;
	Assert.assertNull(pruebaInicializacionEstaticos.retornarAtrinbuto());&lt;br /&gt;
        String s = &amp;quot;Hola&amp;quot;;&lt;br /&gt;
        Whitebox.setInternalState(pruebaInicializacionEstaticos.class,&amp;quot;atributo&amp;quot;, s);&lt;br /&gt;
        Assert.assertEquals(s, pruebaInicializacionEstaticos.retornarAtrinbuto());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Captura creación de objetos===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
public class PruebaCreacionObjeto {&lt;br /&gt;
 &lt;br /&gt;
    public List crearObjetoLista() {&lt;br /&gt;
        return new ArrayList();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
@RunWith(PowerMockRunner.class)&lt;br /&gt;
@PrepareForTest(PruebaCreacionObjeto.class)&lt;br /&gt;
public class PruebaMetodoPrivadoTest {&lt;br /&gt;
 &lt;br /&gt;
   @Spy&lt;br /&gt;
   PruebaCreacionObjeto pruebaCreacionObjeto = new PruebaCreacionObjeto();&lt;br /&gt;
 &lt;br /&gt;
    @Test&lt;br /&gt;
    public void controlCreacionLista() throws Exception {&lt;br /&gt;
        List list = new ArrayList();&lt;br /&gt;
        list.add(&amp;quot;Hola&amp;quot;);&lt;br /&gt;
        whenNew(ArrayList.class).withNoArguments().thenReturn((ArrayList) list);&lt;br /&gt;
        List resultado = pruebaCreacionObjeto.crearObjetoLista();&lt;br /&gt;
        Assert.assertEquals(list, resultado);&lt;br /&gt;
        verifyNew(ArrayList.class);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para mas ejemplos de Mockito junto a PowerMock ver los [http://code.google.com/p/powermock/wiki/MockitoUsage13 ejemplos] provisto por la documentación de PowerMock.&lt;br /&gt;
&lt;br /&gt;
[http://www.dosideas.com/descargas/category/3-testing.html?download=40 Descargar proyecto NetBeans demo de los ejemplos]&lt;br /&gt;
&lt;br /&gt;
===PowerMockito &amp;amp; Cobertura===&lt;br /&gt;
Existe un problema al utilizar PowerMockito con Cobertura (versión 1.8.4), este último no registra la corrida de los test con anotación @PrepareForTest, dando como resultados falta de cobertura.&lt;br /&gt;
Para solucionar este inconveniente solo hay que actualizar la versión de Cobertura.&lt;br /&gt;
&lt;br /&gt;
==Ejemplo de Mockito para mockear appender de log4j==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
//Inicializamos mock.&lt;br /&gt;
Appender mockAppender = mock(AppenderSkeleton.class);&lt;br /&gt;
//Inicializamos logger de la clase bajo test&lt;br /&gt;
Logger log = Logger.getLogger(ClaseATestear.class);&lt;br /&gt;
//Agregamos el mock del appender al logger.&lt;br /&gt;
log.addAppender(mockAppender);&lt;br /&gt;
//Seteamos el nivel de log que nos interesa recuperar.&lt;br /&gt;
log.setLevel(Level.DEBUG);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder obtener los log que se produjeron utilizamos la clase ArgumentCaptor de mockito que nos permite, entre otras cosas, capturar los eventos de log.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
ArgumentCaptor loggingEventCaptor = ArgumentCaptor.forClass(LoggingEvent.class);&lt;br /&gt;
verify(mockAppender, times(1)).doAppend((LoggingEvent) loggingEventCaptor.capture());&lt;br /&gt;
&lt;br /&gt;
loggingEventCaptor.capture());&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una posible forma de obtener un mensaje particular es iterando la lista de mensajes que nos da la clase capturada.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
List&amp;lt;LoggingEvent&amp;gt; loggingEvent = (List&amp;lt;LoggingEvent&amp;gt;) loggingEventCaptor.getAllValues();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BDDMockito ==&lt;br /&gt;
BDDMokcito es una clase alternativa que ofrece [[Mockito]] para crear pruebas al estilo [[Behavior Driven Development]] (BDD) (es decir, con bloques dado / cuando / entonces). &lt;br /&gt;
&lt;br /&gt;
El problema es que el API de Mockito usa la palabra &amp;quot;when&amp;quot; y no se integra bien con los comentarios //given //when //then (según BDD, el stubbing forma parte del área //given, y no del //when). &lt;br /&gt;
&lt;br /&gt;
BDDMockito agrega una clase que tiene alias para los métodos de stub, usando given(Object). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
 import static org.mockito.BDDMockito.*;&lt;br /&gt;
 &lt;br /&gt;
 Vendedor vendedor = mock(Vendedor.class);&lt;br /&gt;
 Negocio negocio = new Negocio(vendedor);&lt;br /&gt;
 &lt;br /&gt;
 @Test&lt;br /&gt;
 public void comprarPan() throws Exception {&lt;br /&gt;
   //given  &lt;br /&gt;
   given(vendedor.buscarPan()).willReturn(new Pan());&lt;br /&gt;
   &lt;br /&gt;
   //when&lt;br /&gt;
   Compra compra = negocio.comprarPan();&lt;br /&gt;
   &lt;br /&gt;
   //then&lt;br /&gt;
   assertThat(compra, contienePan());&lt;br /&gt;
 } &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stubbing con void y excepciones:&lt;br /&gt;
&amp;lt;code java5&amp;gt;&lt;br /&gt;
   //given&lt;br /&gt;
   willThrow(new RuntimeException(&amp;quot;boo&amp;quot;)).given(mock).foo();&lt;br /&gt;
   &lt;br /&gt;
   //when&lt;br /&gt;
   Result result = sistemaBajoPrueba.ejecutar();&lt;br /&gt;
   &lt;br /&gt;
   //then&lt;br /&gt;
   assertEquals(failure, result); &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[EasyMock]]&lt;br /&gt;
* [[Captura De Parametros]]&lt;br /&gt;
* [[Inyeccion De Mocks De Mockito Con Spring]]&lt;br /&gt;
* [[Test de componente para un cliente TCP]]&lt;br /&gt;
* [http://www.dosideas.com/descargas/category/3-testing.html?download=11%3Ademo-de-mockito Proyecto de ejemplos con Mockito]&lt;br /&gt;
* [http://www.dosideas.com/java/242-mockito-o-basta-de-easymock.html Introducción a Mockito]&lt;br /&gt;
* [http://mockito.googlecode.com/svn/branches/1.8.0/javadoc/org/mockito/BDDMockito.html Javadoc de BDDMockito]&lt;br /&gt;
&lt;br /&gt;
[[Category:TDD]]&lt;br /&gt;
[[Category:BDD]]&lt;br /&gt;
[[Category:JUnit]]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Selenium&amp;diff=6421</id>
		<title>Selenium</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Selenium&amp;diff=6421"/>
				<updated>2011-10-12T14:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Selenium]] es una herramienta de [[Software Libre]] para pruebas de aplicaciones Web. Las pruebas de [[Selenium]] se ejecutan directamente en un navegador y facilitan las pruebas de compatibilidad en navegadores, también como pruebas funcionales de aceptación de aplicaciones Web.&lt;br /&gt;
&lt;br /&gt;
La herramienta [[Selenium]] posee un ambiente de desarrollo llamado [[Selenium]] IDE, este facilita el registro de pruebas de aceptación y su depuración.&lt;br /&gt;
&lt;br /&gt;
==Integracion con JUnit 4.x==&lt;br /&gt;
&lt;br /&gt;
Para poder armar el test es necesario incluir los siguientes jars.&lt;br /&gt;
&lt;br /&gt;
*selenium-java-client-driver-tests.jar&lt;br /&gt;
*selenium-java-client-driver.jar&lt;br /&gt;
*selenium-server-tests.jar&lt;br /&gt;
*selenium-server.jar&lt;br /&gt;
&lt;br /&gt;
Se pueden descargar de acá: [http://archiva.openqa.org/repository/releases/org/openqa/selenium/selenium-remote-control/1.0-beta-1/selenium-remote-control-1.0-beta-1-dist.zip Librerías]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
import org.junit.Before;&lt;br /&gt;
import org.junit.Test;&lt;br /&gt;
import org.openqa.selenium.server.SeleniumServer;&lt;br /&gt;
&lt;br /&gt;
import com.thoughtworks.selenium.DefaultSelenium;&lt;br /&gt;
import com.thoughtworks.selenium.SeleneseTestCase;&lt;br /&gt;
&lt;br /&gt;
public class GoogleWebTest extends SeleneseTestCase {&lt;br /&gt;
&lt;br /&gt;
    private DefaultSelenium selenium;&lt;br /&gt;
    private SeleniumServer seleniumServer;&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    @Before&lt;br /&gt;
    public void setUp(String browser) throws Exception {&lt;br /&gt;
        // Se instancia el server de selenium por default toma el puerto 4444&lt;br /&gt;
        seleniumServer = new SeleniumServer();&lt;br /&gt;
        seleniumServer.start();&lt;br /&gt;
&lt;br /&gt;
        // Se configura el acceso a la pagina por medio del server de selenium&lt;br /&gt;
        // DefaultSelenium(&amp;quot;SELENIUM_HOST&amp;quot;, PUERTO, &amp;quot;BROWSER&amp;quot;, URL_DE_LA_APLICACION);&lt;br /&gt;
        // En este ejemplo, se utiliza Internet Explorer: &amp;quot;*iehta&amp;quot;&lt;br /&gt;
        selenium = new DefaultSelenium(&amp;quot;localhost&amp;quot;, 4444, &amp;quot;*iehta&amp;quot;, &amp;quot;http://www.google.com&amp;quot;);&lt;br /&gt;
        selenium.start();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /** Al finalizar los tests, detener el server de Selenium &lt;br /&gt;
      */&lt;br /&gt;
    @Override&lt;br /&gt;
    public void tearDown() throws Exception {&lt;br /&gt;
        // Se para la conexión con la pagina &lt;br /&gt;
        selenium.stop();&lt;br /&gt;
&lt;br /&gt;
        // Se para la instancia del server de selenium&lt;br /&gt;
        seleniumServer.stop();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /** Testeamos una búsqueda en Google&lt;br /&gt;
      * Accedemos a Google, realizamos una búsqueda y comprobamos que venga el resultado esperado&lt;br /&gt;
      */&lt;br /&gt;
    @Test&lt;br /&gt;
    public void testGoogle() throws Exception {&lt;br /&gt;
        selenium.open(&amp;quot;http://www.google.com/webhp&amp;quot;);&lt;br /&gt;
        assertEquals(&amp;quot;Google&amp;quot;, selenium.getTitle());&lt;br /&gt;
        selenium.type(&amp;quot;q&amp;quot;, &amp;quot;Selenium OpenQA&amp;quot;);&lt;br /&gt;
        assertEquals(&amp;quot;Selenium OpenQA&amp;quot;, selenium.getValue(&amp;quot;q&amp;quot;));&lt;br /&gt;
        selenium.click(&amp;quot;btnG&amp;quot;);&lt;br /&gt;
        selenium.waitForPageToLoad(&amp;quot;30000&amp;quot;);&lt;br /&gt;
        assertEquals(&amp;quot;Selenium OpenQA - Google Search&amp;quot;, selenium.getTitle());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sobre waitForPageToLoad==&lt;br /&gt;
&lt;br /&gt;
Es importante que la página esté cargada antes de hacer las verificaciones sobre el nuevo contenido. Para hacer más sólido el caso de prueba ubica un waitForPageToLoad luego de un click.&lt;br /&gt;
&lt;br /&gt;
Es recomendable que al terminar un caso de prueba ubiques un waitForPageToLoad y así te aseguras que el próximo caso de prueba no falle al comenzar.&lt;br /&gt;
ghjgjgj&lt;br /&gt;
&lt;br /&gt;
Yo, good lkooin out! Gonna make it work now.&lt;br /&gt;
&lt;br /&gt;
==Sobre assertTextPresent==&lt;br /&gt;
&lt;br /&gt;
Este comando es útil después de cada comando clickAndWait para confirmar un texto debe estar presente en la página.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sobre verifyTrue==&lt;br /&gt;
&lt;br /&gt;
Al realizar [http://www.dosideas.com/java/743-test-secuencial-con-selenium-y-junit.html  test secuencial] con [[Selenium]] IDE, y verificar texto en la página, después de convertir el test a código Java -para correrlo con JUnit- queda generado con el comando &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code html4strict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verifyTrue(selenium.isTextPresent(&amp;quot;Algun texto&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este comando no genera fallas en el test en caso que el texto buscado no se encuentre en la página. El comando adecuado para que se genere la falla es &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code html4strict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
assertTrue(selenium.isTextPresent(&amp;quot;Algun texto&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sobre Popups  ==&lt;br /&gt;
&lt;br /&gt;
En Selenium, se trabaja con una ventana a la vez. Para trabajar con diferentes ventanas (por ejemplo, un popup) se necesita primero elegir la ventana en cuestión. Y no solo basta con esto, tambien dicha ventana tiene que ser identificada. La forma mas facil de realizar esto es capturar el id de la nueva ventana con Selenium IDE. &lt;br /&gt;
&lt;br /&gt;
Si la ventana se abre con un target=&amp;quot;_blank&amp;quot; no se podrá utilizar Selenium para acceder a dicha ventana dado a que el id que se genera es random. Hay un [http://jira.openqa.org/browse/SEL-203 Jira] abierto en Selenium para resolver esto.&lt;br /&gt;
&lt;br /&gt;
== Sobre caracteres especiales ==&lt;br /&gt;
&lt;br /&gt;
Para que hudson tome bien los acentos (y caracteres especiales) en los test de selenium hay que usar unicode.&lt;br /&gt;
&lt;br /&gt;
Los codigos son:&lt;br /&gt;
&lt;br /&gt;
*á -&amp;gt; \u00e1&lt;br /&gt;
*é -&amp;gt; \u00e9&lt;br /&gt;
*í -&amp;gt; \u00ed&lt;br /&gt;
*ó -&amp;gt; \u00f3&lt;br /&gt;
*ú -&amp;gt; \u00fa&lt;br /&gt;
*Á -&amp;gt; \u00c1&lt;br /&gt;
*É -&amp;gt; \u00c9&lt;br /&gt;
*Í -&amp;gt; \u00cd&lt;br /&gt;
*Ó -&amp;gt; \u00d3&lt;br /&gt;
*Ú -&amp;gt; \u00da&lt;br /&gt;
*ñ -&amp;gt; \u00f1&lt;br /&gt;
*Ñ -&amp;gt; \u00d1&lt;br /&gt;
&lt;br /&gt;
*ü -&amp;gt; \u00FC&lt;br /&gt;
*Ü -&amp;gt; \u00DC&lt;br /&gt;
*ç -&amp;gt; \u00E7&lt;br /&gt;
*Ç -&amp;gt; \u00C7&lt;br /&gt;
*¿ -&amp;gt; \u00BF&lt;br /&gt;
*¡ -&amp;gt; \u00A1&lt;br /&gt;
&lt;br /&gt;
== Sobre la integración contínua ==&lt;br /&gt;
&lt;br /&gt;
Cuando se usa Selenium en un proceso de integración contínua puede pasar que nos encontremos con tests que fallan porque no se encuentran los elementos esperados. Lo bueno es saber qué se encontró en lugar de lo que se esperaba.&lt;br /&gt;
&lt;br /&gt;
El método selenium.getBody() retorna un String con el texto de la página en la que se encuentra selenium en ese momento, pero lo mejor de todo es que además lo escribe en consola.&lt;br /&gt;
&lt;br /&gt;
Si miramos la salida por consola del test fallido vamos a encontrar la secuencia de los comandos de selenium y en los lugares donde hayamos puesto los getBody() vamos a ver intercalado los textos que mostraba la página en ese momento.&lt;br /&gt;
&lt;br /&gt;
== Selenium 2.0 and WebDriver ==&lt;br /&gt;
Tiene muchas características nuevas y mejoras con respecto selenium 1. &lt;br /&gt;
&lt;br /&gt;
La nueva característica principal es la integración de la API WebDriver. &lt;br /&gt;
Esto surge a partir de una serie de limitaciones, junto con ofrecer una alternativa, y más simple, interfaz de programación. El objetivo es desarrollar una API orientada a objetos que proporciona apoyo adicional para un mayor número de navegadores con soporte mejorado para los modernos problemas avanzados de pruebas de aplicaciones web.&lt;br /&gt;
&lt;br /&gt;
=== Migrar de Selenium RC a Selenium WebDriver ===&lt;br /&gt;
&lt;br /&gt;
Ventajas:&lt;br /&gt;
* El API WebDriver es más orientada a objetos que el original de la API de selenium RC. Esto puede hacer que sea más fácil trabajar con él.&lt;br /&gt;
&lt;br /&gt;
* Mejora de la emulación de las interacciones del usuario. Siempre que sea posible, WebDriver hace uso de eventos nativos con el fin de interactuar con una página web. &lt;br /&gt;
&lt;br /&gt;
* El apoyo de los fabricantes de navegadores. Opera, Mozilla y Google son todos los participantes activos en el desarrollo de WebDriver, y cada uno tiene ingenieros trabajando para mejorar el marco.&lt;br /&gt;
&lt;br /&gt;
El primer paso para empezar a migrar es cambiar como obtener la instancia de selenium. Cuando se utiliza Selenium RC, seria:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
Selenium selenium = new DefaultSelenium(&lt;br /&gt;
    &amp;quot;localhost&amp;quot;, 4444, &amp;quot;*firefox&amp;quot;, &amp;quot;http://www.dosideas.com&amp;quot;);&lt;br /&gt;
selenium.start();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estas lineas hay que cambiarlas por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
WebDriver driver = new FirefoxDriver();&lt;br /&gt;
Selenium selenium = new WebDriverBackedSelenium(driver, &amp;quot;http://www.dosideas.com&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como inicializar el driver de Firefox con un perfil particular ===&lt;br /&gt;
&lt;br /&gt;
Cuando se quiere utilizar Firefox para correr los test, es posible que necesitemos que el perfil tenga algunas caracteristicas que no vienen por default.&lt;br /&gt;
Esto se realiza de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
Creamos un nuevo perfil:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code java&amp;gt;FirefoxProfile profile = new FirefoxProfile();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si por ejemplo, nosotros queremos agregarle a la configuracion del perfil para que utilice un proxy deberias poner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
profile.setPreference(&amp;quot;network.proxy.type&amp;quot;, 1);&lt;br /&gt;
profile.setPreference(&amp;quot;network.proxy.http&amp;quot;, &amp;quot;proxy.dosideas.com&amp;quot;);&lt;br /&gt;
profile.setPreference(&amp;quot;network.proxy.http_port&amp;quot;, 8080);&lt;br /&gt;
profile.setPreference(&amp;quot;network.proxy.no_proxies_on&amp;quot;, &amp;quot;PC-DOSIDEAS&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: El atributo network.proxy.no_proxies_on indica que el proxy no se utiliza para esa direccion.&lt;br /&gt;
&lt;br /&gt;
Finalmente, agregamos el nuevo perfil al driver e inicializamos normalmente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
WebDriver driver = new FirefoxDriver(profile);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
*[[Herramientas Para Pruebas De Aceptacion]]&lt;br /&gt;
*[http://selenium.openqa.org/ Web oficial de Selenium]&lt;br /&gt;
*[http://www.pghcodingdojo.org/index.php/Selenium_RC_Tutorial Selenium RC Tutorial]&lt;br /&gt;
*[http://www.dosideas.com/java/743-test-secuencial-con-selenium-y-junit.html Test Secuencial con Selenium y JUnit]&lt;br /&gt;
*[http://seleniumhq.org/docs/04_selenese_commands.html#verifying-page-elements Comandos de Verificación de elementos en páginas web]&lt;br /&gt;
*[http://wiki.openqa.org/display/SEL/Selenium+Core+FAQ#SeleniumCoreFAQ-HowdoIworkwithapopupwindow%3F Popup con Selenium]&lt;br /&gt;
*[[Simplium]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ATDD]]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=GlassFish&amp;diff=5072</id>
		<title>GlassFish</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=GlassFish&amp;diff=5072"/>
				<updated>2010-06-11T19:21:49Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Crear un dominio nuevo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GlassFish es un [[Servidor de Aplicaciones]] para [[Java EE]] libre de código abierto, apoyado por Sun. Usualmente GlassFish es uno de los primeros Servidores de aplicaciones en soportar las últimas novedades de [[Java EE]].&lt;br /&gt;
&lt;br /&gt;
== Librerías cliente ==&lt;br /&gt;
Para acceder a EJBs y otros recursos del Application Server, un cliente standalone necesita las siguientes librerias (que se encuentran en el directorio ''lib/'' de GlassFish):&lt;br /&gt;
* j2ee.jar&lt;br /&gt;
* appserv-rt.jar&lt;br /&gt;
* appserv-deployment-client.jar&lt;br /&gt;
* appserv-ext.jar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Breve resumen de uso ==&lt;br /&gt;
&lt;br /&gt;
=== Instalación ===&lt;br /&gt;
# Bajar GlassFish (es un jar)&lt;br /&gt;
# Copiar el jar al directorio donde se quiera instalar&lt;br /&gt;
# Abrir una terminal de texto, ubicarse en el directorio donde copiar el jar, y ejecutar los comandos:&lt;br /&gt;
 java -Xmx256m -jar filename.jar&lt;br /&gt;
 cd glassfish&lt;br /&gt;
 ant -f setup.xml&lt;br /&gt;
&lt;br /&gt;
Reemplazar ''filename.jar'' con el nombre del archivo descargado. Para estos comandos, debe tenerse acceso en el PATH del sistema operativo a una version de Java 1.5 o superior, y al ejecutable de [Ant]. GlassFish ya incluye una versión de Ant (ubicada en el directorio ''lib/ant'')que puede usarse en caso de no tener Ant en el path.&lt;br /&gt;
&lt;br /&gt;
Una vez instalado GlassFish, se puede iniciar o parar su ejecución con un par de comandos. Los comandos de administración de GlassFish se encuentran ubicados en el directorio_de_instalacion/bin&lt;br /&gt;
&lt;br /&gt;
=== Iniciar GlassFish ===&lt;br /&gt;
&lt;br /&gt;
 asadmin start-domain&lt;br /&gt;
&lt;br /&gt;
GlassFish inicia, y puede cerrarse la consola donde se ejecutó este comando.&lt;br /&gt;
&lt;br /&gt;
=== Configurar GlassFish (consola de administración) ===&lt;br /&gt;
&lt;br /&gt;
Una vez iniciado, la consola de administración de GlassFish se puede acceder desde:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:4848&lt;br /&gt;
 '''usuario''': admin&lt;br /&gt;
 '''password''': adminadmin&lt;br /&gt;
&lt;br /&gt;
Desde esta consola pueden administrarse las aplicaciones (deploys/redeploys/undeploys) y configurar los ConnectionPool y DataSource.&lt;br /&gt;
&lt;br /&gt;
=== Acceder a aplicaciones instaladas ===&lt;br /&gt;
&lt;br /&gt;
Por default, GlassFish expone las aplicaciones web en el puerto 8080. Por ejemplo, para acceder a la aplicación web &amp;quot;miAplicacion&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8080/miAplicacion&lt;br /&gt;
&lt;br /&gt;
=== Detener GlassFish ===&lt;br /&gt;
&lt;br /&gt;
 asadmin stop-domain&lt;br /&gt;
&lt;br /&gt;
=== Crear un dominio nuevo ===&lt;br /&gt;
&lt;br /&gt;
 asadmin create-domain --adminport 4848 domain2&lt;br /&gt;
&lt;br /&gt;
== Integración con CentOS / Fedora y otros Linux ==&lt;br /&gt;
[[GlassFish]] se inicia desde la línea de comandos, por lo cual es muy facil integrarlo con los sistemas de servicios que ofrecen las distintas distribuciones de Linux. &lt;br /&gt;
&lt;br /&gt;
Para integrarlo con CentOS / Fedora / RedHat Linux, ubicar el siguiente script en '''/etc/init.d/glassfish'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# glassfish     Este script se encarga de iniciar y detener el&lt;br /&gt;
#               servidor de aplicaciones Java GlassFish v3.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
prog=&amp;quot;GlassFish v3&amp;quot;&lt;br /&gt;
asadmin=&amp;quot;/usr/local/glassfishv3/bin/asadmin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Esta variable la usa GlassFish para determinar el JDK a usar.&lt;br /&gt;
# Habra otra manera?&lt;br /&gt;
export AS_JAVA=/usr/local/jdk1.6.0_18/&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        action $&amp;quot;Starting $prog: &amp;quot; $asadmin start-domain&lt;br /&gt;
}&lt;br /&gt;
stop() {&lt;br /&gt;
        action $&amp;quot;Stopping $prog: &amp;quot; $asadmin stop-domain&lt;br /&gt;
}&lt;br /&gt;
restart() {&lt;br /&gt;
        action $&amp;quot;Restarting $prog: &amp;quot; $asadmin restart-domain&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        restart&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego, podemos ejecutar los siguentes comandos desde la consola de Linux para iniciar/detener [[GlassFish]]&lt;br /&gt;
 service glassfish start&lt;br /&gt;
 service glassfish stop&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Servidor de Aplicaciones]]&lt;br /&gt;
* [https://glassfish.dev.java.net/ Web oficial de GlassFish]&lt;br /&gt;
* [https://glassfish.dev.java.net/downloads/quickstart/index.html GlassFish Quick Start]&lt;br /&gt;
* [https://glassfish.dev.java.net/public/downloadsindex.html Descarga de GlassFish ]&lt;br /&gt;
* [https://glassfishplugins.dev.java.net/eclipse33/index.html Plugin de Glassfish para Eclipse]&lt;br /&gt;
&lt;br /&gt;
[[Category:GlassFish]]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=GlassFish&amp;diff=5071</id>
		<title>GlassFish</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=GlassFish&amp;diff=5071"/>
				<updated>2010-06-11T19:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Breve resumen de uso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GlassFish es un [[Servidor de Aplicaciones]] para [[Java EE]] libre de código abierto, apoyado por Sun. Usualmente GlassFish es uno de los primeros Servidores de aplicaciones en soportar las últimas novedades de [[Java EE]].&lt;br /&gt;
&lt;br /&gt;
== Librerías cliente ==&lt;br /&gt;
Para acceder a EJBs y otros recursos del Application Server, un cliente standalone necesita las siguientes librerias (que se encuentran en el directorio ''lib/'' de GlassFish):&lt;br /&gt;
* j2ee.jar&lt;br /&gt;
* appserv-rt.jar&lt;br /&gt;
* appserv-deployment-client.jar&lt;br /&gt;
* appserv-ext.jar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Breve resumen de uso ==&lt;br /&gt;
&lt;br /&gt;
=== Instalación ===&lt;br /&gt;
# Bajar GlassFish (es un jar)&lt;br /&gt;
# Copiar el jar al directorio donde se quiera instalar&lt;br /&gt;
# Abrir una terminal de texto, ubicarse en el directorio donde copiar el jar, y ejecutar los comandos:&lt;br /&gt;
 java -Xmx256m -jar filename.jar&lt;br /&gt;
 cd glassfish&lt;br /&gt;
 ant -f setup.xml&lt;br /&gt;
&lt;br /&gt;
Reemplazar ''filename.jar'' con el nombre del archivo descargado. Para estos comandos, debe tenerse acceso en el PATH del sistema operativo a una version de Java 1.5 o superior, y al ejecutable de [Ant]. GlassFish ya incluye una versión de Ant (ubicada en el directorio ''lib/ant'')que puede usarse en caso de no tener Ant en el path.&lt;br /&gt;
&lt;br /&gt;
Una vez instalado GlassFish, se puede iniciar o parar su ejecución con un par de comandos. Los comandos de administración de GlassFish se encuentran ubicados en el directorio_de_instalacion/bin&lt;br /&gt;
&lt;br /&gt;
=== Iniciar GlassFish ===&lt;br /&gt;
&lt;br /&gt;
 asadmin start-domain&lt;br /&gt;
&lt;br /&gt;
GlassFish inicia, y puede cerrarse la consola donde se ejecutó este comando.&lt;br /&gt;
&lt;br /&gt;
=== Configurar GlassFish (consola de administración) ===&lt;br /&gt;
&lt;br /&gt;
Una vez iniciado, la consola de administración de GlassFish se puede acceder desde:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:4848&lt;br /&gt;
 '''usuario''': admin&lt;br /&gt;
 '''password''': adminadmin&lt;br /&gt;
&lt;br /&gt;
Desde esta consola pueden administrarse las aplicaciones (deploys/redeploys/undeploys) y configurar los ConnectionPool y DataSource.&lt;br /&gt;
&lt;br /&gt;
=== Acceder a aplicaciones instaladas ===&lt;br /&gt;
&lt;br /&gt;
Por default, GlassFish expone las aplicaciones web en el puerto 8080. Por ejemplo, para acceder a la aplicación web &amp;quot;miAplicacion&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8080/miAplicacion&lt;br /&gt;
&lt;br /&gt;
=== Detener GlassFish ===&lt;br /&gt;
&lt;br /&gt;
 asadmin stop-domain&lt;br /&gt;
&lt;br /&gt;
=== Crear un dominio nuevo ===&lt;br /&gt;
&lt;br /&gt;
asadmin create-domain --adminport 4848 domain2&lt;br /&gt;
&lt;br /&gt;
== Integración con CentOS / Fedora y otros Linux ==&lt;br /&gt;
[[GlassFish]] se inicia desde la línea de comandos, por lo cual es muy facil integrarlo con los sistemas de servicios que ofrecen las distintas distribuciones de Linux. &lt;br /&gt;
&lt;br /&gt;
Para integrarlo con CentOS / Fedora / RedHat Linux, ubicar el siguiente script en '''/etc/init.d/glassfish'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# glassfish     Este script se encarga de iniciar y detener el&lt;br /&gt;
#               servidor de aplicaciones Java GlassFish v3.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
prog=&amp;quot;GlassFish v3&amp;quot;&lt;br /&gt;
asadmin=&amp;quot;/usr/local/glassfishv3/bin/asadmin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Esta variable la usa GlassFish para determinar el JDK a usar.&lt;br /&gt;
# Habra otra manera?&lt;br /&gt;
export AS_JAVA=/usr/local/jdk1.6.0_18/&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        action $&amp;quot;Starting $prog: &amp;quot; $asadmin start-domain&lt;br /&gt;
}&lt;br /&gt;
stop() {&lt;br /&gt;
        action $&amp;quot;Stopping $prog: &amp;quot; $asadmin stop-domain&lt;br /&gt;
}&lt;br /&gt;
restart() {&lt;br /&gt;
        action $&amp;quot;Restarting $prog: &amp;quot; $asadmin restart-domain&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        restart&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 2&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego, podemos ejecutar los siguentes comandos desde la consola de Linux para iniciar/detener [[GlassFish]]&lt;br /&gt;
 service glassfish start&lt;br /&gt;
 service glassfish stop&lt;br /&gt;
&lt;br /&gt;
== Ver también ==&lt;br /&gt;
* [[Servidor de Aplicaciones]]&lt;br /&gt;
* [https://glassfish.dev.java.net/ Web oficial de GlassFish]&lt;br /&gt;
* [https://glassfish.dev.java.net/downloads/quickstart/index.html GlassFish Quick Start]&lt;br /&gt;
* [https://glassfish.dev.java.net/public/downloadsindex.html Descarga de GlassFish ]&lt;br /&gt;
* [https://glassfishplugins.dev.java.net/eclipse33/index.html Plugin de Glassfish para Eclipse]&lt;br /&gt;
&lt;br /&gt;
[[Category:GlassFish]]&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5045</id>
		<title>Debug Remoto De Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5045"/>
				<updated>2010-05-06T12:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Configuración para Weblogic 10.x. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebLogic]]&lt;br /&gt;
[[Category:IDE]]&lt;br /&gt;
Existe una forma de poder debuguear el [[WebLogic]] desde algún IDE. Esto lo posibilita una característica conocida como [[JPDA]] que las máquinas virtuales de Java (JVM) tienen.&lt;br /&gt;
&lt;br /&gt;
==Configurando el Weblogic==&lt;br /&gt;
*Setear la variable para debug:&lt;br /&gt;
 set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 8.x.===&lt;br /&gt;
*Ubicar el dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain.&lt;br /&gt;
*Abrir el archivo startWeblogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar esta línea:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%...&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 9.x.===&lt;br /&gt;
*Ubicar la carpeta bin del dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain\bin.&lt;br /&gt;
*Abrir el archivo startWebLogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar las dos lineas que comienzan:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM%&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 10.x.===&lt;br /&gt;
Para iniciar WebLogic Server en modo debug, se necesita modificar el startWebLogic.cmd script. Ejemplo: &amp;lt;WLS-root&amp;gt;\wlserver_10.0\samples\domains\wl_server. &amp;lt;WLS-root&amp;gt; es el directorio en el que se instalo el weblogic.&lt;br /&gt;
&lt;br /&gt;
En el startWebLogic.cmd script, añadir:&lt;br /&gt;
&lt;br /&gt;
 set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
El -XDebug  parametro habilita el debug. &lt;br /&gt;
El -Xnoagent parametro desabilita el default sun.tools.debug agente debug.  &lt;br /&gt;
El -Xrunjdwp parametro carga el JPDA refencia de la implementacion de JDWP. &lt;br /&gt;
Debugging es hablitado en el puerto 4000. &lt;br /&gt;
El protocolo JDWP es el protocolo usado en debug con el debugger remoto.&lt;br /&gt;
&lt;br /&gt;
Iniciar el WebLogic Server con el startWebLogic.cmd script.&lt;br /&gt;
&lt;br /&gt;
==Configurando el IDE==&lt;br /&gt;
&lt;br /&gt;
La idea es siempre la misma: conectar el debugger del IDE a la JVM de WebLogic. Esta tarea varia de acuerdo al IDE que se utilice. A continuación las instrucciones para algunos IDE.&lt;br /&gt;
&lt;br /&gt;
En todos los casos, WebLogic tiene que estar levantado para que el IDE pueda conectarse.  Para esto, ejecutar el script que se modifico en el paso anterior. Una vez que WebLogic inicie, sigan las instrucciones.&lt;br /&gt;
&lt;br /&gt;
=== [[Eclipse]] ===&lt;br /&gt;
#Ir al menú Run -&amp;gt; Debug... (varia el nombre de acuerdo a la versión. se debe acceder a la configuración del debug).&lt;br /&gt;
#Seleccionar la opción de la izquierda &amp;quot;Remote Java Application&amp;quot;.&lt;br /&gt;
#Click en el botón &amp;quot;New&amp;quot;.&lt;br /&gt;
#En la solapa &amp;quot;Connect&amp;quot; completen los datos:&lt;br /&gt;
##Connection Type: Standard (Socket Attach)&lt;br /&gt;
##Host: el IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en el botón Debug. Eclipse debería conectarse a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[NetBeans]] ===&lt;br /&gt;
#Ir al menú Debug -&amp;gt; Attach Debugger&lt;br /&gt;
#Completar los datos del popup que aparece:&lt;br /&gt;
##Connector: !SocketAttach&lt;br /&gt;
##Transport: dt_socket&lt;br /&gt;
##Host: El IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en &amp;quot;Ok&amp;quot;. NetBeans se debería conectar a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[JDeveloper]] ===&lt;br /&gt;
#Sobre el toolbar, ir al ícono de debug -&amp;gt; Manage Run Configurations...&lt;br /&gt;
#Seleccionar la categoría Run/Debug&lt;br /&gt;
#Doble-click en la configuración de debug Default (o la que se este usando)&lt;br /&gt;
#Seleccionar la opción Launch Settings&lt;br /&gt;
#Activar el checkbox &amp;quot;Remote Debugging and Profiling&amp;quot;&lt;br /&gt;
#Seleccionar la opción Debugger -&amp;gt; Remote&lt;br /&gt;
#Completar los datos:&lt;br /&gt;
##Protocol: Attach to JPDA&lt;br /&gt;
##Host: el IP o nombre de la maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Aceptar las ventanas abiertas. JDeveloper está listo para debug.&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5044</id>
		<title>Debug Remoto De Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5044"/>
				<updated>2010-05-06T12:27:02Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Configurando el Weblogic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebLogic]]&lt;br /&gt;
[[Category:IDE]]&lt;br /&gt;
Existe una forma de poder debuguear el [[WebLogic]] desde algún IDE. Esto lo posibilita una característica conocida como [[JPDA]] que las máquinas virtuales de Java (JVM) tienen.&lt;br /&gt;
&lt;br /&gt;
==Configurando el Weblogic==&lt;br /&gt;
*Setear la variable para debug:&lt;br /&gt;
 set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 8.x.===&lt;br /&gt;
*Ubicar el dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain.&lt;br /&gt;
*Abrir el archivo startWeblogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar esta línea:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%...&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 9.x.===&lt;br /&gt;
*Ubicar la carpeta bin del dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain\bin.&lt;br /&gt;
*Abrir el archivo startWebLogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar las dos lineas que comienzan:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM%&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 10.x.===&lt;br /&gt;
Para iniciar WebLogic Server en modo debug, se necesita modificar el startWebLogic.cmd script. Ejemplo: &amp;lt;WLS-root&amp;gt;\wlserver_10.0\samples\domains\wl_server. &amp;lt;WLS-root&amp;gt; es el directorio en el que se instalo el weblogic.&lt;br /&gt;
&lt;br /&gt;
En el startWebLogic.cmd script, añadir:&lt;br /&gt;
&lt;br /&gt;
 set JAVA_OPTIONS=-Xdebug &lt;br /&gt;
 -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
El -XDebug  parametro habilita el debug. &lt;br /&gt;
El -Xnoagent parametro desabilita el default sun.tools.debug agente debug.  &lt;br /&gt;
El -Xrunjdwp parametro carga el JPDA refencia de la implementacion de JDWP. &lt;br /&gt;
Debugging es hablitado en el puerto 4000. &lt;br /&gt;
El protocolo JDWP es el protocolo usado en debug con el debugger remoto.&lt;br /&gt;
&lt;br /&gt;
Iniciar el WebLogic Server con el startWebLogic.cmd script.&lt;br /&gt;
&lt;br /&gt;
==Configurando el IDE==&lt;br /&gt;
&lt;br /&gt;
La idea es siempre la misma: conectar el debugger del IDE a la JVM de WebLogic. Esta tarea varia de acuerdo al IDE que se utilice. A continuación las instrucciones para algunos IDE.&lt;br /&gt;
&lt;br /&gt;
En todos los casos, WebLogic tiene que estar levantado para que el IDE pueda conectarse.  Para esto, ejecutar el script que se modifico en el paso anterior. Una vez que WebLogic inicie, sigan las instrucciones.&lt;br /&gt;
&lt;br /&gt;
=== [[Eclipse]] ===&lt;br /&gt;
#Ir al menú Run -&amp;gt; Debug... (varia el nombre de acuerdo a la versión. se debe acceder a la configuración del debug).&lt;br /&gt;
#Seleccionar la opción de la izquierda &amp;quot;Remote Java Application&amp;quot;.&lt;br /&gt;
#Click en el botón &amp;quot;New&amp;quot;.&lt;br /&gt;
#En la solapa &amp;quot;Connect&amp;quot; completen los datos:&lt;br /&gt;
##Connection Type: Standard (Socket Attach)&lt;br /&gt;
##Host: el IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en el botón Debug. Eclipse debería conectarse a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[NetBeans]] ===&lt;br /&gt;
#Ir al menú Debug -&amp;gt; Attach Debugger&lt;br /&gt;
#Completar los datos del popup que aparece:&lt;br /&gt;
##Connector: !SocketAttach&lt;br /&gt;
##Transport: dt_socket&lt;br /&gt;
##Host: El IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en &amp;quot;Ok&amp;quot;. NetBeans se debería conectar a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[JDeveloper]] ===&lt;br /&gt;
#Sobre el toolbar, ir al ícono de debug -&amp;gt; Manage Run Configurations...&lt;br /&gt;
#Seleccionar la categoría Run/Debug&lt;br /&gt;
#Doble-click en la configuración de debug Default (o la que se este usando)&lt;br /&gt;
#Seleccionar la opción Launch Settings&lt;br /&gt;
#Activar el checkbox &amp;quot;Remote Debugging and Profiling&amp;quot;&lt;br /&gt;
#Seleccionar la opción Debugger -&amp;gt; Remote&lt;br /&gt;
#Completar los datos:&lt;br /&gt;
##Protocol: Attach to JPDA&lt;br /&gt;
##Host: el IP o nombre de la maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Aceptar las ventanas abiertas. JDeveloper está listo para debug.&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5043</id>
		<title>Debug Remoto De Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Debug_Remoto_De_Weblogic&amp;diff=5043"/>
				<updated>2010-05-06T12:24:07Z</updated>
		
		<summary type="html">&lt;p&gt;MaTT: /* Configurando el Weblogic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WebLogic]]&lt;br /&gt;
[[Category:IDE]]&lt;br /&gt;
Existe una forma de poder debuguear el [[WebLogic]] desde algún IDE. Esto lo posibilita una característica conocida como [[JPDA]] que las máquinas virtuales de Java (JVM) tienen.&lt;br /&gt;
&lt;br /&gt;
==Configurando el Weblogic==&lt;br /&gt;
*Setear la variable para debug:&lt;br /&gt;
 set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 8.x.===&lt;br /&gt;
*Ubicar el dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain.&lt;br /&gt;
*Abrir el archivo startWeblogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar esta línea:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%...&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 9.x.===&lt;br /&gt;
*Ubicar la carpeta bin del dominio en uso. Por ejemplo \bea\user_projects\domain\mydomain\bin.&lt;br /&gt;
*Abrir el archivo startWebLogic.cmd para editar.&lt;br /&gt;
*Sobre el final del archivo, localizar las dos lineas que comienzan:&lt;br /&gt;
 %JAVA_HOME%\bin\java %JAVA_VM%&lt;br /&gt;
*Agregarle la variable %DEBUG_OPTS% de la siguiente forma:&lt;br /&gt;
 %JAVA_HOME%\bin\java '''%DEBUG_OPTS%''' %JAVA_VM% %MEM_ARGS%...&lt;br /&gt;
&lt;br /&gt;
===Configuración para Weblogic 10.x.===&lt;br /&gt;
Para iniciar WebLogic Server en modo debug, se necesita modificar el startWebLogic.cmd script. Ejemplo: &amp;lt;WLS-root&amp;gt;\wlserver_10.0\samples\domains\wl_server. &amp;lt;WLS-root&amp;gt; es el directorio en el que se instalo el weblogic.&lt;br /&gt;
&lt;br /&gt;
En el startWebLogic.cmd script, añadir:&lt;br /&gt;
&lt;br /&gt;
set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n&lt;br /&gt;
&lt;br /&gt;
El -XDebug  parametro habilita el debug. &lt;br /&gt;
El -Xnoagent parametro desabilita el default sun.tools.debug agente debug.  &lt;br /&gt;
El -Xrunjdwp parametro carga el JPDA refencia de la implementacion de JDWP. &lt;br /&gt;
Debugging es hablitado en el puerto 4000. &lt;br /&gt;
El protocolo JDWP es el protocolo usado en debug con el debugger remoto.&lt;br /&gt;
&lt;br /&gt;
Iniciar el WebLogic Server con el startWebLogic.cmd script.&lt;br /&gt;
&lt;br /&gt;
==Configurando el IDE==&lt;br /&gt;
&lt;br /&gt;
La idea es siempre la misma: conectar el debugger del IDE a la JVM de WebLogic. Esta tarea varia de acuerdo al IDE que se utilice. A continuación las instrucciones para algunos IDE.&lt;br /&gt;
&lt;br /&gt;
En todos los casos, WebLogic tiene que estar levantado para que el IDE pueda conectarse.  Para esto, ejecutar el script que se modifico en el paso anterior. Una vez que WebLogic inicie, sigan las instrucciones.&lt;br /&gt;
&lt;br /&gt;
=== [[Eclipse]] ===&lt;br /&gt;
#Ir al menú Run -&amp;gt; Debug... (varia el nombre de acuerdo a la versión. se debe acceder a la configuración del debug).&lt;br /&gt;
#Seleccionar la opción de la izquierda &amp;quot;Remote Java Application&amp;quot;.&lt;br /&gt;
#Click en el botón &amp;quot;New&amp;quot;.&lt;br /&gt;
#En la solapa &amp;quot;Connect&amp;quot; completen los datos:&lt;br /&gt;
##Connection Type: Standard (Socket Attach)&lt;br /&gt;
##Host: el IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en el botón Debug. Eclipse debería conectarse a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[NetBeans]] ===&lt;br /&gt;
#Ir al menú Debug -&amp;gt; Attach Debugger&lt;br /&gt;
#Completar los datos del popup que aparece:&lt;br /&gt;
##Connector: !SocketAttach&lt;br /&gt;
##Transport: dt_socket&lt;br /&gt;
##Host: El IP o nombre de su maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Click en &amp;quot;Ok&amp;quot;. NetBeans se debería conectar a WebLogic y quedar listo para debug.&lt;br /&gt;
&lt;br /&gt;
=== [[JDeveloper]] ===&lt;br /&gt;
#Sobre el toolbar, ir al ícono de debug -&amp;gt; Manage Run Configurations...&lt;br /&gt;
#Seleccionar la categoría Run/Debug&lt;br /&gt;
#Doble-click en la configuración de debug Default (o la que se este usando)&lt;br /&gt;
#Seleccionar la opción Launch Settings&lt;br /&gt;
#Activar el checkbox &amp;quot;Remote Debugging and Profiling&amp;quot;&lt;br /&gt;
#Seleccionar la opción Debugger -&amp;gt; Remote&lt;br /&gt;
#Completar los datos:&lt;br /&gt;
##Protocol: Attach to JPDA&lt;br /&gt;
##Host: el IP o nombre de la maquina&lt;br /&gt;
##Port: 1044&lt;br /&gt;
#Aceptar las ventanas abiertas. JDeveloper está listo para debug.&lt;/div&gt;</summary>
		<author><name>MaTT</name></author>	</entry>

	</feed>