2009-05-25 4 views
1

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

Я попытался следующие:

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

ответ

1

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

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

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

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

+0

Я не хочу использовать JUnit для этой задачи, поскольку мне это не кажется стандартным способом ее решения. В любом случае, я использую инструмент SOAP UI, и это действительно очень полезно – 2009-05-26 08:58:19

0

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

@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(); 

}

Пожалуйста, скажите мне, если решить проблему вам ....

Смежные вопросы