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

    最近研究了一下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目录下了呢?

答案:肯定有。具体做法如下:

 eclipse截图

 

其实只要将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来发布,都不会影响,项目名不可能一样,注意命名空间不能相同。

 

 

 

 

你可能感兴趣的:(eclipse,jdk,Web,xml,bean)