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

来源:互联网 发布:路径规划算法的例子 编辑:程序博客网 时间:2024/06/14 20:27

        本来我们这个项目用的是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下载补丁是收费的我就不用了,谁那有补丁也可以给我发下。





4 1
原创粉丝点击