2012-01-29 37 views
1

我一直在写一个充当服务器的项目,并让服务启动并运行,供客户端使用。 我的服务器应用程序是基于Spring MVC 3框架的简单CRUD应用程序。超过名为Person的单个表的记录。我的WebServices是SOAP1.1服务器,并且只要我在TomCat上部署我的项目,就会生效。我可以在本地主机上访问它的wsdl,并且可以通过在tomcat上运行和部署该项目来访问这些Web服务。我通过从服务方法中重新调用标志来测试服务器。现在的问题是。如果我通过它的控制器在网上运行服务器应用程序,我可以通过Web界面正确处理。所有组件Repository,Service DAO都被正确注释并通过Web工作。但是当我尝试通过我的服务做同样的工作时。我为自动装配对象获得NullPointerExceptions。获取NullPointerException异常访问webService。我如何解决这个问题

以下是一个例外。请在评论中帮助并通过您的想法。

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

+0

请在PersonServiceImpl.java中添加代码 – 2012-01-29 15:02:54

+0

添加了Dao和Service类。 – 2012-01-29 15:18:47

回答

0

请参阅Section 4.9, Annotation-based container configuration,在Spring Reference中。

最重要的一点是说明第4.9.1节之前吧,引用:

<context:annotation-config/>只查找在同一个应用程序上下文豆定义它的注解。这意味着,如果您将<context:annotation-config/>置于DispatcherServletWebApplicationContext中,则它只会检查控制器中的@Autowired beans,而不是您的服务。有关更多信息,请参阅Section 16.2, “The DispatcherServlet”

这很可能是您的@Service -annated类没有被扫描;请尝试:

<context:component-scan base-package="your.service.package" /> 
+0

我已汇入的applicationContext文件我的服务上下文文件 <进口资源=“类路径:服务器端的服务-context.xml的” /> 和服务方面的文件,我扫描我的服务,如 2012-01-29 15:47:24

+0

@AqifHamid嗯。启动日志中没有任何内容?通过在DEBUG上进行日志记录,您是否看到正在扫描的组件和已识别的bean? – 2012-01-29 16:02:40

+0

是的,它正在创建初始化bean。(这是通过部署它来通过web运行服务器应用程序时完成的) – 2012-01-29 16:35:50

0

春天依赖注入只能由Spring管理组件。如果您的班级不是由Spring管理的,@Autowired将不起作用。检查它是否被声明为Spring bean(使用<bean>或注解)。

+0

请检查我的服务课程。我编辑了主要帖子。我怎样才能让我的JAX-WS服务类由Spring管理。 – 2012-01-29 15:19:28

+0

++我的所有类都被注释为Spring组件,并且在通过webControllers进行部署和运行时它们运行良好。通过本地主机。 – 2012-01-29 15:22:54

+0

请检查我的意见 – 2012-01-29 15:48:49