Spring HttpInvoker & EOFException
2010-11-12 16:28
375 查看
配置完服务端Spring
HttpInvoker后(Tomcat中),使用Web Browser访问资源地址收到如下错误:
图1
图1中的java.io.EOFException是因为我是使用浏览器直接访问HttpInvokerServiceExporter,此时没有传递任何有意义的参数,但是HttpInvokerServer仍然已假设正确的方式读取。
分析图1中出现的异常情况后,接下来便配置了一个<
span lang="EN-US">Spring
HttpInvoker Client并再次访问服务器,但是却收到java.net.SocketTimeoutException: Read timed out异常:
光看客户端SocketTimeoutException有些迷惑,这时可以去查看 Tomcat/logs/ 目录下的localhost日志。在日志中此时可以看到如下异常:
2010-11-12 11:32:19 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet citation threw exception java.lang.ClassNotFoundException: biz.model.BusiFlow at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604) at org.springframework.remoting.rmi.CodebaseAwareObjectInputStream.resolveClass(CodebaseAwareObjectInputStream.java:104) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at org.springframework.remoting.rmi.RemoteInvocationSerializingExporter.doReadRemoteInvocation(RemoteInvocationSerializingExporter.java:124) at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.readRemoteInvocation(HttpInvokerServiceExporter.java:117) at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.readRemoteInvocation(HttpInvokerServiceExporter.java:96) at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:73) at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:523) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:463) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555) at java.lang.Thread.run(Thread.java:619)
从上面异常可以看出,原来是客户端项目中的biz.model.BusiFlow出了问题。因为之前为了省事便没有将HttpInvokerService打成JAR包,而是直接把它以及相关类复制到客户端项目中,并且没有按照服务端的package规程组织类路径,所以服务端中会抛出java.lang.ClassNotFoundException。
将biz.model.BusiFlow改成与服务器对应的格式(com.xxx.biz.model.BusiFlow)以及其他相关类的路径后,HttpInvoker工作正常。
相关文章推荐
- org.springframework.remoting.RemoteConnectFailureException: Could not connect to HTTP invoker remote
- Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'http://10
- org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported
- spring boot 项目 eclipse 环境下解决 Exception in thread "http-nio-9001-exec-9" 错误
- HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
- Spring HTTP Invoker 学习小记
- org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
- Exception in thread "http-bio-8080-exec-7"内存溢出问题
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xx' is defined
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContex
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lanagerServi
- 关于Spring3 MVC的 HttpMediaTypeNotSupportedException
- Spring Http Invoker使用简介
- Spring HTTP invoker RPC
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFacto
- SpringHttpInvoker解析1-使用示例
- 错误:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying&n
- 解决org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spring
- spring httpinvoker
- spring-remoting中的httpInvoker实现并安全验证