Я недавно написал очень простой RESTful сервис развернут на JBoss AS 7.Config службы Resteasy с использованием Spring
У меня есть интерфейс JAX-RS нечистый, как (с помощью Скале):
@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)
}
}
Здесь проблема. Каждый раз, когда я выдаю запрос из клиентского браузера, Joboss создает новый ServiceFacade, поэтому один раз анализируется файл Spring xml.
Есть ли в любом случае я могу создать ServiceFacade самостоятельно в конфигурации Spring и просто позволить JBoss использовать его, а не создавать для каждого отдельного запроса clieng?
Большое спасибо.
Спасибо за ваш ответ. То, как я хочу, чтобы это работало, - это создать только один ServiceFacade, используя весну, и как-то позволить resteasy использовать его, а не позволить resteasy создать его для каждого отдельного запроса. Есть идеи? – Kevin
Взгляните на мой ответ на соответствующий вопрос: http://stackoverflow.com/questions/9009660/inject-spring-beans-into-resteasy/9445952#9445952. Если это не сработает для вас, я знаю, что Джерси предоставляет аннотацию @Singleton, которая заставляет контейнер поддерживать только один экземпляр. Я не знаю, предоставляет ли RestEasy то же самое. Вы можете попробовать использовать Джерси вместо стандартного JBoss RestEasy. –