Espero que realmente alguém possa me ajudar nesse problema porque não sei mais o que fazer. Acredito que seja um problema de configuração, pois bem estou desenvolvendo um projeto que integra Flex+BlazeDS+Spring+Hibernate. Até o presente momento vinha não tendo problema algum com a integração dessas tecnologias porque não estava utilizando o Spring mas de uns tempos pra cá comecei a vêr a necessidade de sua utilização e sendo assim vim por meio desse post pedir a ajuda de vocês. Porque o que ocorre é que quando tento logar na minha aplicação já com o spring integrado o objeto FlexSession sempre retorna um valor nulo e eu não estou conseguindo entender o motivo disso então sendo assim vou colocar os arquivos de configuração e o método de login para saber se alguém pode me ajudar com esse problema.
Service-Config
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<default-channels>
<channel ref="my-amf" />
</default-channels>
</services>
<security>
<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
</security>
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
<logging>
<target class="flex.messaging.log.ConsoleTarget" level="Error">
<properties>
<prefix>[BlazeDS] </prefix>
<includeDate>true</includeDate>
<includeTime>true</includeTime>
<includeLevel>true</includeLevel>
<includeCategory>true</includeCategory>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
</logging>
<system>
<redeploy>
<enabled>true</enabled>
<watch-interval>20</watch-interval>
<watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
<touch-file>{context.root}/WEB-INF/web.xml</touch-file>
</redeploy>
</system>
</services-config>
Web.xml
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
ApplicationContext
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flex="http://www.springframework.org/schema/flex"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
<!-- Cria o MessageBroker com as configurações padrão -->
<flex:message-broker />
<!-- Habilita a injeção de dependência através de anotações -->
<context:annotation-config />
<!-- Faz com que os Services sejam beans gerenciados pelo container do Spring -->
<context:component-scan base-package="br.com.simuladoOnline.servico" />
</beans>
Método de Login
Lembrando que esse método fica em uma classe chamada de Util e instanciada em um servico chamado de ServicoUltil e que o mesmo implementa a Interface IServicoUtil e que dentro dessa classe Util temos um parâmetro que está declarado da seguinte forma.
private static FlexSession sessionFlex=FlexContext.getFlexSession();
public String loginAdministrador(Usuario usuario) {
Administrador administrador = new Administrador();
administrador = (Administrador) usuario;
if (administrador != null) {
try{
>>> Erro nessa linha sessionFlex.setAttribute("sessionUsuarioCpf", administrador.getCpfMatricula());
sessionFlex.setAttribute("sessionUsuarioNome", administrador.getNome());
sessionFlex.setAttribute("sessionUsuarioPrivilegio", administrador.getPrivilegio());
}catch (Exception e) {
System.out.println("Classe Login");
e.printStackTrace();
}
return "";
} else {
return USUARIO_SENHA_INVALIDO;
}
}
erro apresentado no console
AVISO: The following exception occurred during request processing by the BlazeDS MessageBroker and will be serialized back to the client:
flex.messaging.MessageException: java.lang.NullPointerException : null
Caused by: java.lang.NullPointerException
at br.com.simuladoOnline.util.Login.getSessionUser(Login.java:221)
Galera sei que o erro é um nullpointer e que o problema é que esse objeto SessionFlex está null e estou tentando usar, mas não estou entendo o porque disso e como resolver acho que o problema como já disse é em algum arquivo de configuração ou no aplicationContext, no webxml ou no service-config. Agradeço a ajuda fontes o que vier já não sei onde procurar.