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