<?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=Darkscythe</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=Darkscythe"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/Especial:Contribuciones/Darkscythe"/>
		<updated>2026-04-05T16:11:07Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Dynamic_Query_en_Liferay&amp;diff=6936</id>
		<title>Dynamic Query en Liferay</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Dynamic_Query_en_Liferay&amp;diff=6936"/>
				<updated>2013-11-14T21:01:53Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Liferay, a partir de la versión 5.1, proporcionar acceso a la API de consulta dinámica de Hibernate. Esto permite realizar consultas complejas sobre las estructuras o lista dinámicas que existan en el portal.&lt;br /&gt;
&lt;br /&gt;
== Dynamic Query + Velocity ==&lt;br /&gt;
En este ejemplo se muestra como implementar las consultas dinámicas en un Template de una [http://www.liferay.com/es/documentation/liferay-portal/6.1/user-guide/-/ai/creating-data-lists Lista dinámica]. La consulta obtiene los 20 primeros registros del usuario registrado ordenados de forma descendentepor fecha de modificación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
## Obtiene el userId.&lt;br /&gt;
#set($userId = $request.get(&amp;quot;theme-display&amp;quot;).get(&amp;quot;user-id&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
## Obtiene el servicio para ejecutar las consultas dinamicas.&lt;br /&gt;
#set ($ddlLocalService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))&lt;br /&gt;
&lt;br /&gt;
##Obtiene el id de la lista.&lt;br /&gt;
#set ($recordSetId = $getterUtil.getLong($reserved_record_set_id.data, 0))&lt;br /&gt;
&lt;br /&gt;
## Obtiene el tipo de respuesta para la consulta dinamica.&lt;br /&gt;
#set ($DDLrecordClass = $portal.getClass().forName(&amp;quot;com.liferay.portlet.dynamicdatalists.model.DDLRecord&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
##Utilidad para armar consultas dinamicas.&lt;br /&gt;
#set ($dqfu = $portal.getClass().forName(&amp;quot;com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
##Utilidad para agregar ordenamiento a la consulta dinamica.&lt;br /&gt;
#set ($ofu = $portal.getClass().forName(&amp;quot;com.liferay.portal.kernel.dao.orm.OrderFactoryUtil&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
##Restricciones&lt;br /&gt;
#set ($rfu = $portal.getClass().forName(&amp;quot;com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
##Query&lt;br /&gt;
#set ($q = $dqfu.forClass($DDLrecordClass))  &lt;br /&gt;
#set ($V = $q.add($rfu.eq(&amp;quot;recordSetId&amp;quot;, $getterUtil.getLong($recordSetId))))  &lt;br /&gt;
#set ($V = $q.add($rfu.eq(&amp;quot;userId&amp;quot;, $getterUtil.getLong($userId))))  &lt;br /&gt;
#set ($V = $q.addOrder($ofu.desc(&amp;quot;modifiedDate&amp;quot;)))  &lt;br /&gt;
#set ($records = $ddlLocalService.dynamicQuery($q,0,20))  &lt;br /&gt;
&lt;br /&gt;
#foreach($record in $records)&lt;br /&gt;
    #set ($titulo = $record.getField(&amp;quot;Titulo&amp;quot;).getValue())&lt;br /&gt;
    #set ($link = $record.getField(&amp;quot;Link&amp;quot;).getValue())&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;$link&amp;quot;&amp;gt;$titulo&amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dynamic Query para obtener una lista dinámica por nombre en un VM ==&lt;br /&gt;
En este ejemplo se muestra como realizar una consulta para obtener la lista por el nombre que tenga en algun idioma. Es decir, si nuestra lista dinamica se llama &amp;quot;ListaDinamica&amp;quot; en español y &amp;quot;DynamicList&amp;quot; en inglés (debido a que el campo del nombre es internacionalizable) podremos encontrarlo por ambos.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#set ($nombreListaDinamicaABuscar = &amp;quot;UnNombre&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
#set ($ddlRecordService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))&lt;br /&gt;
&lt;br /&gt;
#set ($ddlRecordSetService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordSetLocalService'))&lt;br /&gt;
&lt;br /&gt;
## Obtiene el tipo de respuesta para la consulta dinamica.&lt;br /&gt;
#set ($DDLrecordSetClass = $portal.getClass().forName(&amp;quot;com.liferay.portlet.dynamicdatalists.model.DDLRecordSet&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
##Utilidad para armar consultas dinamicas.&lt;br /&gt;
#set ($dynamicQueryFactoryUtil = $portal.getClass().forName(&amp;quot;com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil&amp;quot;)) &lt;br /&gt;
  &lt;br /&gt;
##Restricciones&lt;br /&gt;
#set ($restrictionsFactoryUtil = $portal.getClass().forName(&amp;quot;com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
##Armamos el nombre de la lista considerando que en liferay se encuentra dentro de un xml.&lt;br /&gt;
#set($nombre = &amp;quot;%&amp;gt;$nombreListaDinamicaABuscar&amp;lt;%&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
##Query lista dinamica&lt;br /&gt;
#set ($queryBusquedaListaDinamica = $dynamicQueryFactoryUtil.forClass($DDLrecordSetClass))  &lt;br /&gt;
#set ($V = $queryBusquedaListaDinamica.add($restrictionsFactoryUtil.like(&amp;quot;name&amp;quot;, $nombre)))&lt;br /&gt;
#set ($resultadoListas = $ddlRecordSetService.dynamicQuery($queryBusquedaListaDinamica))&lt;br /&gt;
&lt;br /&gt;
##Asumimos que hay una sola lista con este nombre&lt;br /&gt;
#set ($listaActual = $resultadoListas.get(0))&lt;br /&gt;
#set ($recordSetIdActual = $listaActual.recordSetId)&lt;br /&gt;
&lt;br /&gt;
##Query registros lista&lt;br /&gt;
#set($registrosLista = $ddlRecordService.getRecords($recordSetIdActual))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ver Tambien ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.liferay.com/es/community/wiki/-/wiki/Main/Queries+2%3A+DynamicQuery+API Wiki Liferay]&lt;br /&gt;
&lt;br /&gt;
[[Category:Liferay Dynammic_Query]]&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6826</id>
		<title>Formateo De Fecha Con Jackson 1.7 y Spring MVC 3.1</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6826"/>
				<updated>2013-05-30T16:03:13Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: /* Como testear nuestra configuración con MockMvc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Formato customizado de fecha==&lt;br /&gt;
En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la siguiente configuración.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Definimos un ObjectMapper de jackson para customizar--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de configuración de jackson y le seteamos como factory a nuestro mapper y el getter del mismo como método de creación--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfig&amp;quot; factory-bean=&amp;quot;jacksonObjectMapper&amp;quot; factory-method=&amp;quot;getSerializationConfig&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por Spring para manipular la inicialización de nuestro bean &amp;quot;jacksonSerializationConfig&amp;quot;, para forzar que al inicializarse se ejecute el método &amp;quot;setDateFormat&amp;quot; recibiendo por parametro un objeto del tipo SimpleDateFormat con el formato que deseemos para la fecha--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfigMethodInvokingFactoryBean&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot; ref=&amp;quot;jacksonSerializationConfig&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;setDateFormat&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;bean class=&amp;quot;java.text.SimpleDateFormat&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;constructor-arg type=&amp;quot;java.lang.String&amp;quot; value=&amp;quot;dd/MM/yyyy&amp;quot;&amp;gt;&amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
			&amp;lt;/bean&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Formato ISO-8601==&lt;br /&gt;
Para utilizar este formato que Jackson trae como default, se requiere una configuración un poco más rebuscada.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por spring para &amp;quot;Inicializar&amp;quot; nuestro ObjectMapper, ya que el método &amp;quot;configure&amp;quot; que queremos ejecutar tiene como retorno un objeto del tipo ObjectMapper, al ejecutarse genera un bean de dicho tipo (que podría causar inconvenientes si queremos inyectarlo a través de la anotación &amp;quot;@Autowired&amp;quot;) --&amp;gt;&lt;br /&gt;
&amp;lt;bean name=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;  /&amp;gt;&lt;br /&gt;
	&amp;lt;/property&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;configure&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;java.lang.Boolean.FALSE&amp;quot;/&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Como testear nuestra configuración con MockMvc==&lt;br /&gt;
En caso de que estemos utilizando MockMvcBuilders para testear y estemos utilizando standaloneSetup ya que no podemos/queremos cargar todo el contexto por algún motivo, podemos testear de la siguiente manera.&lt;br /&gt;
&amp;lt;code language=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private MockMvc mockMvc;&lt;br /&gt;
&lt;br /&gt;
@Autowired&lt;br /&gt;
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;&lt;br /&gt;
&lt;br /&gt;
@Before&lt;br /&gt;
public void setUp() {&lt;br /&gt;
	List&amp;lt;HttpMessageConverter&amp;lt;?&amp;gt;&amp;gt; messageConverters = requestMappingHandlerAdapter.getMessageConverters();&lt;br /&gt;
	HttpMessageConverter&amp;lt;?&amp;gt;[] messageConvertersArray = messageConverters.toArray(new HttpMessageConverter&amp;lt;?&amp;gt;[messageConverters.size()]);&lt;br /&gt;
&lt;br /&gt;
	mockMvc = MockMvcBuilders.standaloneSetup(instancia).setMessageConverters(messageConvertersArray).build();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6825</id>
		<title>Formateo De Fecha Con Jackson 1.7 y Spring MVC 3.1</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6825"/>
				<updated>2013-05-28T20:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: /* Formato customizado de fecha */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Formato customizado de fecha==&lt;br /&gt;
En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la siguiente configuración.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Definimos un ObjectMapper de jackson para customizar--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de configuración de jackson y le seteamos como factory a nuestro mapper y el getter del mismo como método de creación--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfig&amp;quot; factory-bean=&amp;quot;jacksonObjectMapper&amp;quot; factory-method=&amp;quot;getSerializationConfig&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por Spring para manipular la inicialización de nuestro bean &amp;quot;jacksonSerializationConfig&amp;quot;, para forzar que al inicializarse se ejecute el método &amp;quot;setDateFormat&amp;quot; recibiendo por parametro un objeto del tipo SimpleDateFormat con el formato que deseemos para la fecha--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfigMethodInvokingFactoryBean&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot; ref=&amp;quot;jacksonSerializationConfig&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;setDateFormat&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;bean class=&amp;quot;java.text.SimpleDateFormat&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;constructor-arg type=&amp;quot;java.lang.String&amp;quot; value=&amp;quot;dd/MM/yyyy&amp;quot;&amp;gt;&amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
			&amp;lt;/bean&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Formato ISO-8601==&lt;br /&gt;
Para utilizar este formato que Jackson trae como default, se requiere una configuración un poco más rebuscada.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por spring para &amp;quot;Inicializar&amp;quot; nuestro ObjectMapper, ya que el método &amp;quot;configure&amp;quot; que queremos ejecutar tiene como retorno un objeto del tipo ObjectMapper, al ejecutarse genera un bean de dicho tipo (que podría causar inconvenientes si queremos inyectarlo a través de la anotación &amp;quot;@Autowired&amp;quot;) --&amp;gt;&lt;br /&gt;
&amp;lt;bean name=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;  /&amp;gt;&lt;br /&gt;
	&amp;lt;/property&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;configure&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;java.lang.Boolean.FALSE&amp;quot;/&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Como testear nuestra configuración con MockMvc==&lt;br /&gt;
En caso de que estemos utilizando MockMvcBuilders para testear y estemos utilizando standaloneSetup ya que no podemos/queremos cargar todo el contexto por algún motivo, podemos testear de la siguiente manera.&lt;br /&gt;
&amp;lt;code language=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private MockMvc mockMvc;&lt;br /&gt;
&lt;br /&gt;
@Autowired&lt;br /&gt;
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;&lt;br /&gt;
&lt;br /&gt;
@Before&lt;br /&gt;
public void setUp() {&lt;br /&gt;
	List&amp;lt;HttpMessageConverter&amp;lt;?&amp;gt;&amp;gt; messageConverters = requestMappingHandlerAdapter.getMessageConverters();&lt;br /&gt;
	HttpMessageConverter&amp;lt;?&amp;gt;[] messageConvertersArray = messageConverters.toArray(new HttpMessageConverter&amp;lt;?&amp;gt;[messageConverters.size()]);&lt;br /&gt;
&lt;br /&gt;
	MockMvc mockMvc = MockMvcBuilders.standaloneSetup(instancia).setMessageConverters(messageConvertersArray).build();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6824</id>
		<title>Formateo De Fecha Con Jackson 1.7 y Spring MVC 3.1</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Formateo_De_Fecha_Con_Jackson_1.7_y_Spring_MVC_3.1&amp;diff=6824"/>
				<updated>2013-05-28T20:28:10Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: Página creada con '==Formato customizado de fecha== En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la sig…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Formato customizado de fecha==&lt;br /&gt;
En caso de querer definir el formato de fecha del lado del servidor cuando se utiliza Jackson y Spring MVC , se puede realizar utilizando la siguiente configuración.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Definimos un ObjectMapper de jackson para customizar--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de configuración de jackson y le seteamos como factory a nuestro mapper y el getter del mismo como método de creación--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfig&amp;quot; factory-bean=&amp;quot;jacksonObjectMapper&amp;quot; factory-method=&amp;quot;getSerializationConfig&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por Spring para manipular la inicialización de nuestro bean &amp;quot;jacksonSerializationConfig&amp;quot;, para forzar que al inicializarse se ejecute el método &amp;quot;setDateFormat&amp;quot; recibiendo por parametro un objeto del tipo SimpleDateFormat con el el formato que deseemos para la fecha--&amp;gt;&lt;br /&gt;
&amp;lt;bean id=&amp;quot;jacksonSerializationConfigMethodInvokingFactoryBean&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot; ref=&amp;quot;jacksonSerializationConfig&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;setDateFormat&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;bean class=&amp;quot;java.text.SimpleDateFormat&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;constructor-arg type=&amp;quot;java.lang.String&amp;quot; value=&amp;quot;dd/MM/yyyy&amp;quot;&amp;gt;&amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
			&amp;lt;/bean&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Formato ISO-8601==&lt;br /&gt;
Para utilizar este formato que Jackson trae como default, se requiere una configuración un poco más rebuscada.&lt;br /&gt;
&amp;lt;code language=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--Creamos un bean de la clase &amp;quot;MethodInvokingFactoryBean&amp;quot; provista por spring para &amp;quot;Inicializar&amp;quot; nuestro ObjectMapper, ya que el método &amp;quot;configure&amp;quot; que queremos ejecutar tiene como retorno un objeto del tipo ObjectMapper, al ejecutarse genera un bean de dicho tipo (que podría causar inconvenientes si queremos inyectarlo a través de la anotación &amp;quot;@Autowired&amp;quot;) --&amp;gt;&lt;br /&gt;
&amp;lt;bean name=&amp;quot;jacksonObjectMapper&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.MethodInvokingFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetObject&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.codehaus.jackson.map.ObjectMapper&amp;quot;  /&amp;gt;&lt;br /&gt;
	&amp;lt;/property&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;targetMethod&amp;quot; value=&amp;quot;configure&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;list&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;util:constant static-field=&amp;quot;java.lang.Boolean.FALSE&amp;quot;/&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;!--Modificamos el tag que interpreta las anotaciones de spring mvc para que cargue nuestro conversor de mensajes con el Mapper que definimos. Con el atributo &amp;quot;register-defaults&amp;quot; en true nos aseguramos que el resto de los conversores de spring que trae por defecto se carguen también--&amp;gt;&lt;br /&gt;
&amp;lt;mvc:annotation-driven&amp;gt;&lt;br /&gt;
	&amp;lt;mvc:message-converters register-defaults=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;bean class=&amp;quot;org.springframework.http.converter.json.MappingJacksonHttpMessageConverter&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property name=&amp;quot;objectMapper&amp;quot; ref=&amp;quot;jacksonObjectMapper&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/bean&amp;gt;&lt;br /&gt;
	&amp;lt;/mvc:message-converters&amp;gt;&lt;br /&gt;
&amp;lt;/mvc:annotation-driven&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Como testear nuestra configuración con MockMvc==&lt;br /&gt;
En caso de que estemos utilizando MockMvcBuilders para testear y estemos utilizando standaloneSetup ya que no podemos/queremos cargar todo el contexto por algún motivo, podemos testear de la siguiente manera.&lt;br /&gt;
&amp;lt;code language=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
private MockMvc mockMvc;&lt;br /&gt;
&lt;br /&gt;
@Autowired&lt;br /&gt;
private RequestMappingHandlerAdapter requestMappingHandlerAdapter;&lt;br /&gt;
&lt;br /&gt;
@Before&lt;br /&gt;
public void setUp() {&lt;br /&gt;
	List&amp;lt;HttpMessageConverter&amp;lt;?&amp;gt;&amp;gt; messageConverters = requestMappingHandlerAdapter.getMessageConverters();&lt;br /&gt;
	HttpMessageConverter&amp;lt;?&amp;gt;[] messageConvertersArray = messageConverters.toArray(new HttpMessageConverter&amp;lt;?&amp;gt;[messageConverters.size()]);&lt;br /&gt;
&lt;br /&gt;
	MockMvc mockMvc = MockMvcBuilders.standaloneSetup(instancia).setMessageConverters(messageConvertersArray).build();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6691</id>
		<title>JPA2 con Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6691"/>
				<updated>2012-09-14T14:38:51Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: /* Weblogic con versión  anterior a 10.3.4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Weblogic versión  anterior a 10.3.4 ==&lt;br /&gt;
Para estas versiones de Weblogic la solución es utilizar un módulo EAR e incluir en la configuración del archivo ''weblogic-application.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;prefer-application-packages&amp;gt; &lt;br /&gt;
    &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt; &lt;br /&gt;
&amp;lt;/prefer-application-packages&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
De esta forma Weblogic utilizará las clases de las bibliotecas que tengamos agregadas en nuestro proyecto.&lt;br /&gt;
&lt;br /&gt;
== Weblogic versión 10.3.4 y posterior ==&lt;br /&gt;
Para estas versiones de Weblogic la soluciónes posibles son:&lt;br /&gt;
*Idem solucion versiones anteriores&lt;br /&gt;
*Si se trata de un módulo WAR, a partir de esta versión se incluyó la posibilidad de agregar en el archivo ''weblogic.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;container-descriptor&amp;gt;&lt;br /&gt;
    &amp;lt;prefer-application-packages&amp;gt;&lt;br /&gt;
        &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt;&lt;br /&gt;
    &amp;lt;/prefer-application-packages&amp;gt;&lt;br /&gt;
&amp;lt;/container-descriptor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Que funciona de igual manera que la anterior sólo que no es necesario que se trate de un módulo EAR.&lt;br /&gt;
*Otra forma es modificar el Weblogic para que éste de soporte. Para hacer esto solo hay que modificar el archivo ''commEnv.cmd'' agregando la linea (después de la declaración de la variable BEA_HOME):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set PRE_CLASSPATH=%BEA_HOME%\modules\javax.persistence_1.0.0.0_2-0-0.jar;%BEA_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6690</id>
		<title>JPA2 con Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6690"/>
				<updated>2012-09-14T14:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: /* Weblogic con versión  posterior a 10.3.4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Weblogic con versión  anterior a 10.3.4 ==&lt;br /&gt;
Para estas versiones de Weblogic la solución es utilizar un módulo EAR e incluir en la configuración del archivo ''weblogic-application.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;prefer-application-packages&amp;gt; &lt;br /&gt;
    &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt; &lt;br /&gt;
&amp;lt;/prefer-application-packages&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
De esta forma Weblogic utilizará las clases de las bibliotecas que tengamos agregadas en nuestro proyecto.&lt;br /&gt;
&lt;br /&gt;
== Weblogic versión 10.3.4 y posterior ==&lt;br /&gt;
Para estas versiones de Weblogic la soluciónes posibles son:&lt;br /&gt;
*Idem solucion versiones anteriores&lt;br /&gt;
*Si se trata de un módulo WAR, a partir de esta versión se incluyó la posibilidad de agregar en el archivo ''weblogic.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;container-descriptor&amp;gt;&lt;br /&gt;
    &amp;lt;prefer-application-packages&amp;gt;&lt;br /&gt;
        &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt;&lt;br /&gt;
    &amp;lt;/prefer-application-packages&amp;gt;&lt;br /&gt;
&amp;lt;/container-descriptor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Que funciona de igual manera que la anterior sólo que no es necesario que se trate de un módulo EAR.&lt;br /&gt;
*Otra forma es modificar el Weblogic para que éste de soporte. Para hacer esto solo hay que modificar el archivo ''commEnv.cmd'' agregando la linea (después de la declaración de la variable BEA_HOME):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set PRE_CLASSPATH=%BEA_HOME%\modules\javax.persistence_1.0.0.0_2-0-0.jar;%BEA_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6689</id>
		<title>JPA2 con Weblogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JPA2_con_Weblogic&amp;diff=6689"/>
				<updated>2012-09-14T14:29:12Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: Página creada con '== Weblogic con versión  anterior a 10.3.4 == Para estas versiones de Weblogic la solución es utilizar un módulo EAR e incluir en la configuración del archivo ''weblogic-app…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Weblogic con versión  anterior a 10.3.4 ==&lt;br /&gt;
Para estas versiones de Weblogic la solución es utilizar un módulo EAR e incluir en la configuración del archivo ''weblogic-application.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;prefer-application-packages&amp;gt; &lt;br /&gt;
    &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt; &lt;br /&gt;
&amp;lt;/prefer-application-packages&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
De esta forma Weblogic utilizará las clases de las bibliotecas que tengamos agregadas en nuestro proyecto.&lt;br /&gt;
&lt;br /&gt;
== Weblogic con versión  posterior a 10.3.4 ==&lt;br /&gt;
Para estas versiones de Weblogic la soluciónes posibles son:&lt;br /&gt;
*Idem solucion versiones anteriores&lt;br /&gt;
*Si se trata de un módulo WAR, a partir de esta versión se incluyó la posibilidad de agregar en el archivo ''weblogic.xml'' lo siguiente:&lt;br /&gt;
&amp;lt;pre language=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;container-descriptor&amp;gt;&lt;br /&gt;
    &amp;lt;prefer-application-packages&amp;gt;&lt;br /&gt;
        &amp;lt;package-name&amp;gt;javax.persistence.*&amp;lt;/package-name&amp;gt;&lt;br /&gt;
    &amp;lt;/prefer-application-packages&amp;gt;&lt;br /&gt;
&amp;lt;/container-descriptor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Que funciona de igual manera que la anterior sólo que no es necesario que se trate de un módulo EAR.&lt;br /&gt;
*Otra forma es modificar el Weblogic para que éste de soporte. Para hacer esto solo hay que modificar el archivo ''commEnv.cmd'' agregando la linea (después de la declaración de la variable BEA_HOME):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set PRE_CLASSPATH=%BEA_HOME%\modules\javax.persistence_1.0.0.0_2-0-0.jar;%BEA_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-0.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=WebLogic&amp;diff=6688</id>
		<title>WebLogic</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=WebLogic&amp;diff=6688"/>
				<updated>2012-09-14T13:18:15Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WebLogic es el [[Servidor de Aplicaciones]] [[Java EE]] de BEA (actualmente propiedad de [[Oracle]]).&lt;br /&gt;
&lt;br /&gt;
==Versiones==&lt;br /&gt;
=== 8.x ===&lt;br /&gt;
La version 8.x es compatible con el JDK 1.4 y JEE 1.4&lt;br /&gt;
&lt;br /&gt;
=== 9.x ===&lt;br /&gt;
La version 9.x es compatible con el JDK 5 y JEE 1.4 (con compatibilidad parcial para [[Java EE]] 5)&lt;br /&gt;
&lt;br /&gt;
=== 10.x ===&lt;br /&gt;
La versión 10.x es compatible con el [[Java SE]] 5 y [[Java EE]] 5. &lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [[MDB en Weblogic]]&lt;br /&gt;
* [[JPA2 con Weblogic]]&lt;br /&gt;
* [[Debug Remoto De Weblogic]]&lt;br /&gt;
* [[AquaLogic]]&lt;br /&gt;
* [[Compartir sesión en WebLogic]]&lt;br /&gt;
* [[SAF en WebLogic]]&lt;br /&gt;
* [[Transaction Manager en Weblogic]]&lt;br /&gt;
* [[Work Manager en Weblogic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WebLogic]]&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2668</id>
		<title>Creando una cola en WebLogic 9.2</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2668"/>
				<updated>2009-04-21T14:29:49Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lo primero que hay que hacer es crear un servidor JMS. Para esto hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Abrir la consola de administrador (por defecto WebLogic utiliza el puerto 7001).&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
#Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Servers.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Rellenar el campo “Name” con el nombre deseado y apretar el botón “Create a New Store”.&lt;br /&gt;
#En la pantalla seleccionar como tipo “File Store”, apretar el boton “Next”.&lt;br /&gt;
#En esta pantalla rellenar el campo “Name” con el nombre deseado, “Target” dejamos seleccionado “AdminServer” y en “Directory” elegir el lugar donde se quiera que se almacenen los datos (ejemplo: “C:\FileStore”).&lt;br /&gt;
#Vamos a volver a la pantalla del JMS Server, seleccionamos el “File Store” que creamos y le apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos como “Target” el “AdminServer” y apretamos el boton “Finish”.&lt;br /&gt;
#Ahora solo nos queda hacer click en el botón “Activate Changes” para finalizar esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora para poder  crear la Cola y la Connection Factory necesitamos crear previamente un Modulo JMS. Para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
# Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#En esta pantalla, en el campo “Name” ponemos el nombre que queremos, en el campo “Descriptor File Name” nos convendría poner un nombre significativo, es decir que tenga relacion con el nombre del campo “Name”, pero si no ponemos nada se asigna uno por default. En el campo “Location in Domain” tenemos que poner donde se va a guardar el descriptor (archivo que nombramos en el campo anterior), por lo que nuevamente nos convendría un nombre relacionado (Ejemplo: “jms/nombreQueLePuseAlDescriptor”). Una vez completados (o no), hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos el Server en el cual queremos deployar, en nuestro caso siempre utilizamos el que viene por default, es decir “AdminServer” y apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla, si tildamos la opción “Would you like to add resources to this JMS system module?” accederemos directamente a la pantalla donde añadir recursos (En nuestro caso, una cola y una connection factory), por lo que la tildamos y hacemos click en “Finish”.&lt;br /&gt;
#Ahora hacemos click en “Activate Changes” y terminamos esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora finalmente llegó la hora de crear nuestra Connection Factory y nuestra Cola. Primero crearemos la Connection Factory, para ello tenemos que hacer lo siguiente:&lt;br /&gt;
#Click en “Lock and Edit”.&lt;br /&gt;
# En caso de no haber tildado la opción al final de la parte anterior, tenemos que ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module, y seleccionar el JMS module que creamos.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Seleccionamos “Connection Factory” y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla no tenemos más que hacer que completar los campos con los nombres que deseamos, esto queda a criterio de cada uno, y hacemos clic “Finish” (Si hacemos click en “Next” nos dejara seleccionar el servidor en el cual deployar, pero como nosotros solo elegimos uno, hacer esto es indiferente).&lt;br /&gt;
#Ahora solo nos queda hacer click en “Activate Changes” para terminar.&lt;br /&gt;
&lt;br /&gt;
Ahora nos queda el último paso, que es crear nuestra Cola, para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Repetir los primeros 4 pasos de la etapa anterior, solo que en lugar de seleccionar “Connection Factory” en el cuarto paso, elegiremos “Queue”.&lt;br /&gt;
#En la primer pantalla, nuevamente rellenamos los campos con los nombres que deseemos utilizar, y en la parte de “Template” lo dejamos en “(none)”, y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla apretamos en el botón “Create a New Subdeployment”.&lt;br /&gt;
#Acá con dejar todo como está y apretar el botón “Ok” es suficiente.&lt;br /&gt;
#Devuelta en la pantalla anterior, seleccionamos nuestro JMS Server (si es que tenemos más de uno, sino es la elección obvia) y apretamos en el botón “Finish”.&lt;br /&gt;
#Nuevamente solo nos queda hacer clic en el botón “Activate Changes” para finalizar.&lt;br /&gt;
&lt;br /&gt;
Si seguimos todos los pasos no debería haber problemas para que puedas utilizar la Cola y la Connection Factory que creamos. Obviamente se puede omitir apretar el botón “Activate Changes” al final de cada operación y solo hacerlo una vez que terminamos todo, pero eso queda a criterio de cada uno.&lt;br /&gt;
&lt;br /&gt;
== Ver también==&lt;br /&gt;
* [[JMS]]&lt;br /&gt;
* [[Ejemplo De JMS]]&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2667</id>
		<title>Creando una cola en WebLogic 9.2</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2667"/>
				<updated>2009-04-21T14:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lo primero que hay que hacer es crear un servidor JMS. Para esto hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Abrir la consola de administrador (por defecto WebLogic utiliza el puerto 7001).&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
#Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Servers.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Rellenar el campo “Name” con el nombre deseado y apretar el botón “Create a New Store”.&lt;br /&gt;
#En la pantalla seleccionar como tipo “File Store”, apretar el boton “Next”.&lt;br /&gt;
#En esta pantalla rellenar el campo “Name” con el nombre deseado, “Target” dejamos seleccionado “AdminServer” y en “Directory” elegir el lugar donde se quiera que se almacenen los datos (ejemplo: “C:\FileStore”).&lt;br /&gt;
#Vamos a volver a la pantalla del JMS Server, seleccionamos el “File Store” que creamos y le apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos como “Target” el “AdminServer” y apretamos el boton “Finish”.&lt;br /&gt;
#Ahora solo nos queda hacer click en el botón “Activate Changes” para finalizar esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora para poder  crear la Cola y la Connection Factory necesitamos crear previamente un Modulo JMS. Para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
# Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#En esta pantalla, en el campo “Name” ponemos el nombre que queremos, en el campo “Descriptor File Name” nos convendría poner un nombre significativo, es decir que tenga relacion con el nombre del campo “Name”, pero si no ponemos nada se asigna uno por default. En el campo “Location in Domain” tenemos que poner donde se va a guardar el descriptor (archivo que nombramos en el campo anterior), por lo que nuevamente nos convendría un nombre relacionado (Ejemplo: “jms/nombreQueLePuseAlDescriptor”). Una vez completados (o no), hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos el Server en el cual queremos deployar, en nuestro caso siempre utilizamos el que viene por default, es decir “AdminServer” y apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla, si tildamos la opción “Would you like to add resources to this JMS system module?” accederemos directamente a la pantalla donde añadir recursos (En nuestro caso, una cola y una connection factory), por lo que la tildamos y hacemos click en “Finish”.&lt;br /&gt;
#Ahora hacemos click en “Activate Changes” y terminamos esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora finalmente llegó la hora de crear nuestra Connection Factory y nuestra Cola. Primero crearemos la Connection Factory, para ello tenemos que hacer lo siguiente:&lt;br /&gt;
#Click en “Lock and Edit”.&lt;br /&gt;
# En caso de no haber tildado la opción al final de la parte anterior, tenemos que ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module, y seleccionar el JMS module que creamos.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Seleccionamos “Connection Factory” y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla no tenemos más que hacer que completar los campos con los nombres que deseamos, esto queda a criterio de cada uno, y hacemos clic “Finish” (Si hacemos click en “Next” nos dejara seleccionar el servidor en el cual deployar, pero como nosotros solo elegimos uno, hacer esto es indiferente).&lt;br /&gt;
#Ahora solo nos queda hacer click en “Activate Changes” para terminar.&lt;br /&gt;
&lt;br /&gt;
Ahora nos queda el último paso, que es crear nuestra Cola, para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Repetir los primeros 4 pasos de la etapa anterior, solo que en lugar de seleccionar “Connection Factory” en el cuarto paso, elegiremos “Queue”.&lt;br /&gt;
#En la primer pantalla, nuevamente rellenamos los campos con los nombres que deseemos utilizar, y en la parte de “Template” lo dejamos en “(none)”, y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla apretamos en el botón “Create a New Subdeployment”.&lt;br /&gt;
#Acá con dejar todo como está y apretar el botón “Ok” es suficiente.&lt;br /&gt;
#Devuelta en la pantalla anterior, seleccionamos nuestro JMS Server (si es que tenemos más de uno, sino es la elección obvia) y apretamos en el botón “Finish”.&lt;br /&gt;
#Nuevamente solo nos queda hacer clic en el botón “Activate Changes” para finalizar.&lt;br /&gt;
&lt;br /&gt;
Si seguimos todos los pasos no debería haber problemas para que puedas utilizar la Cola y la Connection Factory que creamos. Obviamente se puede omitir apretar el botón “Activate Changes” al final de cada operación y solo hacerlo una vez que terminamos todo, pero eso queda a criterio de cada uno.&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Ejemplo_De_JMS&amp;diff=2665</id>
		<title>Ejemplo De JMS</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Ejemplo_De_JMS&amp;diff=2665"/>
				<updated>2009-04-21T14:11:34Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Haciendo tostadas==&lt;br /&gt;
&lt;br /&gt;
Vamos entonces a hacer que nuestras aplicaciones Dib y Gaz se comuniquen con una cola de mensajes. Lo que haremos a continuación será:&lt;br /&gt;
&lt;br /&gt;
* Crear una cola en WebLogic (la heladera para pegar los mensajes)&lt;br /&gt;
* Crear una aplicación que publique mensajes en la cola (Dib)&lt;br /&gt;
* Crear un EJB que consuma los mensajes de la cola (Gaz)&lt;br /&gt;
&lt;br /&gt;
=== Creando la cola en WebLogic 8.1 ===&lt;br /&gt;
&lt;br /&gt;
Lo primero entonces será de crear la cola para que nuestras aplicaciones pueda interactuar.  Para esto crearemos la cola propiamente dicho, y un factory que se conecte a la misma. Todo esto se realiza desde la consola de WebLogic.&lt;br /&gt;
Creando el Connection Factory&lt;br /&gt;
&lt;br /&gt;
# Abran la consola de WebLogic&lt;br /&gt;
# Vayan a Services -&amp;gt; JMS -&amp;gt; Connection Factories&lt;br /&gt;
# Click en el link &amp;quot;Configure a new JMS Connection Factory...&amp;quot;&lt;br /&gt;
# En el campo Name ponemos &amp;quot;Heladera Connection Factory&amp;quot;&lt;br /&gt;
# En el campo JNDI Name ponemos &amp;quot;HeladeraCF&amp;quot;.&lt;br /&gt;
# Click en el botón &amp;quot;Create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Con esto tenemos creado un Connection Factory bajo el nombre JNDI de HeladeraCF. El publicador (Dib) utilizará este Connection Factory para tener acceso a la cola y poder publicar mensajes.&lt;br /&gt;
Creando la cola&lt;br /&gt;
&lt;br /&gt;
# Vayan a Services -&amp;gt; JMS -&amp;gt; Servers&lt;br /&gt;
# Abrir el nodo con el nombre similar a &amp;quot;WSStoreForwardInternalJMSServermyserver&amp;quot;&lt;br /&gt;
# Click en el nodo &amp;quot;Destinations&amp;quot;&lt;br /&gt;
# Click en &amp;quot;Configure a new JMS Queue...&amp;quot;&lt;br /&gt;
# En el campo Name ponemos &amp;quot;Heladera Queue&amp;quot;&lt;br /&gt;
# En el campo JNDI Name ponemos &amp;quot;HeladeraQueue&amp;quot;&lt;br /&gt;
# Click en el botón &amp;quot;Create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Con esto tendremos creada la cola de mensajes bajo el nombre JNDI !HeladeraQueue. Así, Dib podrá publicar mensajes aquí, que luego serán tomados por Gaz.&lt;br /&gt;
&lt;br /&gt;
=== Dib pega mensajitos en la Heladera ===&lt;br /&gt;
... o lo que es lo mismo, vamos a crear una aplicación que se conecte a la cola y postee mensajes.&lt;br /&gt;
&lt;br /&gt;
Vamos entonces a hacer una clase muy simple que tenga un método &amp;quot;pedirTostadas&amp;quot; que se conecte a la cola y envie un mensaje de texto indicando cuantas tostadas queremos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 import javax.jms.*;&lt;br /&gt;
&lt;br /&gt;
 public class Dib {&lt;br /&gt;
     public final static String JNDI_FACTORY=&amp;quot;weblogic.jndi.WLInitialContextFactory&amp;quot;;&lt;br /&gt;
     public final static String PROVIDER_URL=&amp;quot;t3://localhost&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     public final static String JMS_FACTORY=&amp;quot;HeladeraCF&amp;quot;;&lt;br /&gt;
     public final static String QUEUE=&amp;quot;HeladeraQueue&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     public void pedirTostadas() {&lt;br /&gt;
         //Obtenemos el InitialContext&lt;br /&gt;
         Hashtable env = new Hashtable();&lt;br /&gt;
         env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);&lt;br /&gt;
         env.put(Context.PROVIDER_URL, PROVIDER_URL);&lt;br /&gt;
         InitialContext ctx = new InitialContext(env);&lt;br /&gt;
&lt;br /&gt;
          //Buscamos el factory y la conexion a la cola&lt;br /&gt;
          QueueConnectionFactory qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);&lt;br /&gt;
          QueueConnection qcon = qconFactory.createQueueConnection();&lt;br /&gt;
 &lt;br /&gt;
          //Buscamos la cola&lt;br /&gt;
          QueueSession qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);&lt;br /&gt;
          Queue queue = (Queue) ctx.lookup(QUEUE);&lt;br /&gt;
&lt;br /&gt;
          //Creamos el mensaje&lt;br /&gt;
          TextMessage msg = qsession.createTextMessage();&lt;br /&gt;
          msg.setText(&amp;quot;Gaz, quiero 4 tostadas&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
          //Enviamos el mensaje&lt;br /&gt;
          QueueSender qsender = qsession.createSender(queue);&lt;br /&gt;
          qsender.send(msg);&lt;br /&gt;
&lt;br /&gt;
          //somos prolijos y cerramos todo&lt;br /&gt;
          qsender.close();&lt;br /&gt;
          qsession.close();&lt;br /&gt;
          qcon.close();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para enviar mensajes a la cola, basta con ejecutar:&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 Dib dib = new Dib();&lt;br /&gt;
 dib.pedirTostadas();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con esto, Dib enviará un mensaje a la cola (HeladeraQueue). Ahora, no hay nadie consumiendo de dicha cola, por lo cual los mensajes se iran acumulando. Así que vayamos a despertar a Gaz para que pueda ayudar a su hermano...&lt;br /&gt;
Gaz hace las tostadas&lt;br /&gt;
&lt;br /&gt;
Nos queda entonces consumir los mensajes de una cola. La manera más facil de consumir mensajes es a través de un EJB MDB (Message-Driven Bean). Los EJB MDB son un tipo especial de EJB que cumplen con un único método: onMessage(Message msg)&lt;br /&gt;
&lt;br /&gt;
El método onMessage se invoca cada vez que hay algún mensaje para atender. En la configuración del EJB (los queridos descriptores) se le indica a qué cola está asociado el EJB.&lt;br /&gt;
&lt;br /&gt;
Crearemos entonces a Gaz como un EJB MDB. Para esto podremos usar algún módulo EJB de Bacabs.&lt;br /&gt;
&lt;br /&gt;
=== Creando nuestro Bean MDB ===&lt;br /&gt;
&lt;br /&gt;
Un EJB MDB está compuesto por una única clase que implementa las interfaces MessageDrivenBean y MessageListener. Creemos entonces nuestro EJB:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public class GazMDBBean implements MessageDrivenBean, MessageListener {&lt;br /&gt;
&lt;br /&gt;
     public void setMessageDrivenContext(MessageDrivenContext aContext) {&lt;br /&gt;
         context = aContext;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     public void ejbCreate() { }&lt;br /&gt;
     public void ejbRemove() { }&lt;br /&gt;
&lt;br /&gt;
     public void onMessage(Message aMessage) {&lt;br /&gt;
          TextMessage txtMessage = (TextMessage) aMessage;&lt;br /&gt;
          String mensajeDeDib = txtMessage.getText();&lt;br /&gt;
          System.out.println(mensajeDeDib);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y esto es todo lo que programaremos para atender el mensaje. Simple, no? Bueno, en realidad falta la magia de los XML.&lt;br /&gt;
&lt;br /&gt;
=== Creando el ejb-jar.xml ===&lt;br /&gt;
&lt;br /&gt;
Como todo EJB2, necesita de su descriptor correspondiente. El mismo es bastante simple:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE ejb-jar PUBLIC &amp;quot;-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN&amp;quot; &amp;quot;http://java.sun.com/dtd/ejb-jar_2_0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ejb-jar&amp;gt;&lt;br /&gt;
     &amp;lt;display-name&amp;gt;Gaz MDB&amp;lt;/display-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;enterprise-beans&amp;gt;&lt;br /&gt;
         &amp;lt;message-driven&amp;gt;&lt;br /&gt;
             &amp;lt;ejb-name&amp;gt;GazMDBBean&amp;lt;/ejb-name&amp;gt;&lt;br /&gt;
             &amp;lt;ejb-class&amp;gt;com.zim.mdb.GazMDBBean&amp;lt;/ejb-class&amp;gt;&lt;br /&gt;
             &amp;lt;transaction-type&amp;gt;Container&amp;lt;/transaction-type&amp;gt;&lt;br /&gt;
             &amp;lt;message-driven-destination&amp;gt;&lt;br /&gt;
                 &amp;lt;destination-type&amp;gt;javax.jms.Queue&amp;lt;/destination-type&amp;gt;&lt;br /&gt;
             &amp;lt;/message-driven-destination&amp;gt;&lt;br /&gt;
         &amp;lt;/message-driven&amp;gt;&lt;br /&gt;
     &amp;lt;/enterprise-beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;assembly-descriptor&amp;gt;&lt;br /&gt;
         &amp;lt;container-transaction&amp;gt;&lt;br /&gt;
             &amp;lt;method&amp;gt;&lt;br /&gt;
                 &amp;lt;ejb-name&amp;gt;GazMDBBean&amp;lt;/ejb-name&amp;gt;&lt;br /&gt;
                 &amp;lt;method-name&amp;gt;*&amp;lt;/method-name&amp;gt;&lt;br /&gt;
             &amp;lt;/method&amp;gt;&lt;br /&gt;
             &amp;lt;trans-attribute&amp;gt;Required&amp;lt;/trans-attribute&amp;gt;&lt;br /&gt;
         &amp;lt;/container-transaction&amp;gt;&lt;br /&gt;
     &amp;lt;/assembly-descriptor&amp;gt;&lt;br /&gt;
 &amp;lt;/ejb-jar&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creando el weblogic-ejb-jar.xml===&lt;br /&gt;
&lt;br /&gt;
Y como todo EJB que hacemos para WebLogic, este es el descriptor hermanito del anterior. Contiene configuración propia para WebLogic, y los datos de la cola de la cual consumirá mensajes nuestro EJB MDB. El archivo es muy simple:&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;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE weblogic-ejb-jar PUBLIC &amp;quot;-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN&amp;quot; &amp;quot;http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;weblogic-ejb-jar&amp;gt;&lt;br /&gt;
     &amp;lt;weblogic-enterprise-bean&amp;gt;&lt;br /&gt;
         &amp;lt;ejb-name&amp;gt;GazMDBBean&amp;lt;/ejb-name&amp;gt;&lt;br /&gt;
             &amp;lt;message-driven-descriptor&amp;gt;&lt;br /&gt;
                 &amp;lt;pool&amp;gt;&lt;br /&gt;
                     &amp;lt;max-beans-in-free-pool&amp;gt;200&amp;lt;/max-beans-in-free-pool&amp;gt;&lt;br /&gt;
                     &amp;lt;initial-beans-in-free-pool&amp;gt;20&amp;lt;/initial-beans-in-free-pool&amp;gt;&lt;br /&gt;
                 &amp;lt;/pool&amp;gt;&lt;br /&gt;
                 &amp;lt;destination-jndi-name&amp;gt;HeladeraQueue&amp;lt;/destination-jndi-name&amp;gt;&lt;br /&gt;
             &amp;lt;/message-driven-descriptor&amp;gt;&lt;br /&gt;
             &amp;lt;enable-call-by-reference&amp;gt;True&amp;lt;/enable-call-by-reference&amp;gt;&lt;br /&gt;
     &amp;lt;/weblogic-enterprise-bean&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/weblogic-ejb-jar&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el tag destination-jndi-name indicamos la cola de la cual consumirá mensajes nuestro EJB.&lt;br /&gt;
&lt;br /&gt;
===Probando (finalmente)===&lt;br /&gt;
&lt;br /&gt;
Empaquetamos y hacemos un deploy de nuestro EJB en WebLogic, y el mismo comenzará a consumir los mensajes de la cola automágicamente.&lt;br /&gt;
&lt;br /&gt;
No solo consumirá los mensajes nuevos, sino también todos aquellos que hayan quedado encolados sin procesar.&lt;br /&gt;
&lt;br /&gt;
Prueben generar muchos mensajes con Dib, y vean como se van procesando. O hagan un stop de Gaz, y vean como al volver a levantarlo procesa todos los mensajes que fueron encolado.&lt;br /&gt;
&lt;br /&gt;
==Consumiendo mensajes con JMS==&lt;br /&gt;
&lt;br /&gt;
El API de JMS nos da tambien las herramientas para consumir los mensajes de dicha cola. A continuación un ejemplo sencillo de como hacerlo.&lt;br /&gt;
&lt;br /&gt;
===Ahora cocinamos las tostadas===&lt;br /&gt;
&lt;br /&gt;
Vamos a seguir con el ejemplo dado anteriormente&lt;br /&gt;
&lt;br /&gt;
Se quiere cocinar las tostadas que pidio Dib, sin utilizar a Gaz (EJB) dado a que no las prepara del todo bien (amarretea con la mermelada). El competidor para cocinar es Tak (tuve que buscar personajes de la serie). Con un código similar al que Dib utilizaba para pedir las tostadas, aca esta el ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 import javax.jms.*;&lt;br /&gt;
&lt;br /&gt;
 public class Tak {&lt;br /&gt;
&lt;br /&gt;
     public final static String JNDI_FACTORY = &amp;quot;weblogic.jndi.WLInitialContextFactory&amp;quot;;&lt;br /&gt;
     public final static String PROVIDER_URL = &amp;quot;t3://localhost:7001&amp;quot;;&lt;br /&gt;
     public final static String JMS_FACTORY = &amp;quot;HeladeraCF&amp;quot;;&lt;br /&gt;
     public final static String QUEUE = &amp;quot;HeladeraQueue&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     public TextMessage cocinarTostadas() throws NamingException, JMSException {&lt;br /&gt;
         // Obtenemos el InitialContext&lt;br /&gt;
         Hashtable env = new Hashtable();&lt;br /&gt;
         env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);&lt;br /&gt;
         env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);&lt;br /&gt;
         env.put(Context.PROVIDER_URL, PROVIDER_URL);&lt;br /&gt;
         InitialContext ctx = new InitialContext(env);&lt;br /&gt;
&lt;br /&gt;
         // Buscamos el factory y la conexion a la cola&lt;br /&gt;
         QueueConnectionFactory qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);&lt;br /&gt;
         QueueConnection qcon = qconFactory.createQueueConnection();&lt;br /&gt;
&lt;br /&gt;
         // Buscamos la cola&lt;br /&gt;
         QueueSession qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);&lt;br /&gt;
         Queue queue = (Queue) ctx.lookup(AUTO_ACKNOWLEDGE);&lt;br /&gt;
         Queue queue = (Queue) ctx.lookup(QUEUE);&lt;br /&gt;
&lt;br /&gt;
         QueueReceiver qreceiver = qsession.createReceiver(queue);&lt;br /&gt;
&lt;br /&gt;
         //&amp;quot;Inicio&amp;quot; la QueueConnection&lt;br /&gt;
         qcon.start();&lt;br /&gt;
         TextMessage msg = (TextMessage) qreceiver.receive();&lt;br /&gt;
&lt;br /&gt;
         qreceiver.close();&lt;br /&gt;
         qsession.close();&lt;br /&gt;
         qcon.close();&lt;br /&gt;
         return msg;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La unica diferencia con Dib es que se crea un Receiver, que va a ir a buscar los mensajes a la cola. Y ademas hay que darle un start a la QueueConnection.&lt;br /&gt;
&lt;br /&gt;
===Testear la coccion de tostadas===&lt;br /&gt;
&lt;br /&gt;
Para testear la coccion de tostadas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code java&amp;gt;&lt;br /&gt;
 public void testCocinarTostada() throws NamingException, JMSException{&lt;br /&gt;
&lt;br /&gt;
     Tak tak = new Tak();&lt;br /&gt;
     TextMessage txtMessage = tak.cocinarTostadas();&lt;br /&gt;
&lt;br /&gt;
     String mensajeDeDib;&lt;br /&gt;
&lt;br /&gt;
     try {&lt;br /&gt;
         mensajeDeDib = txtMessage.getText();&lt;br /&gt;
         System.out.println(mensajeDeDib);&lt;br /&gt;
         txtMessage.acknowledge();&lt;br /&gt;
     } catch (JMSException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Claro que antes de correr el test, la cola debe tener algun mensaje, sino se va a quedar esperando en el receive() hasta que la cola tenga alguno. Esto se puede evitar usando:&lt;br /&gt;
&lt;br /&gt;
*receive(long i) : Espera por un mensaje i milisegundos.&lt;br /&gt;
*receiveNotWait() : Si no hay mensajes, no se queda esperando.&lt;br /&gt;
&lt;br /&gt;
Y un agregado mas: En el caso de que hayan probado hacer el EJB para consumir la cola, tengan el detalle de bajarlo del server, porque si no cuando subamos un mensaje a la cola, probablemente se lo lleve el EJB antes que Tak.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ver también==&lt;br /&gt;
* [[JMS]]&lt;br /&gt;
* [[MDB en Weblogic]]&lt;br /&gt;
* [[JMS Con GlassFish]]&lt;br /&gt;
* [[Creando una cola en WebLogic 9.2]]&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2664</id>
		<title>Creando una cola en WebLogic 9.2</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Creando_una_cola_en_WebLogic_9.2&amp;diff=2664"/>
				<updated>2009-04-21T14:09:03Z</updated>
		
		<summary type="html">&lt;p&gt;Darkscythe: Página creada con 'Lo primero que hay que hacer es crear un servidor JMS. Para esto hay que hacer lo siguiente:  #Abrir la consola de administrador (por defecto WebLogic utiliza el puerto 7001). #...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lo primero que hay que hacer es crear un servidor JMS. Para esto hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Abrir la consola de administrador (por defecto WebLogic utiliza el puerto 7001).&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
#Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Servers.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Rellenar el campo “Name” con el nombre deseado y apretar el botón “Create a New Store”.&lt;br /&gt;
#En la pantalla seleccionar como tipo “File Store”, apretar el boton “Next”.&lt;br /&gt;
#En esta pantalla rellenar el campo “Name” con el nombre deseado, “Target” dejamos seleccionado “AdminServer” y en “Directory” elegir el lugar donde se quiera que se almacenen los datos (ejemplo: “C:\FileStore”).&lt;br /&gt;
#Vamos a volver a la pantalla del JMS Server, seleccionamos el “File Store” que creamos y le apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos como “Target” el “AdminServer” y apretamos el boton “Finish”.&lt;br /&gt;
#Ahora solo nos queda hacer click en el botón “Activate Changes” para finalizar esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora para poder  crear la Cola y la Connection Factory necesitmos crear previamente un Modulo JMS. Para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Clickear en el boton “Lock and Edit”.&lt;br /&gt;
# Ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#En esta pantalla, en el campo “Name” ponemos el nombre que queremos, en el campo “Descriptor File Name” nos convendría poner un nombre significativo, es decir que tenga relacion con el nombre del campo “Name”, pero si no ponemos nada se asigna uno por default. En el campo “Location in Domain” tenemos que poner donde se va a guardar el descriptor (archivo que nombramos en el campo anterior), por lo que nuevamente nos convendría un nombre relacionado (Ejemplo: “jms/nombreQueLePuseAlDescriptor”). Una vez completados (o no), hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla seleccionamos el Server en el cual queremos deployar, en nuestro caso siempre utilizamos el que viene por default, es decir “AdminServer” y apretamos el botón “Next”.&lt;br /&gt;
#En esta pantalla, si tildamos la opción “Would you like to add resources to this JMS system module?” accederemos directamente a la pantalla donde añadir recursos (En nuestro caso, una cola y una connection factory), por lo que la tildamos y hacemos click en “Finish”.&lt;br /&gt;
#Ahora hacemos click en “Activate Changes” y terminamos esta parte.&lt;br /&gt;
&lt;br /&gt;
Ahora finalmente llegó la hora de crear nuestra Connection Factory y nuestra Cola. Primero crearemos la Connection Factory, para ello tenemos que hacer lo siguiente:&lt;br /&gt;
#Click en “Lock and Edit”.&lt;br /&gt;
# En caso de no haber tildado la opción al final de la parte anterior, tenemos que ir a Services -&amp;gt; Messaging -&amp;gt; JMS Module, y seleccionar el JMS module que creamos.&lt;br /&gt;
#Click en el botón “New”.&lt;br /&gt;
#Seleccionamos “Connection Factory” y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla no tenemos más que hacer que completar los campos con los nombres que desemos, esto queda a criterio de cada uno, y hacemos clic “Finish” (Si hacemos click en “Next” nos dejara seleccionar el servidor en el cual deployar, pero como nosotros solo elegimos uno, hacer esto es indiferente).&lt;br /&gt;
#Ahora solo nos queda hacer click en “Activate Changes” para terminar.&lt;br /&gt;
&lt;br /&gt;
Ahora nos queda el último paso, que es crear nuestra Cola, para ello hay que hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
#Repetir los primeros 4 pasos de la etapa anterior, solo que en lugar de seleccionar “Connection Factory” en el cuarto paso, elegiremos “Queue”.&lt;br /&gt;
#En la primer pantalla, nuevamente rellenamos los campos con los nombres que deseemos utilizar, y en la parte de “Template” lo dejamos en “(none)”, y hacemos click en “Next”.&lt;br /&gt;
#En esta pantalla apretamos en el botón “Create a New Subdeployment”.&lt;br /&gt;
#Acá con dejar todo como está y apretar el botón “Ok” es suficiente.&lt;br /&gt;
#Devuelta en la pantalla anterior, seleccionamos nuestro JMS Server (si es que tenemos más de uno, sino es la elección obvia) y apretamos en el botón “Finish”.&lt;br /&gt;
#Nuevamente solo nos queda hacer clic en el botón “Activate Changes” para finalizar.&lt;br /&gt;
&lt;br /&gt;
Si seguimos todos los pasos no debería haber problemas para que puedas utilizar la Cola y la Connection Factory que creamos. Obviamente se puede omitir apretar el botón “Activate Changes” al final de cada operación y solo hacerlo una vez que terminamos todo, pero eso queda a criterio de cada uno.&lt;/div&gt;</summary>
		<author><name>Darkscythe</name></author>	</entry>

	</feed>