微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决 xfire 客户端程序 加载报错 PropertyAccessExceptionsException

我使用的是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@H_499_1404@="1.0" encoding@H_499_1404@="UTF-8"?>

<beans xmlns@H_499_1404@="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@H_499_1404@="mtom-enabled" value@H_499_1404@="true" />

       </properties>

    </service>

</beans>

不过还有个奇怪的问题。。。我以前用tomcat5.5运行这个项目的时候就没有报错。。最近改成tomcat6了就报这个错了。。虽然不影响项目运行吧。。就是觉得别扭。。不知道是不是tomcat版本的问题呢。。。。,或者jdk。。。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐