在原springMVC的web项目中添加webservice(用的是xfire)

        本来我们这个项目用的是jdk自带的webservice,部署到tomcat上是可以的正常运行的,但是放到weblogic12c上启动的时候就报错:···more than one instance````的错误,调试了2天查了好多资料及解决办法都不可行···最终判断是weblogic12c自身的bug,不支持jdk自带的webservice的注解,故在springMVC的框架中换成xfire框架。步骤如下:

一、添加Xfire核心包到工程里面:

web工程右击——属性——Java Build Path——Libraries——Add Library···——MyEclipse Libraries——XFire 1.2 Core Libraries.

二、在web.xml 里面添加配置。

          <servlet>
	    <servlet-name>XFireServlet</servlet-name>
	    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
	    <load-on-startup>2</load-on-startup>
	  </servlet>
	  <servlet-mapping>
	    <servlet-name>XFireServlet</servlet-name>
	    <url-pattern>/services/*</url-pattern>
	  </servlet-mapping>

三、在META-INF下面新建文件夹xfire,在xfire下面新建services.xml内容如下(先写好接口及实现类):

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<service  xmlns="http://xfire.codehaus.org/config/1.0">
		<name>yundaws</name>
		<serviceClass>com.yunda.app.ws.service.IyundaWebService</serviceClass>
		<implementationClass>
			com.yunda.app.ws.service.impl.YundaWebService
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
	
</beans>

备注:name 是webservice访问的名称,serviceClass 是接口,implementationClass是接口的实现类。

四、整体复制META-INF,粘贴到WEB-INF下面。

五、访问运行部署到weblogic12c上,启动之后访问http://localhost:7001/工程名称/services/yundaws?wsdl,到此服务端就OK了。

六、部署期间遇到的问题及解决办法如下:

1、java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does 

not exist 
解决办法:
META-INF目录下面新建一个xfire文件夹,把services.xml文件放到这个文件夹里,再将整个META-INF拷贝到WEB-INF中clean一下工程

重新加载后启动服务就可以了。
2、Unexpected exception parsing XML document from file,nested exception is java.lang.LinkageError: loader constraint 

violation: loa
解决办法:
	加载包顺序问题,把weblogic.xml里面的这句话注释掉就好了。
	<container-descriptor>
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
	</container-descriptor>

3、Context attribute is not of type WebApplicationContext: org.codehaus.xfire.spring·····
解决办法:
web.xml里的
	<load-on-startup>0</load-on-startup>
修改成:
	<load-on-startup>2</load-on-startup>
4、Unrecognized xbean element mapping: services in namespace : http://xfire.codehaus.org/config/1.0 
解决办法:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
    
	<service> </service>
</beans>
修改成:
<beans>
	<service xmlns="http://xfire.codehaus.org/config/1.0"> </service>
</beans>


备注:其他业务实现不完全可以根据你框架的结构随意写,完事直接调用这个配置就可以访问webservice接口了。

如果谁用jdk1.6及以上版本自带的webservice可以在weblogic12c上部署运行,可以给我留言探讨下谢谢!我到oracle下载补丁是收费的我就不用了,谁那有补丁也可以给我发下。






你可能感兴趣的:(在原springMVC的web项目中添加webservice(用的是xfire))