Rest - Como Fazer Classe de recursos (Facade) solicitar algo para o Spring?

Olá pessoal,

Tô com uma dúvida e não sei como proceder, é o seguinte:

  • Possuo uma aplicação MVC que utiliza o Spring
  • Nesse mesmo sistema desenvolvi um módulo REST, e já estou conseguindo utilizar, tanto o REST, quanto a aplicação Spring
  • O que eu quero é que minha classe de recursos do REST envie uma solicitação ao Spring e obtenha determinada resposta

Não sei como saber, será que alguém poderia me ajudar?

Ah! não sei se ajuda, mas tem um detalhe:

  • Quando eu acesso uma determinada URL, utilizo o DispatcherServlet do Spring
  • Quando acesso outro tipo de determinada URL, utilizo o SpringServlet do Jersey, Jersey que é a implementação que estou utilizando responsável pelo serviço REST

Como o seu módulo REST é integrado ao Spring, você pode fazer uma injeção no serviço, usando tanto o mecanismo de injeção do Jersey quanto do próprio Spring (@Autowired). Mas, me desculpe o comentário, mas um recurso REST acessando um Controller cheira mal. Qual é sua necessidade?

[]'s

Bem, eu tenho uma aplicação com Spring, que já está funcionando há algum tempo, e agora surgiu a necessidade de eu disponibilizar um serviço REST de dados que essa mesma aplicação manipula, então pensei que poderia utilizar parte disso. A idéia é que para cada solicitação no serviço, por exemplo @GET, eu gostaria de realizar a mesma consulta de dados que a aplicação já existente realiza, mas através do meu facade.

O XML dos DAO,BO e MVC já estã configurados, preciso apenas configurar no meu facade como utilizar esses elementos que já manipulam minha base de dados.

[quote=jmountain]Bem, eu tenho uma aplicação com Spring, que já está funcionando há algum tempo, e agora surgiu a necessidade de eu disponibilizar um serviço REST de dados que essa mesma aplicação manipula, então pensei que poderia utilizar parte disso. A idéia é que para cada solicitação no serviço, por exemplo @GET, eu gostaria de realizar a mesma consulta de dados que a aplicação já existente realiza, mas através do meu facade.

O XML dos DAO,BO e MVC já estã configurados, preciso apenas configurar no meu facade como utilizar esses elementos que já manipulam minha base de dados.

[/quote]

Entendí… é um façade que você vai acessar, não um controller.

Bom, a injeção default do Spring ou do Jersey deve funcionar. Se precisar de exemplos, poste um serviço e um façade.

[]'s


package com.kohl.resources;

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;



@Stateless
@Path("products")
public class ProductsFacadeRest {  
    
    
    @GET
    @Produces("text/html")
    public String findAll(){
     
        return "HelloWorld";
        
    }
   
}

Estou conseguindo acessar isso normalmente, porém eu queria uma forma de que esse serviço retornasse o mesmo quando eu acesso localhost:8080/khol/ws/feed.ws?query=hotspot

Segue a definição:


<bean id="usHandlerMappingSimple"
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="interceptors">
            <list>
                <ref bean="environmentInterceptor"/>
                <ref bean="authenticityTokenInterceptor"/>
                <ref bean="errorUrlCleanerInterceptor"/>
            </list>
        </property>
        <property name="urlMap">
            <map>                
                <!-- Products -->
                <entry key="/ws/feed.ws" value-ref="productsSearchController" />           
            </map>
        </property>
    </bean>

    <bean id="productsSearchController" class="com.kohl.mvc.controller.ProductsQuerySearchController">
        <property name="view" value="ws/products-query"/>
        <property name="webServiceBO" ref="webServiceBO" />
        <property name="paginationBO" ref="paginationBO"/>
        <property name="requestUtilsBO" ref="requestUtilsBO"/>
        <property name="commandName" value="search"/>
        <property name="commandClass" value="com.kalel.onlinecatalog.mvc.command.SearchProductCommand"/>
    </bean>

Você está usando Spring ou EJB?!?!?!

Spring e Jersey.

EJB seria esse XML definindo beans?

Desculpe, tem alguns conceitos que ainda são novos para mim.