Настройка сервиса RestEasy с использованием Spring - PullRequest
0 голосов
/ 25 февраля 2012

Я недавно написал очень простой сервис Restful, развернутый в JBoss AS 7.

У меня интерфейс JAX-RS дефилирован как (используя scala):

@Provider
@Path("/customers")
trait ICustomerService {
  @GET
  @Path("/{id}")
  @Produces(Array("application/xml"))
  def getCustomer(@PathParam("id") id: Int): StreamingOutput
}

И класс реализует это (используя scala):

class ServiceFacade extends ICustomerService {
  val ctx = new ClassPathXmlApplicationContext("orderservice.xml")
  val customerService = ctx.getBean("customerService").asInstanceOf[CustomerService]

  def getCustomer(id: Int): StreamingOutput = {
    customerService.getCustomer(id)
  }
}

Здесь возникает проблема. Каждый раз, когда я отправляю запрос из клиентского браузера, Jboss создает новый ServiceFacade, поэтому xml-файл Spring анализируется один раз.

Могу ли я в любом случае создать ServiceFacade самостоятельно в весеннем конфиге и просто позволить JBoss использовать его, а не создавать для каждого отдельного запроса клиента?

Большое спасибо.

1 Ответ

0 голосов
/ 25 февраля 2012

Вы создаете новый контекст Spring при каждом создании экземпляра ServiceFacade. Попробуйте ввести контекст или создать синглтон.Я не верю, что JAX-RS или RestEasy гарантируют, что создается только один экземпляр аннотированного класса.

Кроме того, я просто ускоряюсь на Scala, но вы не должны размещать аннотацииреализация а не черта?

...