получение NullPointerException при доступе к веб-сервису. Как я могу решить это - PullRequest
1 голос
/ 29 января 2012

Я писал проект, который действует как сервер и имеет доступные и работающие сервисы, которые будут использоваться клиентской стороной. Приложение My Server - это простое приложение CRUD, основанное на среде Spring MVC 3. поверх записей одной таблицы с именем Person. Мои веб-сервисы являются серверами SOAP1.1 и работают, когда я развертываю свой проект на TomCat. Я могу получить доступ к его wsdl на локальном хосте, и я могу эти веб-сервисы, запустив и развернув этот проект через Tomcat. Я проверил serives путем повторной установки флагов из методов Service Теперь проблема в том. Если я запускаю серверное приложение через Интернет через его контроллер, я могу правильно работать через веб-интерфейс. Все компоненты Repository, Service DAO правильно аннотированы и работают через Интернет. Но когда я пытаюсь сделать ту же работу через мои службы. Я получаю исключения NullPointerException для объектов с автоматической связью.

Следующее является исключением. Пожалуйста, помогите и через ваши мысли в комментариях.

WARN org.apache.cxf.phase.PhaseInterceptorChain  - Application {http://service.accounting.cassit.com/}personService#{http://service.accounting.cassit.com/}deletePerson has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault
    at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
    at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
    at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
    at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
    at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
    at com.cassit.accounting.service.PersonServiceImpl.deletePerson(PersonServiceImpl.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)

При просмотре этой строки и проверенной строки № 47 или соответствующего файла Java. Я узнал, что у меня был доступ к свойству AutoWired. Почему это так?

Caused by: java.lang.NullPointerException
        at com.cassit.accounting.service.PersonServiceImpl.deletePerson(PersonServiceImpl.java:47)

С наилучшими пожеланиями, aqif

Ответы [ 2 ]

0 голосов
/ 29 января 2012

См. Раздел 4.9, Конфигурация контейнера на основе аннотаций , в справочнике Spring.

Важным битом является примечание непосредственно перед разделом 4.9.1, цитата:

<context:annotation-config/> ищет аннотации к bean-компонентам только в том же контексте приложения, в котором он определен. Это означает, что если вы положите <context:annotation-config/> в WebApplicationContext для DispatcherServlet, он будет проверять только компоненты @Autowired в ваших контроллерах, а не в ваших сервисах. См. Раздел 16.2, «Диспетчерский сервлет» для получения дополнительной информации.

Вероятно, ваши @Service -аннотированные классы не сканируются; попробовать:

<context:component-scan base-package="your.service.package" />
0 голосов
/ 29 января 2012

Внедрение зависимостей Spring работает только в компонентах, управляемых Spring. Если ваш класс не управляется Spring, @Autowired не будет работать. Проверьте, что он объявлен как Spring bean (используя <bean> или аннотацию).

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