Получить ссылку на Spring Bean от @WebService - PullRequest
1 голос
/ 25 мая 2009

Я использую CXF для генерации веб-сервиса из wsdl. Сгенерированный веб-сервис имеет аннотацию @WebService Как получить ссылку на Spring Bean от веб-службы? Все мои весенние бобы аннотированы @Service, и я могу получить к ним доступ в моем веб-приложении. Как мне получить к ним доступ также через мой веб-сервис?

Я пробовал следующее:

public class TestWSImpl implements TestWSSoap{

    @Resource
    public WebServiceContext wsContext;

    @Override
    public String getTest() {

        ServletContext servletContext= (ServletContext) wsContext.getMessageContext().get(MessageContext.SERVLET_CONTEXT);

        ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);

        return "Test";
    }
}

Но метод getWebApplicationContext возвращает ноль

Когда я заменяю getWebApplicationContext на getRequiredWebApplicationContext Я получаю сообщение об ошибке: WebApplicationContext не найден: не зарегистрирован ContextLoaderListener?

У кого-нибудь есть идея?

Спасибо Alon

Ответы [ 2 ]

1 голос
/ 25 мая 2009

Если вы использовали JUnit 4.4 или выше, вы можете добавить его, используя аннотации Spring 2.5 JUnit. Вот пример.

http://hamletdarcy.blogspot.com/2008/12/autowired-junit-tests-with-spring-25.html

Конечно, само собой разумеется, что этот подход требует, чтобы веб-служба работала в веб-контексте при запуске теста. Вы сделали это?

Вы также можете предпочесть тестирование служб на основе WSDL с использованием SOAP UI.

0 голосов
/ 02 декабря 2009

Это было давно. Я смотрю на свой код, и я вижу, что я поставил следующий метод что должно инициировать весну:

@PostConstruct
public void init(){
    JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
    svrFactory.setServiceClass(MyWebService.class);
    svrFactory.setAddress("http://address.com");
    svrFactory.setServiceBean(wsHandler);
    svrFactory.getInInterceptors().add(new LoggingInInterceptor());
    svrFactory.getOutInterceptors().add(new LoggingOutInterceptor());
    svrFactory.create();

}

Скажите, пожалуйста, решит ли это вашу проблему ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...