<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fabio Brandão - Blog &#187; spring</title>
	<atom:link href="http://www.fnbrandao.com.br/blog/tag/spring/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fnbrandao.com.br/blog</link>
	<description></description>
	<lastBuildDate>Fri, 06 Jan 2012 15:22:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Freemarker + Sitemesh + Spring</title>
		<link>http://www.fnbrandao.com.br/blog/2009/07/freemarker-sitemesh-spring/</link>
		<comments>http://www.fnbrandao.com.br/blog/2009/07/freemarker-sitemesh-spring/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 22:00:52 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Java EE]]></category>
		<category><![CDATA[freemarker]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sitemesh]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=34</guid>
		<description><![CDATA[Depois de muito tempo consegui fazer minha aplicação utilizando Freemarker (template engine) + Sitemesh (web page layout framework) + Spring (IOC, etc) funcionar.
Basicamente, basta configurar no web.xml o filtro do Sitemesh (com.opensymphony.sitemesh.webapp.SiteMeshFilter), a servlet do Freemarker que vem com o Sitemesh (com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet) e a servlet do Spring MVC (org.springframework.web.servlet.DispatcherServlet).
O filtro do Sitemesh é aplicado a [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de muito tempo consegui fazer minha aplicação utilizando Freemarker (template engine) + Sitemesh (web page layout framework) + Spring (IOC, etc) funcionar.</p>
<p>Basicamente, basta configurar no web.xml o filtro do Sitemesh (com.opensymphony.sitemesh.webapp.SiteMeshFilter), a servlet do Freemarker que vem com o Sitemesh (com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet) e a servlet do Spring MVC (org.springframework.web.servlet.DispatcherServlet).</p>
<p>O filtro do Sitemesh é aplicado a todas as requisições, a servlet do freemarker às urls *.ftl e a servlet do Spring às urls *.html.</p>
<p>O problema que eu tive foi que os templates do Freemarker e do Sitemesh não eram encontrados. No web.xml, um dos parâmetros iniciais da servlet do Freemarker é o diretório dos templates (TemplatePath). Configurei este parâmetro para &#8220;/WEB-INF/templates/&#8221;. E no arquivo decorators.xml configurei que os templates do Sitemesh ficavam no diretório &#8220;/decorators&#8221;. O que acontecia é que o diretório dos templates do Sitemesh deveriam ficar dentro do diretório dos templates do Freemarker. Logo a estrutura de diretórios é dessa maneira: /WEB-INF/templates/decorators.</p>
<p>Segue abaixo o link com a aplicação de exemplo desta integração:<br />
<a href="http://www.fnbrandao.com.br/blog/files/freemarker.tar.gz">http://www.fnbrandao.com.br/blog/files/freemarker.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2009/07/freemarker-sitemesh-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring gerenciando as transações</title>
		<link>http://www.fnbrandao.com.br/blog/2008/06/spring-gerenciando-as-transacoes/</link>
		<comments>http://www.fnbrandao.com.br/blog/2008/06/spring-gerenciando-as-transacoes/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 12:47:02 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=13</guid>
		<description><![CDATA[Após duas longas semanas resolvi o problema que estava tendo com o Spring gerenciando as transações de banco de dados. O que acontecia é que nenhuma transação era aberta na classe marcada com a anotação “@Transactional”. Segue abaixo um exemplo de como utilizar o gerenciamento de transações do Spring:

package br.com.test;

public interface IService {

   [...]]]></description>
			<content:encoded><![CDATA[<p>Após duas longas semanas resolvi o problema que estava tendo com o Spring gerenciando as transações de banco de dados. O que acontecia é que nenhuma transação era aberta na classe marcada com a anotação <i>“@Transactional”</i>. Segue abaixo um exemplo de como utilizar o gerenciamento de transações do Spring:</p>
<p><code>
<pre>package br.com.test;

public interface IService {

    int myServiceMethod(String myServiceParameter);

}</pre>
<p></code></p>
<p>Segue abaixo a implementação, repare no uso da anotação <i>“@Transactional”</i> na classe (isto indica que a classe toda deve estar associada à um contexto transacional. É possível também marcar métodos:</p>
<p><code>
<pre>package br.com.test;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class ServiceBean implements IService {

    public int myServiceMethod(String myServiceParameter) {
        return Integer.parseInt(myServiceParameter);
    }

}</pre>
<p></code></p>
<p>Agora só falta configurar o <i>“applicationContext.xml”</i> do Spring:</p>
<p><code>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xsi:schemaLocation="
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"&gt;

  &lt;bean id="myService" class="br.com.test.ServiceBean"/&gt;

  &lt;tx:annotation-driven transaction-manager="txManager"/&gt;

  &lt;bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;
    &lt;property name="dataSource" ref="dataSource"/&gt;
  &lt;/bean&gt;

  &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;
    &lt;property name="driverClassName" value="${jdbc.driverClassName}" /&gt;
    &lt;property name="url" value="${jdbc.url}" /&gt;
    &lt;property name="username" value="${jdbc.username}" /&gt;
    &lt;property name="password" value="${jdbc.password}" /&gt;
  &lt;/bean&gt;
&lt;/beans&gt;</pre>
<p></code></p>
<p>Repare no uso da tag <i>“&lt;tx:annotation-driven transaction-manager=&#8221;txManager&#8221;/&gt;”</i>. Esta tag ativa a configuração de transações baseada em anotações.</p>
<p>Até aí é muito simples utilizar o gerenciamento de transações do Spring. O problema que tive foi o seguinte: meu serviço possuía uma interface, e esta interface estava sendo implementada por uma classe abstrata. Essa classe abstrata definia o método que eu queria que fosse transacional. Depois eu criei uma terceira classe que extendia essa classe abstrata. Coloquei a anotação <i>“@Transactional”</i> na classe concreta, e o Spring não gerenciava as transações no método definido na classe abstrata. Para resolver o problema só foi necessário colocar a anotação da classe abstrata.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2008/06/spring-gerenciando-as-transacoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF + Spring + JPA + Hibernate</title>
		<link>http://www.fnbrandao.com.br/blog/2008/05/jsf-spring-jpa-hibernate/</link>
		<comments>http://www.fnbrandao.com.br/blog/2008/05/jsf-spring-jpa-hibernate/#comments</comments>
		<pubDate>Thu, 22 May 2008 01:20:41 +0000</pubDate>
		<dc:creator>fabio</dc:creator>
				<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[session closed]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.fnbrandao.com.br/blog/?p=10</guid>
		<description><![CDATA[Ao tentar fazer o deploy de uma aplicação utilizando JSF, Spring e JPA (com implementação do hibernate) é recebida a seguinte exception:
javax.persistence.PersistenceException: org.hibernate.SessionException: Session is closed!
Para resolver este problema, basta apenas adicionar o seguinte filtro no &#8220;web.xml&#8221;:

&#60;filter&#62;
	&#60;filter-name&#62;Spring OpenEntityManagerInViewFilter&#60;/filter-name&#62;
	&#60;filter-class&#62;org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter&#60;/filter-class&#62;
&#60;/filter&#62;

&#60;filter-mapping&#62;
	&#60;filter-name&#62;Spring OpenEntityManagerInViewFilter&#60;/filter-name&#62;
	&#60;url-pattern&#62;/*&#60;/url-pattern&#62;
&#60;/filter-mapping&#62;


]]></description>
			<content:encoded><![CDATA[<p>Ao tentar fazer o deploy de uma aplicação utilizando JSF, Spring e JPA (com implementação do hibernate) é recebida a seguinte exception:</p>
<p><code>javax.persistence.PersistenceException: org.hibernate.SessionException: Session is closed!</code></p>
<p>Para resolver este problema, basta apenas adicionar o seguinte filtro no <em>&#8220;web.xml&#8221;</em>:<br />
<code>
<pre>&lt;filter&gt;
	&lt;filter-name&gt;Spring OpenEntityManagerInViewFilter&lt;/filter-name&gt;
	&lt;filter-class&gt;org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter&lt;/filter-class&gt;
&lt;/filter&gt;

&lt;filter-mapping&gt;
	&lt;filter-name&gt;Spring OpenEntityManagerInViewFilter&lt;/filter-name&gt;
	&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fnbrandao.com.br/blog/2008/05/jsf-spring-jpa-hibernate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

