Веб-сервис JAX WS не принимает Spring Bean из applicationcontext, поэтому выдает исключение нулевого указателя
Привет я получил веб-сервис и работает, я использовал jax ws. Я использовал Spring, чтобы иметь возможность использовать bean-компоненты с Autowired и другие вещи, которые Spring выдает как инъекцию значения свойства в applicationContext.xml.
У меня есть нижеприведенная весенняя запись applicationcontext.xml:
В классе конечной точки веб-сервиса я сделал:
@Autowired private MyBeanProperty myProperty;
И у меня есть метод:
public String getSize() {
return myProperty.getSize();
}
К сожалению, когда я вызываю метод, он не получает никакого значения и выбрасывает nullpointerexception.
PS: я использовал soapUI для запуска wsdl веб-сервиса и вызвал метод.
Работает ли веб-служба до того, как Spring создаст bean-компоненты?
Даффмо
Да, я использовал компонентное сканирование в applicationContext. И у меня есть слушатель загрузчика контекста, как показано ниже в web.xml. Пожалуйста, помогите мне..
Вот мое полное объяснение кода с кодом
Я использую JAX-WS и Spring и пытаюсь настроить несколько Web-сервисов, которые должны работать на Tomcat 7. Я использую Maven в качестве инструмента для сборки, поэтому я просто перечисляю здесь две свои зависимости:
org.springframework
spring-web
3.0.5.RELEASE
com.sun.xml.ws
jaxws-rt
2.1.3
мои классы обслуживания расположены в com.test.services и называются TestService & HelloWorldService и выглядит следующим образом:
package com.test.services;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService( name = "Test", serviceName = "TestService" )
public class TestService {
@WebMethod
public String getTest() {
return "Test";
}
}
это мой web.xml:
toolbox
testing webservices
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
jaxws-servlet
com.sun.xml.ws.transport.http.servlet.WSServlet
1
jaxws-servlet
/testservice
jaxws-servlet
/helloworldservice
10
а это мой sun-jaxws.xml:
Это прекрасно работает, и я могу получить доступ к сервисам, указав в своем браузере [url]HTTP: // локальный: 8080 / набор инструментов / TestService [/ URL] соответственно [url]HTTP: // локальный: 8080 / набор инструментов / helloworldservice [/ URL], Однако поддержка Spring явно не активирована.
Я попробовал следующее, которое только что оставило HelloWorldService доступным: web.xml:
toolbox
30
org.springframework.web.context.ContextLoaderListener
и applicationContext.xml:
кроме того, я аннотировал оба класса Service аннотацией @Service. Как я упоминал ранее, здесь публикуется только первый алфавитный веб-сервис, поэтому HelloWorldService. Также он меняет URL, так как сервис теперь доступен как [url]HTTP: // локальный: 8080 / [/ URL] а не [URL]HTTP: // локальный: 8080 / набор инструментов / helloworldservice [/ URL], Ведение журнала Tomcat показывает, что Spring Context загружает оба класса как бины Spring. Есть ли у вас какие-либо идеи или предложения о том, как включить поддержку Spring при сохранении доступности обеих служб?