Session Scope com Spring 2.0 e Webwork 2.2.2

1 resposta
R

Boa tarde a todos…

Estou migrando uma aplicação que estou desenvolvendo do WW 2.1.7 para o WW 2.2.2. Eu tinha o seguinte components.xml

<components>
	<component>
		<scope>session</scope>
		<class>br.com.masternet.components.UserSession</class>
		<enabler>br.com.masternet.components.UserSessionAware</enabler>
	</component>
</components>

Agora estou utilizando o Spring como container IOC, então o meu applicationContext.xml ficou da seguinte forma:

<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"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

	<bean id="userSession" class="br.com.masternet.session.UserSession" singleton="true">
		<aop:scope type="session"/>
	</bean>
</beans>

Obs: No exemplo do wiki do WW, está como singleton=“true”, mas eu já tentei com false e não tive sucesso.

O problema que estou enfrentando são dois:

  1. Duas jsps que utilizam a tag ww:action em seu código pararam de funcionar e o log diz que não existe resultado para a action, mas antes de adicionar o suporte ao Session Scope do Spring elas funcionavam.
  2. Eu possuo alguns beans para utilização do Spring com o Hibernate e o bean parou de funcionar, então fica dando NullPointerException.

Alguém já teve este tipo de problema? O que posso fazer para solucioná-lo?

Desde já agradeço a ajuda de todos…

1 Resposta

R

Mais uma observação: pelo que eu percebi aqui, ele não está injetando as implementações dos DAOs.
Meu applicationContext.xml completo é:

<?xml version="1.0" encoding="UTF-8"?>

<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"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

	<!-- Mapeamento das actions a serem utilizadas pelo Webwork. -->
	<bean id="help" class="br.com.masternet.actions.HelpAction" singleton="false"/>
	<bean id="join" class="br.com.masternet.actions.JoinAction" singleton="false"/>
	<bean id="login" class="br.com.masternet.actions.LoginAction" singleton="false"/>
	<bean id="message" class="br.com.masternet.actions.MessageAction" singleton="false"/>
	<bean id="password" class="br.com.masternet.actions.PasswordAction" singleton="false"/>
	<bean id="information" class="br.com.masternet.actions.InformationAction" singleton="false"/>

	<bean id="joinuser" class="br.com.masternet.actions.JoinUserAction" singleton="false"/>
	<bean id="usermessage" class="br.com.masternet.actions.UserMessageAction" singleton="false"/>
	<bean id="userpassword" class="br.com.masternet.actions.UserPasswordAction" singleton="false"/>

	<bean id="loginuser" class="br.com.masternet.actions.LoginUserAction" singleton="false"/>
	<bean id="application" class="br.com.masternet.actions.ApplicationAction" singleton="false"/>

	<!-- Configura bean de sessão dos usuários. -->
	<bean id="userSession" class="br.com.masternet.session.UserSession" singleton="true">
		<aop:scope type="session"/>
	</bean>

	<!-- Configuração e mapeamento das classes para o hibernate. -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
		<property name="mappingResources">
			<value>
				br/com/masternet/models/User.hbm.xml,
				br/com/masternet/models/Sector.hbm.xml,
				br/com/masternet/models/Permission.hbm.xml
			</value>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="show_sql">true</prop>
				<prop key="hibernate.use_sql_comments">true</prop>
				<prop key="hibernate.generate_statistics">true</prop>
			</props>
		</property>
	</bean>

	<!-- Configuração do DataSource a ser utilizado na aplicação. -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="url">
			<value>jdbc:postgresql://localhost/MasterNet?charSet=UNICODE</value>
		</property>
		<property name="username">
			<value>postgres</value>
		</property>
		<property name="password">
			<value>pg2005</value>
		</property>
		<property name="driverClassName">
			<value>org.postgresql.Driver</value>
		</property>
		<property name="initialSize">
			<value>5</value>
		</property>
		<property name="maxActive">
			<value>20</value>
		</property>
		<property name="maxIdle">
			<value>5</value>
		</property>
		<property name="poolPreparedStatements">
			<value>true</value>
		</property>
	</bean>

	<bean id="dao" class="br.com.masternet.database.DAOImplementation">
		<property name="sessionFactory">
			<ref local="sessionFactory"/>
		</property>
	</bean>

	<bean id="userDAO" class="br.com.masternet.database.UserDAOImplementation">
		<property name="sessionFactory">
			<ref local="sessionFactory"/>
		</property>
	</bean>

</beans>
Criado 28 de março de 2006
Ultima resposta 28 de mar. de 2006
Respostas 1
Participantes 1