解决 xfire 客户端程序 加载报错 PropertyAccessExceptionsExcep
我使用的是xfire构建的webservice服务端和客户端,tomcat6.0 自己写的服务器端,运行当然是没有问题啦~ 然后自己写了个客户端,因为是web工程,部署的时候,就报错了。。。 但是这个web工程,当运行链接webservice的类时,即作为 java application运行时,是可以连接上,并且返回值正确的。 *错误如下: 严重: Servlet /remoteXfireTest threw load() exception PropertyAccessExceptionsException (2 errors) org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [java.lang.Class] for property 'serviceClass'; nested exception is java.lang.IllegalArgumentException: Class not found: com.geoway.webservice.DataService java.lang.IllegalArgumentException: Class not found: com.geoway.webservice.DataService ??? at org.springframework.beans.propertyeditors.ClassEditor.setAsText(ClassEditor.java:66) ??? at org.springframework.beans.BeanWrapperImpl.doTypeConversionIfNecessary(BeanWrapperImpl.java:771) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:584) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:469) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:626) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:653) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:642) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1023) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345) ??? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226) ??? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147) ??? at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275) ??? at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320) ??? at org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:107) ??? at org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41) ??? at org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86) ??? at org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54) ??? at org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45) ??? at javax.servlet.GenericServlet.init(GenericServlet.java:212) ??? at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) ??? at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) ??? at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042) ??? at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348) ??? at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) ??? at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) ??? at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) ??? at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920) ??? at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883) ??? at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) ??? at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) ??? at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) ??? at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) ??? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) ??? at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) ??? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) ??? at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) ??? at org.apache.catalina.core.StandardService.start(StandardService.java:516) ??? at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) ??? at org.apache.catalina.startup.Catalina.start(Catalina.java:566) ??? 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.catalina.startup.Bootstrap.start(Bootstrap.java:288) ??? at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [java.lang.Class] for property 'implementationClass'; nested exception is java.lang.IllegalArgumentException: Class not found: com.geoway.webservice.impl.DataServiceImpl java.lang.IllegalArgumentException: Class not found: com.geoway.webservice.impl.DataServiceImpl ??? at org.springframework.beans.propertyeditors.ClassEditor.setAsText(ClassEditor.java:66) ??? at org.springframework.beans.BeanWrapperImpl.doTypeConversionIfNecessary(BeanWrapperImpl.java:771) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:584) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:469) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:626) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:653) ??? at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:642) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1023) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824) ??? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345) ??? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226) ??? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147) ??? at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275) ??? at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320) ??? at org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:107) ??? at org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41) ??? at org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86) ??? at org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54) ??? at org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45) ??? at javax.servlet.GenericServlet.init(GenericServlet.java:212) ??? at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) ??? at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) ??? at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042) ??? at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348) ??? at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) ??? at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) ??? at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) ??? at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920) ??? at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883) ??? at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) ??? at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) ??? at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) ??? at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) ??? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) ??? at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) ??? at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) ??? at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) ??? at org.apache.catalina.core.StandardService.start(StandardService.java:516) ??? at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) ??? at org.apache.catalina.startup.Catalina.start(Catalina.java:566) ??? 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.catalina.startup.Bootstrap.start(Bootstrap.java:288) ??? at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
在网上也看到很多人,都没有人写解决方法的。。晕。。 ? 其实问题是出在,你的客户端程序中的service.xml中,配置了和服务器端相同的 <serviceClass>和<implementationClass>,而你的客户端中当然不会有<implementationClass>里面的实现类,及时是<serviceClass>里面的接口类,也不一定和服务器端的接口类放在相同的路径下。 因此在web.xml加载时,当加载到service.xml时,就报错啦~因为找不到嘛。 ? 还有人说,把服务器的classes里面的class放到客户端的classes文件夹下,但是,由于我的webservice是要提供给客户使用的,我可不希望把class都给人家,即使是编译好的。。 ? 解决办法就是: 在service.xml中只配置<serviceClass>个元素,然后接口类要和客户端中包含的接口类包名什么的要一样就好了, 这个是我的webservice客户端中的service.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> ?????? <name>DataService</name> ?????? <namespace>http://service.maggie.com/DataService</namespace> ?????? <serviceClass>com.maggie.webs.DataService</serviceClass> ?????? <style>wrapped</style> ?????? <use>literal</use> ?????? <scope>application</scope> ?????? <properties> ?????????? <property name="mtom-enabled" value="true" /> ?????? </properties> ??? </service> </beans> 不过还有个奇怪的问题。。。我以前用tomcat5.5运行这个项目的时候就没有报错。。最近改成tomcat6了就报这个错了。。虽然不影响项目运行吧。。就是觉得别扭。。不知道是不是tomcat版本的问题呢。。。。,或者jdk。。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |