Xfire集成到web 项目中遇到的问题 及解决方法

来源:互联网 发布:网络扫描工具 安卓 编辑:程序博客网 时间:2024/06/01 08:59

  最近研究了一下xfire,当在web project集成xfire servlet时,遇到了两个问题。
 
 
 
    问题一:org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/xfire/services.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist。
 
 
 
   问题二:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.codehaus.xfire.spring.ServiceBean' defined in class path resource [META-INF/xfire/services.xml]: Initialization of bean failed; nested exception is java.lang.UnsupportedClassVersionError: Bad version number in .class file
   

   解决方法:
 
   对于第一个问题,网上可以找到解决方案。就是将 project/META-INF 文件夹拷到classes目录下。原因是这是xfire默认的加载路径。所以要手工拷一下。
 
 
 
   对于第二个问题,主要问题在于‘UnsupportedClassVersionError',可以肯定是某些类的版本在当前的环境下不支持。一般是高版本的class,在低版本的jdk上会出现这个问题。而且我下载xfire的时候,测试过xfire是可以使用的,所以xfire本省的jar应该没有问题。问题只可能出现在web 项目的class上。经查找发现,我用的Lomboz eclipse安装的jdk是1.6的。但是tomcat的jdk为1.5。修改eclipse web项目 jdk为1.5,重新编译。导出war包,再访问
http://localhost:8080/mywebservice/services/ 可以访问了。
 
 
 
至此问题成功解决。
 
 
 
大家会想每次这样拷META-INF 文件夹多不方便,有没有一种方式可以在打war包的时候,META-INF目录就已经在classes目录下了呢?
 
答案:肯定有。具体做法如下:
 
 
 
 
 
其实只要将META-INF目录移到src目录下,这个问题就轻松解决了。确实很简单。但是当时就是没想到。
 
 
 
 
 
总结一下:xfire集成到项目中,有几个注意点:
 
              第一、在web.xml添加xfire servlet;
 
              第二、将META-INF/xfire/services.xml将项目中要对外发布的web service类配置好;
 
              第三、把META-INF目录移到src下;
 
              第四、打war,发布到应用服务器上;
 
              第五、将META-INF文件夹,移到classes目录下;
 
              第六、使用
http://localhost:8080/projectName/services/ 来查看服务是否发布成功。即使有多个项目都用xfire来发布,都不会影响,项目名不可能一样,注意命名空间不能相同。
 
 

原创粉丝点击