Я хотел бы использовать Джерси и Spring для написания класса java, который является одновременно классом на стороне сервера веб-службы, а также транзакционным с помощью spring-tx (так что каждый запрос веб-службы либо полностью завершает свою работу в БД, либо полностью откатывает его работа в БД).
Но когда я так делаю...
package com.test.rest
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
@Transactional
public class TestRestService implements TestRestServiceInterface {
...
}
класс TestRestService не зарегистрирован Spring как класс веб-службы.
Я использую <context:component-scan base-package="com.test.rest"/>
в своем файле конфигурации spring для регистрации классов веб-сервисов в пакете com.test.rest (имя пакета для примера изменено).
Если я либо удаляю @Transactional, либо TestRestService не реализует интерфейс, класс регистрируется Spring как класс веб-службы, и код работает.
Есть ли способ получить и то, и другое?
В настоящее время я использую sprint-tx, spring-jersey и spring-context 3.0.7 и jersey 1.0.3.1.
<context:component-scan base-package="com.test.test"/>
на<context:component-scan base-package="com.test.rest" scoped-proxy="targetClass"/>
, и проблема осталась. Я думаю, это просто не должно быть. - person Paul D. Eden   schedule 22.11.2012