配置完服务端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日志。在日志中此时可以看到如下异常:
从上面异常可以看出,原来是客户端项目中的biz.model.BusiFlow出了问题。因为之前为了省事便没有将HttpInvokerService打成JAR包,而是直接把它以及相关类复制到客户端项目中,并且没有按照服务端的package规程组织类路径,所以服务端中会抛出java.lang.ClassNotFoundException。
将biz.model.BusiFlow改成与服务器对应的格式(com.xxx.biz.model.BusiFlow)以及其他相关类的路径后,HttpInvoker工作正常。