Inicio - SETI
- Governança-TIC
- 01. Estrutura do DTIC e Comitês
- 02. Estratégia de TIC
-
02. Plano Capacitação TIC
-
02. Plano Continuidade SE TIC
-
02. Plano Contratações TIC
- 02. Plano Diretor TIC
-
02. Plano Riscos TIC
-
02. Plano Transformação Digital
- 03. iGovTIC-JUD
- 03. Indicadores TIC
- 03. Pesquisa Satisfação TIC
-
04. Processos de TIC
- 05. Segurança de TIC
- 06. Portfólio de TIC
- Atendimento a Usuários
-
BI e Relatórios TIC
- Modelos e sobre TI
- Normativos TIC
-
Rede sem fio (Wi-Fi)
- Videoconferência
EJB 3.x #
Para injetar beans do Spring em um Web-Service no Glassfish, seja ele JAX-WS ou JAX-RS, pode-se utilizar EJB's configurados com interceptors.
Para configurar um interceptor num EJB, é necessário anotar a classe com
@Stateless @Interceptors(SpringBeanAutowiringInterceptor.class) public class WebService { }
Note que os interceptors funcionam somente com EJB's, então é necessário anotar a classe com @Stateless (@Stateful geralmente não é utilizado em Web-Services).
Além disso, um arquivo XML deve ser criado para que o interceptor possa carregar o Spring Application Context.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- This context is loaded by type and not by name --> <bean class="org.springframework.context.support.ClassPathXmlApplicationContext"> <constructor-arg value="classpath*:application-context.xml" /> </bean> </beans>
Agora falta habilitar a injeção de dependência via annotation, para isso adicione o namespace e a configuração abaixo no application-context.xml.
<beans xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config />
Isso deve ser suficiente para que seja possível injetar beans do Spring no Web-Service utilizando a annotation @Autowire.
@Stateless @Interceptors(SpringBeanAutowiringInterceptor.class) public class WebService { @Autowire @Qualifier("springBean") private SpringBean bean; }
Lembre-se que por padrão, o @Autowire faz um bind por tipo. Caso queira fazê-lo por nome, você deve especificar a annotation @Qualifier para qualificar o bean a ser injetado.